web-dev-qa-db-fra.com

Google Maps V3: Vérifier si un marqueur est présent sur la carte?

Dans Google Maps V3, existe-t-il un moyen de vérifier si un marqueur est réellement présent sur la carte? 

J'ai des marqueurs qui disparaissent lorsqu'on clique dessus. J'aimerais une certaine logique pour vérifier la visibilité actuelle du marqueur. 

Par exemple: 

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));

J'espérais que cela me donnerait un type nul quand le marqueur n'est pas visible, mais en fait c'est toujours un objet. 

Alors, comment puis-je vérifier si ce marqueur est visible sur la carte?

Merci!

23
simon

Cette ligne retournera true si la position de marker est contenue sous la limite map actuelle, et retournera false sinon.

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

J'espère que ça aide, à la vôtre!

55
eyecatchUp
start_marker.getMap()

Renverrait null si vous aviez précédemment utilisé start_marker.setMap (null); comme dans votre exemple.

Cela dit, pourquoi ne pas utiliser setVisible et getVisible si vous souhaitez simplement masquer et afficher des marqueurs?

9
Jasoon

Si vous souhaitez simplement masquer/afficher le marqueur, vous pouvez utiliser la méthode setVisible du marqueur comme:

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

car setMap (null) ne masque pas le marqueur mais le supprime de la carte.

Vous pouvez ensuite utiliser getVisible () pour obtenir la visibilité du marqueur comme:

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

Vous pouvez les lire ici: https://developers.google.com/maps/documentation/javascript/overlays#Markers . https://developers.google.com/maps/documentation/javascript/overlays

9
ambay
4

Je pense que vous devez changer votre logique.Pourquoi ne pas stocker vos marqueurs dans un tableau et les supprimer complètement de ce tableau quand ils sont cliqués.Alors les marqueurs restants sont les visibles.

À votre santé

0