百度地图API开发一——仿照现有测距实现测量面积功能
Posted Gis_Lover
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了百度地图API开发一——仿照现有测距实现测量面积功能相关的知识,希望对你有一定的参考价值。
最近做了一个百度地图API的开发项目,里面有测量距离和测量面积的功能需求。测量距离百度给出了封装好的javascript包——BMapLib.DistanceTool,效果如下:
这个效果体验很好;测量面积也给出了开源javascript包——BMapLib.DrawingManger,如下:
但这个效果和体验就很差了。客户希望测量面积能实现和测距一样的效果体验(鼠标在移动绘制过程中实时显示绘制面积,且样式效果要一样),经过一番折腾,修改了百度测距的javascript包,终于搞定。先上效果图:
实现方法:
主要修改了DistanceTool开源包里面的鼠标点击事件distClick和鼠标移动事件distMove这两个方法。
1、通过单击事件distClick获取构造面的path,用到Polygon的setPath方法,然后加到地图中,并通过计算该Polygon的面积显示最终双击结束后提示框的总面积;
2、通过移动事件distMove获取鼠标移动过程的位置点point,利用Polygon类的setPositionAt方法生成动态的面。这一步需要计算鼠标移动过程中的实时面积,构造一个临时面polygon,并不需要加到地图中,在鼠标移动过程中将移动点point加到临时面path中,计算该Polygon的面积即为临时面积。
注:计算Polygon的面积采用百度开源库GeoUtils,BMapLib.GeoUtils.getPolygonArea方法。
如有不对之处,欢迎批评指正!
附下载地址:https://download.csdn.net/download/lezaicizhong/13203342
调用方式:
测距:
var myDis = new BMapLib.MeasureTool(map);
myDis.open(); //开启鼠标测距
myDis.close();//关闭鼠标测距
测面:
var myDis = new BMapLib.MeasureTool(map, { enableCalculate: true });
myDis.open(); //开启鼠标测面
myDis.close();//关闭鼠标测面
以上是关于百度地图API开发一——仿照现有测距实现测量面积功能的主要内容,如果未能解决你的问题,请参考以下文章