谷歌地图V3:检查地图上是否有标记?

时间:2011-05-23 17:11:01

标签: javascript google-maps google-maps-api-3

在Google Maps V3中,有没有办法检查地图上是否确实存在标记?

点击时我的标记消失了。我想要一些逻辑来检查标记的当前可见性。

例如:

var start_marker = null;
start_marker = new google.maps.Marker({ position: location, map: map, clickable: true });
google.maps.event.addListener(start_marker, 'click', function(event) {
  start_marker.setMap(null);
}); 
// ... Later in code: check whether marker is currently visible. 
console.log('Type of start_marker is now: ' + typeof(start_marker));

我希望当标记不可见时,这会给我一个null类型,但实际上它仍然是一个Object。

那么,我怎样才能检查这个特定的标记在地图上是否可见?

谢谢!

5 个答案:

答案 0 :(得分:58)

如果当前true边界下marker的位置 ,则此单行将返回map,并返回false如果没有。

map.getBounds().contains(marker.getPosition())

希望有所帮助,干杯!

答案 1 :(得分:9)

start_marker.getMap()

如果您以前使用过start_marker.setMap(null),则会返回null;如你的例子。

那就是说,如果你只想隐藏和显示标记,为什么不使用setVisible和getVisible呢?

答案 2 :(得分:9)

如果您只想隐藏/显示标记,可以使用标记的setVisible方法,如:

 start_marker.setVisible(false);//to hide
 start_marker.setVisible(true);//to show

因为setMap(null)不会隐藏标记但会从地图中删除标记。

然后,您可以使用getVisible()来获取标记的可见性,如:

console.log('Type of start_marker is now: ' + start_marker.getVisible());

你可以在这里阅读: https://developers.google.com/maps/documentation/javascript/overlays#Markers  https://developers.google.com/maps/documentation/javascript/overlays

答案 3 :(得分:5)

答案 4 :(得分:0)

我认为你必须改变你的逻辑。为什么不将你的标记存储在一个数组中,并在点击它们时将它们从这个数组中完全删除。所以剩下的标记是可见的。

干杯