在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。
那么,我怎样才能检查这个特定的标记在地图上是否可见?
谢谢!
答案 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)
我认为你必须改变你的逻辑。为什么不将你的标记存储在一个数组中,并在点击它们时将它们从这个数组中完全删除。所以剩下的标记是可见的。
干杯