最近做了一个百度地图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方法。

如有不对之处,欢迎批评指正!

联系方式:QQ:1085634689

 

最新文章

  1. Kafka0.10的新特性一览
  2. jQuery中使用ajax,$.post
  3. Hdu5093 Battle ships 二分图
  4. js实现倒计时及时间对象
  5. [git]图解git常用命令
  6. JavaWeb学习总结(一)—JavaWeb开发入门及环境搭建
  7. android浮动搜索框
  8. weblogic日志小结
  9. Android布局详解之一:FrameLayout
  10. uublog在线测试demo
  11. 主从及转发DNS搭建
  12. java多线程(8)---阻塞队列
  13. django的闪现和增、删、改、查
  14. Nginx(一)-windows下的安装配置
  15. c#单例设计模式
  16. vhdl 边沿
  17. java生产环境增量发版陷阱【原】
  18. windows 远程连接
  19. 学习Git---20分钟git快速上手
  20. 【第八章】 springboot + mybatis + 多数据源

热门文章

  1. python爬虫踩坑教程
  2. C#编写扫雷游戏
  3. eureka服务搭建
  4. Linux 操作系统基础
  5. kali linux中的yum、rpm常见的问题
  6. appium-desktop定位元素原理
  7. web服务器之nginx和apache的区别
  8. javascript放大镜效果
  9. AI - TensorFlow - 可视化工具TensorBoard
  10. pycharm安装svn插件