在 setZoom 之后检测可见的谷歌地图标记

Posted

技术标签:

【中文标题】在 setZoom 之后检测可见的谷歌地图标记【英文标题】:detecting visible google map markers after setZoom 【发布时间】:2012-11-26 15:11:03 【问题描述】:

我正在使用 google map fitBounds,然后我使用 map.setZoom 放大一个级别(在 google 找到适合我的标记的最佳缩放级别之后),然后我想检查我的标记在视口中是否可见或不,我该怎么做? map.getBounds().contains 好像不行,请看这个fiddle:fiddle

我想检查我的标记是否可见:

google.maps.event.addListenerOnce(map, "zoom_changed", function() 
        map.setZoom(map.getZoom()+2);
        if( map.getBounds().contains("35.700592","51.394773"))
alert('ok');   


         but there seems to be an error   
        //alert("the zoom level is now "+map.getZoom());
);

【问题讨论】:

【参考方案1】:

为什么你认为"35.700592","51.394773" 是 google.maps.LatLng?它是用逗号分隔的两个字符串。

这行不通:

google.maps.event.addListenerOnce(map, "zoom_changed", function() 
    map.setZoom(map.getZoom()+2);
    if( map.getBounds().contains("35.700592","51.394773"))
    alert('ok');   
);

这是使用“包含”(带有 LatLng 对象)的正确方法:

google.maps.event.addListenerOnce(map, "zoom_changed", function() 
    map.setZoom(map.getZoom()+2);
    if( map.getBounds().contains(new google.maps.LatLng(35.700592,51.394773)))
    alert('ok');                
);

您可能想要创建一个包含标记的数组并在标记上使用 .getPosition()

http://jsfiddle.net/Npu36/10/embedded/result/

【讨论】:

以上是关于在 setZoom 之后检测可见的谷歌地图标记的主要内容,如果未能解决你的问题,请参考以下文章

如何在同一张地图上使用带有多个标记的谷歌地图 API

新的谷歌地图标记

不同外部链接的谷歌地图标记点击功能问题

带有来自服务器的数字标记的谷歌地图

带有css圆角的谷歌地图自定义标记

带有多个标记的谷歌地图自动中心