[Résolu][Javascript] Google map affiche moi une jolie infobulle

Bonjours les gens,

Je suis actuellement en train d’implémenter GoogleMap dans une appli web. Là, il n’y a aucun problème, j’ai mes marqueurs, toussa. Maintenant pour aller encore plus loin, je veux leur faire afficher une infobulle (pas celle du tooltip) dès qu’on clique sur un des pointeurs.

J’arrive parfaitement à faire afficher l’infobulle à l’évènement clic. MAIS, le contenu textuel ne suit pas.

J’essaie de mettre cette instruction:

for(var k=0; k<point.length; k++) { GEvent.addListener(marker[k],'click', map.openInfoWindow(point[k], document.createTextNode(comments[k]))); }

Et malgré ça, le contenu de ma TextNode contient une valeur indéfinie quelque soit la valeur de k.
Et je suis obligé de faire un code en dure de cette façon :

for(var k=0; k<point.length;k++) { switch(k) { case 0 : GEvent.addListener(marker[k],'click', function (latlng) { map.openInfoWindow(latlng, document.createTextNode(comments[0]))}); break; case 1 : GEvent.addListener(marker[k],'click', function (latlng) { map.openInfoWindow(latlng, document.createTextNode(comments[1]))}); break; case 2 : GEvent.addListener(marker[k],'click', function (latlng) { map.openInfoWindow(latlng, document.createTextNode(comments[2]))}); break; case 3 : GEvent.addListener(marker[k],'click', function (latlng) { map.openInfoWindow(latlng, document.createTextNode(comments[3]))}); break; } }

Malheureusement, je ne connais pas le maximum et donc il se peut que l’utilisateur veut afficher une centaine de positions.

En cherchant dans le SDK de googleMap, l’évènement “click” d’un GMarker passe qu’un seul paramètre qui n’est autre que les coordonnées de géolocalisation (soit GLatLng()).

Avez vous une idée de comment je pourrais bypasser ce problème ?

et avec ça?

Ca ne marche pas. A l’évènement clic, j’ai droit à un message d’erreur me disant qu’il a une valeur à undefined.

effectivement, je viens de comprendre ce qui se passe:
en fait, l’action associée à ton événement est un appel “document.createTextNode(comments[k])”.

cependant, cet appel n’est effectué qu’au moment du clic et pas dans ta boucle, en conséquence de quoi la variable k n’est plus définie au moment de l’appel.

après vérification, dans les pages ou j’utilise l’infowindow je passe systématiquement le contenu en dur (ma boucle for() est en php).

par contre, peut-être que tu pourrais essayer la fonction bindInfoWindow à la place.

une autre proposition :

?

[quote=“molyss, post:5, topic: 48680”]une autre proposition :

?[/quote]

Euh, je ne vois pas qu’est ce qui a changé ? A part le fait que j’aurais pour chacun de mes pointeurs, la même description (la 3e chaine contenu dans ma liste comments[]). Or je veux pouvoir mettre la description de chaque pointeur.

Je regarde, et je fais signe.

EDIT: C’est bon c’est nickel avec bind.
La solution consiste à récupérer mon GMarker et de lui faire :

marker[n].bindInfoWindow(document.createTextNode(comments[n]));

Et ça passe nickel.