基于高德地图实现可编辑的电子围栏功能【圆形围栏】

最近项目中用到电子围栏功能,于是简单了解一番,因之前的地图使用高德,故电子围栏仍使用高德,百度等其他地图类似。

该功能经过多次优化完善,基本可用。

1、主要功能:

  1. 围栏CURD;
  2. 自定义围栏半径,中心点;
  3. 越栏自动预警。

2、效果图:

3、核心代码:

<script type="text/javascript">
    //Update by liangxin at 2020-08-21 23:34 
	//地图加载
    var map = new AMap.Map("container", {
        center:[0,0],
        resizeEnable: true,
        zoom: 14
    });
    
  //输入提示
    var autoOptions = {
        input: "tipinput"
    };
    var auto = new AMap.Autocomplete(autoOptions);
    var placeSearch = new AMap.PlaceSearch({
        map: map
    }); 
    
   
	var initFenceRadius='${fenceRadius}'||10000;
   
    var circle = new AMap.Circle({
        center: [0,0],
        radius: 0, //半径
        borderWeight: 3,
        strokeColor: "#FF33FF", 
        strokeOpacity: 1,
        strokeWeight: 6,
        strokeOpacity: 0.2,
        fillOpacity: 0.4,
        strokeStyle: 'dashed',
        strokeDasharray: [10, 10], 
        // 线样式还支持 'dashed'
        fillColor: '#1791fc',
        zIndex: 50,
    })

    var circleEditor = new AMap.CircleEditor(map, circle)

     //构造地点查询类
       AMap.event.addListener(auto, "select", select);//注册监听,当选中某条记录时会触发
       $("#fenceRadius").text(initFenceRadius);
       $("#fenceArea").text((Math.PI * Math.pow(Number(initFenceRadius),2)/10000000).toFixed(2));
       circle.setMap(map)
       // 缩放地图到合适的视野级别
       map.setFitView([ circle ])
       circleEditor.on('move', function(event) {
       	 $("#fenceCenter").text(event.target.getCenter());
       	 $("#fenceRadius").text(event.target.getRadius());
            var area = (Math.PI * Math.pow(event.target.getRadius(),2)/10000000).toFixed(2);
            $("#fenceArea").text(area);
       })

       circleEditor.on('adjust', function(event) {
            $("#fenceRadius").text(event.target.getRadius());
            var area = (Math.PI * Math.pow(event.target.getRadius(),2)/10000000).toFixed(2);
            $("#fenceArea").text(area);
       })

       circleEditor.on('end', function(event) {
         $("#fenceCenter").text(event.target.getCenter());
         $("#fenceRadius").text(event.target.getRadius());
         var area = (Math.PI * Math.pow(event.target.getRadius(),2)/10000000).toFixed(2);
         $("#fenceArea").text(area);
       })
    }

</script>

 

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值