Probleme de InfoWindow sur des Marker Google Maps

Probleme de InfoWindow sur des Marker Google Maps - HTML/CSS - Programmation

Marsh Posté le 05-06-2014 à 15:51:31    

Bonsoir à tous,
 
J'ai une page sur laquelle j'affiche une carte google maps. Sur cette carte j'affiche des Marker dont je récupère la position via un fichier xml. Via ce fichier XML, je récupère aussi des infos pour mettre dans une InfoWindow (pour le test je récupère juste un nombre unique (ID base de données))
 
Les Marker se mettent à la bonne position, mais quand je clique dessus, l'InfoWindow affiche le même contenu partout : le contenu du dernier...
 
J'ai trouvé ça http://javascript.developpez.com/f [...] nAffichage mais je ne comprend pas trop les solutions (et a priori elles ne marchent pas).
 
Voici mon code :
La div à l'id "map-canvas"

Code :
  1. var map;
  2. var markers=new Array();
  3. var infos=new Array();
  4. function affichercarte()
  5. {
  6.       map = new google.maps.Map(document.getElementById('map-canvas'), {
  7.           center: new google.maps.LatLng(50.8231987, 4.3828955),
  8.           zoom: 14,
  9.           mapTypeId: google.maps.MapTypeId.ROADMAP
  10.       });
  11. }
  12. google.maps.event.addDomListener(window, 'load', affichercarte);
  13. function cliccouche(numtypeadr) //fonction appellée quand on coche une case à cocher  
  14. {
  15. appelphp('include/adresses_recup.php?langue=fr&numtypeadr='+numtypeadr, majcarte);
  16. }
  17. function majcarte()
  18. {
  19. if(ajax.readyState==4)
  20. {
  21.  if(ajax.status==200)
  22.  {
  23.   lareponse=ajax.responseXML;
  24.   for(i=0;ladresse=lareponse.getElementsByTagName('adresse')[i];i++)
  25.   {
  26.    var id=ladresse.getAttributeNode('numadresse').value;
  27.    if(!markers[id])
  28.    {
  29.    var position=new google.maps.LatLng(ladresse.getElementsByTagName('latitude')[0].firstChild.nodeValue, ladresse.getElementsByTagName('longitude')[0].firstChild.nodeValue);
  30.    markers[id] = new google.maps.Marker({
  31.     'numero': id, //Inutile ? --edit : non c'est la solution !--
  32.     'position': position,
  33.        'map': map,
  34.     'icon': 'http://soupon.unblog.fr/files/2007/11/pharmacie.bmp' });
  35.  
  36.          infos[id] = new google.maps.InfoWindow({
  37.           'content': id //contenu
  38.        });
  39.       google.maps.event.addListener(markers[id], "click", function() {
  40.            infos[id].open(map,this);
  41.           });
  42.    }
  43.    else
  44.    {
  45.     markers[id].setMap(null);
  46.     markers[id]=null;
  47.    }
  48.   }
  49.  }
  50.  else
  51.  {
  52.   //On affiche le message d'erreur
  53.   alert("Erreur "+ajax.status+" : "+ajax.statusText);
  54.  }
  55. }
  56. }


Message édité par zezette le 05-06-2014 à 16:59:59

---------------
"Par moment j'me d'mande si chui pas con" G. de Suresnes
Reply

Marsh Posté le 05-06-2014 à 15:51:31   

Reply

Marsh Posté le 05-06-2014 à 16:06:59    

C'est bon j'ai trouvé, il faut mettre le contenu au moment d'ajouter l'événement via un this.numero
 

Code :
  1. infos[id] = new google.maps.InfoWindow();
  2.        google.maps.event.addListener(markers[id], "click", function() {
  3.      infos[id].setContent(this.numero);
  4.             infos[id].open(map,this);
  5.            });


Message édité par zezette le 05-06-2014 à 16:07:38

---------------
"Par moment j'me d'mande si chui pas con" G. de Suresnes
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed