您的位置:首页 > 其它

百度地图API 判断点击的是地图还是覆盖物

2015-12-01 23:00 281 查看
在百度地图上圆形区域检索,返回圆形覆盖范围内的”公司”检索结果,并展示在地图上

当点击检索结果(标注)进行查看的时候会再次以此为原点进行检索



原因是该覆盖物在地图之上,点击覆盖物也就是点击了地图

所以要判断点击的是地图还是覆盖物。

查看地图事件



我们看到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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: