• 百度地图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();//关闭鼠标测面


     

     

     

     

     

     

     

     

     

  • 相关阅读:
    96. Unique Binary Search Trees
    515. Find Largest Value in Each Tree Row
    网络中数据传输的过程
    ARP/RARP协议
    JAVA静态代码块的作用及执行顺序
    MySQL中大于等于小于等于的写法
    Mybatis常见面试题总结及答案
    安全框架Shiro和Spring Security比较
    Excel VBA 连接各种数据库(一) VBA连接MySQL数据库
    Servlet、Servlet容器等内容讲解
  • 原文地址:https://www.cnblogs.com/gislover/p/7835394.html
Copyright © 2020-2023  润新知