javascript 谷歌MapV3:检查标测图上是否存在标记?

pkbketx9  于 2022-12-25  发布在  Java
关注(0)|答案(5)|浏览(140)

在Google Maps V3中,是否有方法检查标记是否确实存在于Map上?
我有标记消失时,单击。我想一些逻辑来检查标记的当前可见性。
例如:

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。
那么,我还可以如何检查这个特定的标记在Map上是否可见呢?
谢谢!

rfbsl7qr

rfbsl7qr1#

如果marker的位置 * 包含 * 在当前map边界之下,则该一行程序将返回true,否则返回false

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

oprakyz72#

start_marker.getMap()

如果您以前使用过start_marker.setMap(null),则返回null;就像你的例子一样。
也就是说,如果只想隐藏和显示标记,为什么不使用setVisible和getVisible呢?

1tu0hz3e

1tu0hz3e3#

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

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

因为setMap(null)不隐藏标记,而是从Map中删除标记。
然后可以使用getVisible()获取标记的可见性,如下所示:

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

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

unftdfkk

unftdfkk5#

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

相关问题