【百度地图api】前端 百度地图添加地理围栏

 需求:添加教练场区域,在百度地图上选择多边形电子围栏,保存坐标;

主要参考百度地图api;

遇到的小坑:注意绘制百度地图多边形时,传入的坐标数组的结构!!!

相对来说比较简单,百度api已经很详细了。

遗留问题:百度坐标转GPS坐标,还是没有找到最佳实践,有好的解决方案,欢迎交流。

 

<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=百度api去申请"></script>
<script src="@Url.Content("~/Plugins/SXYC.Plugin.BusinessData.Plugin/Scripts/distpicker/distpicker.js")"></script>
<!--加载绘制工具-->
<script type="text/javascript" src="http://api.map.baidu.com/library/DrawingManager/1.4/src/DrawingManager_min.js"></script>
<link rel="stylesheet" href="http://api.map.baidu.com/library/DrawingManager/1.4/src/DrawingManager_min.css" />
<!--加载检索信息窗口-->
<script type="text/javascript" src="http://api.map.baidu.com/library/SearchInfoWindow/1.4/src/SearchInfoWindow_min.js"></script>
<link rel="stylesheet" href="http://api.map.baidu.com/library/SearchInfoWindow/1.4/src/SearchInfoWindow_min.css" />
<script type="text/javascript">
    // 百度地图API功能
    var map = new BMap.Map("allmap", { enableMapClick: false });//构造底图时,关闭底图可点功能
    //map.centerAndZoom(new BMap.Point(114.519103, 38.05323), 11);  // 石家庄 初始化地图,设置中心点坐标和地图级别
    map.centerAndZoom(new BMap.Point(109.60, 23.10), 11);  // 初始化地图,设置中心点坐标和地图级别
    //map.addControl(new BMap.MapTypeControl());   //添加地图类型控件-->
    map.setCurrentCity("贵港市");          // 设置地图显示的城市 此项是必须设置的
    map.enableScrollWheelZoom(true);     //开启鼠标滚轮缩放

    function searchSite() {
        //地图关键字搜索
        var local = new BMap.LocalSearch(map, {
            renderOptions: { map: map }
        });
        var siteKeys = $("#siteKeys").val();
        //alert(siteKeys);
        local.search(siteKeys);

    }
    // 绘制多变形
    var overlays = [];
    var overlaycomplete = function (e) {
        map.clearOverlays();
        //overlays.push(e.overlay);
        var path = e.overlay.getPath();//Array<Point> 返回多边型的点数组
        $("#Longitude").val(path[0].lng);
        $("#Latitude").val(path[0].lat);
     
        var polygon = new BMap.Polygon(path, styleOptions);
        map.addOverlay(polygon);
        // 保存多变形坐标点
        var pll = new Array();
        for (var i = 0; i < path.length; i++) {

            pll[i] = (path[i].lng+","+ path[i].lat);
        }
        pll = pll.join(";");
        $("#Polygon").val(pll);
        $("#BDPolygon").val(pll);
    };

    var styleOptions = {
        strokeColor: "red",    //边线颜色。
        fillColor: "red",      //填充颜色。当参数为空时,圆形将没有填充效果。
        strokeWeight: 2,       //边线的宽度,以像素为单位。
        strokeOpacity: 0.8,	   //边线透明度,取值范围0 - 1。
        fillOpacity: 0.6,      //填充的透明度,取值范围0 - 1。
        strokeStyle: 'solid' //边线的样式,solid或dashed。
    };
    //实例化鼠标绘制工具
    var drawingManager = new BMapLib.DrawingManager(map, {
        isOpen: false, //是否开启绘制模式
        enableDrawingTool: true, //是否显示工具栏
        drawingToolOptions: {
            anchor: BMAP_ANCHOR_TOP_RIGHT, //位置
            offset: new BMap.Size(5, 5), //偏离值
            drawingModes: [
                BMAP_DRAWING_POLYGON
            ]
        },
        circleOptions: styleOptions, //圆的样式
        //polylineOptions: styleOptions, //线的样式
        polygonOptions: styleOptions, //多边形的样式
        rectangleOptions: styleOptions //矩形的样式
    });
    //添加鼠标绘制工具监听事件,用于获取绘制结果
    drawingManager.addEventListener('overlaycomplete', overlaycomplete);
    function clearAll() {
        map.clearOverlays(); 
        $("#Longitude").val(null);
        $("#Latitude").val(null);
        $("#Polygon").val(null);
    }
</script>

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值