Google Maps - InfoWindow.getPosition() ne marche pas, contournement
Comment récupérer la position (LatLng) d'une InfoWindow Google Maps ?
En utilisant InfoWindow.getPosition() me direz-vous. Mais cette méthode, pourtant bien présente dans la documentation officielle, ne marche pas (en tout cas chez moi, et visiblement pas que) : elle renvoie toujours null.
Ce problème a été remonté depuis Février 2011 à Google via un rapport de bug, mais en attendant qu'elle soit fixée, voici ma solution de contournement.
- Lier l'InfoWindow à un marker (même si l'InfoWindow apparait au-dessus d'un marker, elle n'y est pas lié par défaut)
- Récupérer la position du marker lié à l'InfoWindow grâce à Marker.getPosition()
Pour la première étape, on va ajouter ce lien au prototype InfoWindow :
(function () {
google.maps.InfoWindow.prototype.marker = null;
google.maps.InfoWindow.prototype.setMarker = function(marker) {
this.marker = marker;
};
google.maps.InfoWindow.prototype.getMarker = function() {
return this.marker;
};
})();
Pour ceux qui ne comprennent pas, on ajoute des méthodes à la classe InfoWindow de Google Maps. Il suffit de placer ce code une fois dans la page pour que cela fonctionne.
Donc, lors de la création (ou l'affichage) de notre InfoWindow, on va la lier au marker correspondant :
var
infowindow = new google.maps.InfoWindow();
infowindow.setMarker(marker);
Ensuite, pour la dernière étape, on récupère la position du marker :
var
position = infoWindow.getMarker().getPosition();
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :