百度地图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开发一——仿照现有测距实现测量面积功能的主要内容,如果未能解决你的问题,请参考以下文章

百度地图实现测量面积和测量距离功能

百度地图如何测量两个地点的距离

百度地图如何测量距离?

吐槽贴:百度地图 api 封装 的实用功能 [源码下载]

百度地图两点如何测距

如何计算百度地图上两点的距离