`
snowfigure
  • 浏览: 3784 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

BaiduMap 鼠标绘制矩形选框四个顶角坐标的获取

阅读更多

一、博文产生原因

  在使用百度Map开放API进行开发的时候,遇到了一个需求,很简单的一个需求。

    →用户需要在地图上画一个矩形,根据矩形的边界值查询数据(主要在卫星数据的时空检索上使用)

  没有想到的是,我翻遍了百度Map的百度地图JavaScript API,愣是没有找到相关的操作。在度娘上问了一圈小伙伴,没发现有这个需求的。真的伤心

 

二、实现机制

  Step1:综合考虑现有需求,针对需要选择空间范围进行检索的小问题,我最终选择使用“鼠标绘制”这一功能,萌萌的Demo点我啦

   萌萌的demo

   上面就是百度提供的萌萌的demo。

 

   Step2:那么就需要进行相关的改造了。百度API中没有提供坐标的相关操作,就需要我们发挥强有力的节操,把这个参数找到。

      要相信,既然图能画上去,坐标肯定要标出来,要不然他放大、缩小什么的还能随着自由变化吗?

 

  Step3:查看demo中提供的代码,第134行。(什么?demo的代码在哪里?-----我才不会告诉你demo界面左下角有一行“源代码编辑器”呢)

 

    //回调获得覆盖物信息
    var overlaycomplete = function(e){
        overlays.push(e.overlay);
        var result = "";
        result = "<p>";
        result += e.drawingMode + ":";
        if (e.drawingMode == BMAP_DRAWING_MARKER) {
            result += ' 坐标:' + e.overlay.getPosition().lng + ',' + e.overlay.getPosition().lat;
            if ($('isInfowindow').checked) {
                searchInfoWindow.open(e.overlay);
            }
        }
        if (e.drawingMode == BMAP_DRAWING_CIRCLE) {
            result += ' 半径:' + e.overlay.getRadius();
            result += ' 中心点:' + e.overlay.getCenter().lng + "," + e.overlay.getCenter().lat;
        }
        if (e.drawingMode == BMAP_DRAWING_POLYLINE || e.drawingMode == BMAP_DRAWING_POLYGON || e.drawingMode == BMAP_DRAWING_RECTANGLE) {
            result += ' 所画的点个数:' + e.overlay.getPath().length;
        }
        result += "</p>";
        $("showOverlayInfo").style.display = "none";
        $("panel").innerHTML += result; //将绘制的覆盖物信息结果输出到结果面板
    };

   看到135行的那行代码了没? var overlaycomplete = function(e)

 

    它传过来一个参数 e 啊。赶紧调出Firebug、F12等神奇,把那个e捉拿归案。

    咦,再看看150行 result += ' 所画的点个数:' + e.overlay.getPath().length;

    有一个神奇的e.overlay的,那么我们也可以截取他了。果断断点截取。     

     

      然后在地图上随便画个图,画完后自动断点到e的位置

      

       看到key值为Nk的Object,包含了四个坐标。okay,经过我进一步测试,发现确实是这四个参数。

 

      so!结果得到了。那么这四个参数的按照什么规律呢?细心的博友估计已经看到我露出的部分代码中的解释了吧!!

 

    var olRectPoint = e.overlay.Nk;
    /* *.Nk是从 e 的dom节点中寻找到的,百度本身没有提供此方法的介绍。
     * olRectPoint坐标排序方式
     *	┌─────────────────────┐
     *	│0					1 │
     *	│					  │
     *	│3					2 │
     *	└─────────────────────┘
     * */
    var sw = olRectPoint[3];		//左下
    var ne = olRectPoint[1];		//右上
    console.log('左下:'+ sw.lng+',' + sw.lat + '    右上:'+ne.lng+','+ne.lat);

 

 

 三、结语

      百度Map提供的API还是不过人性化。有些功能藏着掖着,必须让我们慢慢找寻。以后遇到一些JS API不提供的东西,不是人家不提供,而是你不会找。okay。

      如果有博友有更好的方法,欢迎指正!

 

四、版权

      本博文所属:

            iteye:http://snowfigure.iteye.com/  和 CSDN http://blog.csdn.net/lina791211

      所涉及的代码开源,但请在主要位置标注原博文来源地址。谢谢!

 

 

  • 大小: 340.5 KB
  • 大小: 44.4 KB
  • 大小: 133.4 KB
0
0
分享到:
评论

相关推荐

    百度地图js版api几何图形绘制保存到数据库并展示

    在绘制过程中,可以使用`BMap.LocalContext`对象来获取鼠标位置,并在地图上实时显示临时的形状。 接下来,将绘制的几何图形保存到数据库是关键步骤。这通常涉及到后端处理,可能需要使用如PHP、Java或Node.js等...

    火星坐标转地球坐标工具

    在GIS(地理信息系统)领域,坐标转换是一个至关重要的任务,特别是在中国的地图服务中。由于历史原因,中国的电子地图数据常采用“火星坐标系”(也称为GCJ-02坐标系),而全球广泛使用的是“地球坐标系”(WGS-84...

    BaiduMap.zip_android_baiduMap_baidumap java_百度API

    在Android平台上进行应用程序开发时,经常会遇到需要集成地图服务的情况,而百度地图API是一个非常流行的解决方案。本压缩包“BaiduMap.zip”包含了在Android应用中整合百度地图API的示例代码,主要针对Java语言编写...

    BaiduMap_cityCenter

    标题 "BaiduMap_cityCenter" 指涉的是一个与百度地图相关的数据文件,它包含了中国各个城市中心的经纬度坐标。在地理信息系统(GIS)和地图应用中,经纬度是定位地理位置的关键参数,通常以经度和纬度的度数表示。...

    百度坐标转火星坐标软件,附源码及生成软件

    在IT行业中,地图坐标系统是地理信息系统(GIS)的一个重要组成部分。百度坐标系统和火星坐标系统(也称为GCJ-02坐标系统)是中国国内广泛使用的两种坐标系。本篇文章将详细探讨这两种坐标系统以及如何进行转换,...

    BaiduMap.zip_baiduMap_tapewad_地图画轨迹

    1. **百度地图API**:百度提供了丰富的JavaScript API,允许开发者在网页上嵌入地图、获取地理位置、绘制标记和轨迹等。我们需要熟悉API的调用方式,包括初始化地图、设置地图中心点、缩放级别以及添加图层等功能。 ...

    BaiduMap_AndroidSDK_v2.1.3开发包

    《BaiduMap_AndroidSDK_v2.1.3开发包详解》 BaiduMap_AndroidSDK_v2.1.3是一款由百度地图提供给开发者用于在Android平台上构建地图应用的开发工具包。这个版本的SDK提供了丰富的功能,帮助开发者集成地图、定位、...

    VB调用BaiduMap示例

    百度地图提供了丰富的JavaScript API,开发者可以通过这些API在网页上绘制地图、获取地理位置信息、设置标记、实现地图的平移和缩放等功能。在VB程序中,我们需要在WebBrowser控件的DocumentComplete事件中注入...

    BaiduMap Demo

    BaiduMap Demo是一个专门为开发者提供的示例项目,它涵盖了使用百度地图API在Android应用中实现各种功能的基本用法。通过深入理解和实践这个Demo,开发者可以快速掌握如何将百度地图集成到自己的应用程序中,为用户...

    BaiduMap_AndroidSDK_v3.5.0_All

    《全面解析BaiduMap Android SDK v3.5.0:集成与应用》 在移动应用开发领域,百度地图SDK(Software Development Kit)是开发者们常用的一款工具,它为Android平台提供了丰富的地图功能,如定位、路线规划、地理...

    baiduMap相关.rar

    总的来说,这个“baiduMap相关.rar”压缩包提供了开发百度地图应用的基础数据,包括城市的经纬度坐标和Echarts地图展示所需的JavaScript数据。通过学习和运用这些资源,开发者可以创建出具有丰富功能和美观视觉效果...

    BaiDuMap例子

    通过调用`mapView.getMap()`获取`BaiduMap`对象,设置地图类型、缩放级别等属性。 3. **定位功能** 百度地图SDK提供了定位服务,通过`LocationClient`类来实现。注册`OnMyLocationChangeListener`监听器,可以获取...

    BaiduMap.zip_baidumap java

    标题 "BaiduMap.zip_baidumap java" 暗示了这个压缩包包含的是一个使用Java编程语言实现的百度地图应用的源代码。这个程序可能是为了帮助开发者理解和集成百度地图API,以便在他们的应用程序中展示地图、进行定位、...

    BaiduMap_AndroidSDK_Sample_地图定位.zip

    本压缩包“BaiduMap_AndroidSDK_Sample_地图定位.zip”包含的是百度地图Android SDK的一个示例项目,版本为v2.1.2。这个SDK是百度为开发者提供的一种工具,用于在Android平台上集成百度地图服务,包括地图显示、定位...

    baidumap.zip_Android BaiduMap_android_地图导航_百度地图 导航_路线规划

    6. **地理编码与反编码**:将地址转换为经纬度坐标(地理编码)和将坐标转换为地址(反地理编码)是BaiduMap的重要功能,有助于开发者处理基于位置的服务。 7. **地图标记与覆盖物**:开发者可以在地图上添加自定义...

    baidumap.rar_6V2_BGP_WN8E_cryl3v_greatercza

    总的来说,"baidumap.rar_6V2_BGP_WN8E_cryl3v_greatercza" 提供了一个强大的百度地图坐标获取解决方案,不仅能够满足基本的坐标获取需求,还可能具备处理BGP数据的专业能力,并且在数据安全方面做了相应的保障。...

    BaiduMap_AndroidSDK

    Android SDKv2.1.2 ,包括BaiduMap_AndroidSDK_v2.1.2_Docs,BaiduMap_AndroidSDK_v2.1.2_Lib和BaiduMap_AndroidSDK_v2.1.2_Sample ,这是以前的版本,现在新版2.1.3的KEY申请规则变了

    BaiduMap_AndroidSDK_v3.3.0_Sample

    本文将围绕“BaiduMap_AndroidSDK_v3.3.0_Sample”这个项目,深入探讨如何利用百度地图Android SDK进行地图开发,并通过实例讲解如何创建一个简单的Hello World级别的地图应用。 一、环境准备与SDK集成 在进行地图...

    根据坐标查询地址(百度坐标)

    在本例中,我们关注的是地理编码服务,特别是反向地理编码,即通过经纬度坐标获取具体的地址信息。 标题"根据坐标查询地址(百度坐标)"指的是利用百度地图API提供的反向地理编码服务,输入一组坐标(如:经度和纬度...

    BaiduMap_AndroidSDK_v5.2.1_Sample.zip

    本篇文章将深入解析"**BaiduMap_AndroidSDK_v5.2.1_Sample.zip**"这个压缩包中的示例代码,帮助开发者更好地理解和应用百度地图API。 首先,我们来看一下"**BaiduMap_AndroidSDK_v5.2.1_Sample**"这个项目的主要...

Global site tag (gtag.js) - Google Analytics