BaiduMap 鼠标绘制矩形选框四个顶角坐标的获取
雪影工作室版权全部。转载请注明【http://blog.csdn.net/lina791211】
1、博文产生原因
在使用百度Map开放API进行开发的时候,遇到了一个需求,非常easy的一个需求。
→用户须要在地图上画一个矩形,依据矩形的边界值查询数据(主要在卫星数据的时空检索上使用)
没有想到的是,我翻遍了百度Map的百度地图JavaScript API,愣是没有找到相关的操作。在度娘上问了一圈小伙伴,没发现有这个需求的。
真的伤心
2、实现机制
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);
3、结语
百度Map提供的API还是只是人性化。有些功能藏着掖着,必须让我们慢慢找寻。
以后遇到一些JS API不提供的东西。不是人家不提供,而是你不会找。okay。
假设有博友有更好的方法。欢迎指正!
4、版权
本博文所属:
iteye: http://snowfigure.iteye.com/
CSDN: http://blog.csdn.net/lina791211
所涉及的代码开源。但请在主要位置标注原博文来源地址。
谢谢!
BaiduMap 鼠标绘制矩形选框四个顶角坐标的获取的更多相关文章
- opencv2 使用鼠标绘制矩形并截取和保存矩形区域图像
前言 好长时间没写博文了,今天偷偷懒写篇关于opencv2中鼠标响应操作的文章. 鼠标操作属于用户接口设计,以前一直使用Qt来做,但是如果只需要简单的鼠标,键盘操作,直接调用opencv库的函数也未尝 ...
- JS用斜率判断鼠标进入DIV四个方向的方法 判断鼠标移入方向
本文要介绍的是一种鼠标从一个元素移入移出时,获取鼠标移动方向的思路.这个方法可以帮助你判断鼠标在移入移出时,是从上下左右的哪个方向发生的.这个思路,是我自己琢磨出来,利用了一点曾经高中学过的数学知识, ...
- 鼠标/手指相对于元素的坐标(px转百分比)
鼠标/手指相对于元素的坐标:鼠标或手指当前的位置 - 元素距离文档的位置 px转百分比:px / 文档尺寸 * 100 获取手指触摸在屏幕中相对于元素的坐标(px转百分比): $('#div').on ...
- 在WPF中自定义你的绘制(四)
原文:在WPF中自定义你的绘制(四) 在WPF中自定义你的绘制(四) ...
- 在OpenCV中利用鼠标绘制矩形和截取图像的矩形区域
这是两个相关的程序,前者是后者的基础.实际上前一个程序也是在前面博文的基础上做的修改,请参考<在OpenCV中利用鼠标绘制直线> .下面贴出代码. 程序之一,在OpenCV中利用鼠标绘制矩 ...
- 百度地图API示例:鼠标绘制点线面 控件修改
需求 :在使用地图API时,绘制工具栏控件想自己选择哪些要,哪些不要. 可以查看相应的类:官网地址: http://api.map.baidu.com/library/DrawingManager/1 ...
- BZOJ 1185: [HNOI2007]最小矩形覆盖-旋转卡壳法求点集最小外接矩形(面积)并输出四个顶点坐标-备忘板子
来源:旋转卡壳法求点集最小外接矩形(面积)并输出四个顶点坐标 BZOJ又崩了,直接贴一下人家的代码. 代码: #include"stdio.h" #include"str ...
- android之View坐标系(view获取自身坐标的方法和点击事件中坐标的获取)
在做一个view背景特效的时候被坐标的各个获取方法搞晕了,几篇抄来抄去的博客也没弄很清楚. 现在把整个总结一下. 其实只要把下面这张图看明白就没问题了. 涉及到的方法一共有下面几个: view获取自身 ...
- “全栈2019”Java多线程第四章:设置和获取线程名称
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...
随机推荐
- div设置contentEditable="true"作为文本编辑器,定位光标解决办法
function set_focus(el) { el = el[0]; // jquery 对象转dom对象 el.focus(); if ($.browser.msie) { ...
- Zookeeper的Quorum机制-谈谈怎样解决脑裂(split-brain)
在使用zookeeper的过程中,我们经常会看到这样一些说法: 1.zookeeper cluster的节点数目必须是奇数. 2.zookeeper 集群中必须超过半数节点(Majority)可用,整 ...
- C++面向对象程序设计的一些知识点(5)
摘要:运算符能给程序员提供一种书写数学公式的感觉,本质上运算符也是一种函数,因此有类内部运算符和全局运算符之分,通过重载,运算符的“动作”更加有针对性,编写代码更像写英文文章. 1.C++标准允许将运 ...
- spring使用rssfeed
spring使用rssfeed import org.springframework.stereotype.Controller; import org.springframework.web.bin ...
- 使用 esxtop 识别存储性能问题
可以使用交互式 esxtop 实用程序提供连接到 VMware ESX 主机的各种设备的 I/O 衡量指标. 使用 esxtop 配置监控 要监控每个 HBA 的存储性能,请执行以下操作: 通过在命令 ...
- C# 简单Tcp通信demo
Client 代码 private void btnSend_Click(object sender, EventArgs e) { TcpClient tcpClient = new TcpClie ...
- 百度地图 JSAPI使用 定位当前地址 与路径规划
http://lbsyun.baidu.com/index.php?title=jspopular api http://developer.baidu.com/map/jsdemo.htm#a1 ...
- 内存单元,CPU对存储器的读写,三大总线
.存储单元 存储器被分成若干个存储单元,每个存储单元从0开始顺序编号.电子计算机的最小信息单位是bit.8个bit组成一个Byte(虽然现在一个字节可能不是8位,有宽字符出现了,但是一般我们的机器都是 ...
- 问题-XE10.2开发Datasnap时提示"provider not exported datasetprovider1"
问题现象: 在用最新版本的XE10.2开发一个代有图片的数据操作时,出现“provider not exported datasetprovider1”. 问题原因: 提示这个信息,代表未找到data ...
- Java调用存储过程小结
学生在学习jdbc的时候,会问到怎么调用存储过程,现在将java调用oracle存储过程的示例总结如下.(关于调用sqlserver的存储过程将在下次进行小结请关注) 一:无返回值的存储过程 存储过程 ...