一、博文产生原因
在使用百度Map开放API进行开发的时候,遇到了一个需求,很简单的一个需求。
→用户需要在地图上画一个矩形,根据矩形的边界值查询数据(主要在卫星数据的时空检索上使用)
没有想到的是,我翻遍了百度Map的百度地图JavaScript API,愣是没有找到相关的操作。在度娘上问了一圈小伙伴,没发现有这个需求的。真的伤心
二、实现机制
Step1:综合考虑现有需求,针对需要选择空间范围进行检索的小问题,我最终选择使用“鼠标绘制”这一功能,萌萌的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
所涉及的代码开源,但请在主要位置标注原博文来源地址。谢谢!
相关推荐
在绘制过程中,可以使用`BMap.LocalContext`对象来获取鼠标位置,并在地图上实时显示临时的形状。 接下来,将绘制的几何图形保存到数据库是关键步骤。这通常涉及到后端处理,可能需要使用如PHP、Java或Node.js等...
在GIS(地理信息系统)领域,坐标转换是一个至关重要的任务,特别是在中国的地图服务中。由于历史原因,中国的电子地图数据常采用“火星坐标系”(也称为GCJ-02坐标系),而全球广泛使用的是“地球坐标系”(WGS-84...
在Android平台上进行应用程序开发时,经常会遇到需要集成地图服务的情况,而百度地图API是一个非常流行的解决方案。本压缩包“BaiduMap.zip”包含了在Android应用中整合百度地图API的示例代码,主要针对Java语言编写...
标题 "BaiduMap_cityCenter" 指涉的是一个与百度地图相关的数据文件,它包含了中国各个城市中心的经纬度坐标。在地理信息系统(GIS)和地图应用中,经纬度是定位地理位置的关键参数,通常以经度和纬度的度数表示。...
在IT行业中,地图坐标系统是地理信息系统(GIS)的一个重要组成部分。百度坐标系统和火星坐标系统(也称为GCJ-02坐标系统)是中国国内广泛使用的两种坐标系。本篇文章将详细探讨这两种坐标系统以及如何进行转换,...
1. **百度地图API**:百度提供了丰富的JavaScript API,允许开发者在网页上嵌入地图、获取地理位置、绘制标记和轨迹等。我们需要熟悉API的调用方式,包括初始化地图、设置地图中心点、缩放级别以及添加图层等功能。 ...
《BaiduMap_AndroidSDK_v2.1.3开发包详解》 BaiduMap_AndroidSDK_v2.1.3是一款由百度地图提供给开发者用于在Android平台上构建地图应用的开发工具包。这个版本的SDK提供了丰富的功能,帮助开发者集成地图、定位、...
百度地图提供了丰富的JavaScript API,开发者可以通过这些API在网页上绘制地图、获取地理位置信息、设置标记、实现地图的平移和缩放等功能。在VB程序中,我们需要在WebBrowser控件的DocumentComplete事件中注入...
BaiduMap Demo是一个专门为开发者提供的示例项目,它涵盖了使用百度地图API在Android应用中实现各种功能的基本用法。通过深入理解和实践这个Demo,开发者可以快速掌握如何将百度地图集成到自己的应用程序中,为用户...
《全面解析BaiduMap Android SDK v3.5.0:集成与应用》 在移动应用开发领域,百度地图SDK(Software Development Kit)是开发者们常用的一款工具,它为Android平台提供了丰富的地图功能,如定位、路线规划、地理...
总的来说,这个“baiduMap相关.rar”压缩包提供了开发百度地图应用的基础数据,包括城市的经纬度坐标和Echarts地图展示所需的JavaScript数据。通过学习和运用这些资源,开发者可以创建出具有丰富功能和美观视觉效果...
通过调用`mapView.getMap()`获取`BaiduMap`对象,设置地图类型、缩放级别等属性。 3. **定位功能** 百度地图SDK提供了定位服务,通过`LocationClient`类来实现。注册`OnMyLocationChangeListener`监听器,可以获取...
标题 "BaiduMap.zip_baidumap java" 暗示了这个压缩包包含的是一个使用Java编程语言实现的百度地图应用的源代码。这个程序可能是为了帮助开发者理解和集成百度地图API,以便在他们的应用程序中展示地图、进行定位、...
本压缩包“BaiduMap_AndroidSDK_Sample_地图定位.zip”包含的是百度地图Android SDK的一个示例项目,版本为v2.1.2。这个SDK是百度为开发者提供的一种工具,用于在Android平台上集成百度地图服务,包括地图显示、定位...
6. **地理编码与反编码**:将地址转换为经纬度坐标(地理编码)和将坐标转换为地址(反地理编码)是BaiduMap的重要功能,有助于开发者处理基于位置的服务。 7. **地图标记与覆盖物**:开发者可以在地图上添加自定义...
总的来说,"baidumap.rar_6V2_BGP_WN8E_cryl3v_greatercza" 提供了一个强大的百度地图坐标获取解决方案,不仅能够满足基本的坐标获取需求,还可能具备处理BGP数据的专业能力,并且在数据安全方面做了相应的保障。...
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”这个项目,深入探讨如何利用百度地图Android SDK进行地图开发,并通过实例讲解如何创建一个简单的Hello World级别的地图应用。 一、环境准备与SDK集成 在进行地图...
在本例中,我们关注的是地理编码服务,特别是反向地理编码,即通过经纬度坐标获取具体的地址信息。 标题"根据坐标查询地址(百度坐标)"指的是利用百度地图API提供的反向地理编码服务,输入一组坐标(如:经度和纬度...
本篇文章将深入解析"**BaiduMap_AndroidSDK_v5.2.1_Sample.zip**"这个压缩包中的示例代码,帮助开发者更好地理解和应用百度地图API。 首先,我们来看一下"**BaiduMap_AndroidSDK_v5.2.1_Sample**"这个项目的主要...