Google Maps V3 InfoWindow ignore latLng position
Ma carte n'a pas de marqueurs. En réponse à un clic sur la carte, il apparaît une infowindow avec Lat/long montré en décimal à 5 dp et en Degrés minutes secondes. Une fenêtre ouverte est toujours fermé avant de répondre à un nouveau clic. La position est indiquée par la position: latLng, mais l'infowindow est TOUJOURS en haut à gauche. J'ai passé des heures sur ce sujet, et je sens que je suis en manque de quelque chose. L'extrait de Code ci-dessous. Des idées?
google.maps.event.addListener(map, 'click', function (event) {
var lat = event.latLng.lat(),
lng = event.latLng.lng(),
latLng = event.latLng,
strHtml;
//
//strHtml build code omitted but succesfully uses lat and lng to produce
//e.g. Latitude : 51.72229 N (51° 43' 20'' N)
// Longitude : 1.45827 E (1° 27' 30'' E)
//
//If an infowindow is open, then close it
if (openedInfoWindow != null) openedInfoWindow.close();
//latLng monitored to check it is there before use in infowindow
alert(latLng); //returns correct values which position then ignores!
var infoWindow = new google.maps.InfoWindow({
position: latLng,
content: strHtml,
maxWidth: 420
});
//Open infoWindow
infoWindow.open(map,this);
//Remember the opened window
openedInfoWindow = infoWindow;
//Close it if X box clicked
google.maps.event.addListener(infoWindow, 'closeclick', function() {
openedInfoWindow = null;
});
});
La suppression de la 2e argument a parfaitement fonctionné. Merci beaucoup Dr Molle.
OriginalL'auteur Robin Lucas | 2013-10-29
Vous devez vous connecter pour publier un commentaire.
Le 2ème argument (optionnel)de
infoWindow.open()
est censé être unMVCObject
qui expose une position de propriété.la
this
argument dans le callback est unegoogle.maps.Map
Instance(map), qui est unMVCObject
, mais qui n'ont pas unposition
-propriété.Supprimer le 2ème argument de
infoWindow.open(map,this);
.OriginalL'auteur Dr.Molle
Vous avez plusieurs problèmes avec ce code. Le second paramètre de l'infowindow de
open
méthode doit être unMVCObject
dans l'API de Base seulement laMarker
classe peut être utilisé comme un point d'ancrage. Vous ne devez pas définir l'infowindow variable à null et créer un nouveau infowindow objet à chaque fois. Vous avez seulement besoin d'un seul infowindow et ensuite modifier son contenu et de sa position. De cette façon, il y a seulement une infowindow montré à la fois.Ici est un violon d'un exemple de travail: http://jsfiddle.net/bryan_weaver/z3Cdg/
code:
OriginalL'auteur Bryan Weaver