百度地图API 判断点击的是地图还是覆盖物
2015-12-01 23:00
281 查看
在百度地图上圆形区域检索,返回圆形覆盖范围内的”公司”检索结果,并展示在地图上
当点击检索结果(标注)进行查看的时候会再次以此为原点进行检索
原因是该覆盖物在地图之上,点击覆盖物也就是点击了地图
所以要判断点击的是地图还是覆盖物。
我们看到click事件有以上参数,通过这些参数就能判断所点击为何物。
然后对地图添加点击事件,如果是覆盖物就弹出相应信息
到此时我们只是判断了是覆盖物还是地图,而覆盖物又分为好多种
有Marker、Polygon、Circle等等
而如开题所说Marker在Circle之内,如果不想点击Marker触发click事件就需要
再次判断是何种覆盖物
如下代码即可点击Marker不触发click事件
效果演示:http://itmyhome.com/baidu_map/.
作者:itmyhome
当点击检索结果(标注)进行查看的时候会再次以此为原点进行检索
原因是该覆盖物在地图之上,点击覆盖物也就是点击了地图
所以要判断点击的是地图还是覆盖物。
查看地图事件
我们看到click事件有以上参数,通过这些参数就能判断所点击为何物。
举个栗子:
先创建一个Marker//覆盖物Marker var point = new BMap.Point(116.323524,39.989145); var mark = new BMap.Marker(point); map.addOverlay(mark);
然后对地图添加点击事件,如果是覆盖物就弹出相应信息
map.addEventListener("click", function(e){ if(e.overlay){ alert('您点击的是覆盖物:'+e.overlay.toString()); }else{ alert('您点击的是地图'); } })
到此时我们只是判断了是覆盖物还是地图,而覆盖物又分为好多种
有Marker、Polygon、Circle等等
而如开题所说Marker在Circle之内,如果不想点击Marker触发click事件就需要
再次判断是何种覆盖物
如下代码即可点击Marker不触发click事件
if(e.overlay && e.overlay.toString() != '[object Circle]'){ }else{ map.clearOverlays(); //移除标注 var point_d = new BMap.Point(e.point.lng,e.point.lat) var circle = new BMap.Circle(point_d,400,{fillColor:"blue", strokeWeight: 1 ,fillOpacity: 0.3, strokeOpacity: 0.3}); circle.setRadius(400); map.addOverlay(circle); var local = new BMap.LocalSearch(map, {renderOptions: {map: map, autoViewport: false}}); local.searchNearby("公司",point_d,400); }
效果演示:http://itmyhome.com/baidu_map/.
作者:itmyhome
相关文章推荐
- 在单片机上运行USB Audio实现MATLAB简单虚拟示波器
- LVS实战1
- ecshop导航栏自动显示三级或多级子栏目,多级频道分类,并实现css高亮显示
- Java基础(16):多线程
- UI基础_UIImage
- jquery利用frame计算第三方网页加载时间
- 死锁
- 搭建一个简单的Nodejs服务器
- 《第一行代码》从相册中取图片进入不了裁剪界面
- sys.dm_os_waiting_tasks 引发的疑问(下)
- 没有躲过的坑--0xC0000005: 读取位置 xxx时发生访问冲突
- AlarmManager研究
- 没有躲过的坑--0xC0000005: 读取位置 xxx时发生访问冲突
- Linux学习笔记(3)之文件操作
- 【有效的单元测试】读书笔记第7章 可测的设计
- Java向上转型
- Objective-C:Objective-C 和 Core Foundation 对象相互转换的内存管理
- Linux负载均衡软件之LVS
- ASP.NET 5 单元测试中使用依赖注入
- 十年来感受的前端技术变化