Google map API v3 - Ajouter plusieurs infowindows

J'ai un de travail section de google maps javascript, j'ai eu un problème.

Maintenant, le problème que j'ai eu qu'un seul infowindow était apparaître, le dernier. J'ai trouvé une solution sur une autre pile de thread ça a fonctionné. Mais je ne pouvais pas vraiment savoir pourquoi. Je suis assez nouveau dans le Javascript donc j'espérais que quelqu'un pourrait m'expliquer ce qui a changé et comment.

Voici le code de travail:

function setMarkers(map, locations){
  for(var i = 0; i < locations.length; i++){
    var marker = locations[i];
    var latLng = new google.maps.LatLng(locations[i][1], locations[i][2]);
    var content = locations[i][0];
    var infowindow = new google.maps.InfoWindow();

    marker = new google.maps.Marker({
      position:latLng,
      map: map
    });

    google.maps.event.addListener(marker, 'click', function(content){
      return function(){
        infowindow.setContent(content);
        infowindow.open(map, this);
      }
    }(content));
  }
}

Voici l'original de code cassé a été (je vais coller uniquement ce qui a changé):

 google.maps.event.addListener(marker, 'click', function(){
      infowindow.setContent(content);
      infowindow.open(map, marker);
    });

Maintenant ce que je voudrais savoir si vous auriez la gentillesse, est:

  1. quelle fonction remplit le retour fn servir, et
  2. ce qui ne l'a ajouté (content) à la fin de addListener (}(content));) faire depuis aussi loin que je peux voir le contenu a déjà été définie dans le setContent propriété.

Merci!

Merci pour le modifier, beaucoup plus facile sur les yeux. Pile de mise en forme est encore un peu nouveau pour moi.
Vous souhaiterez peut-être modifier le titre de votre question, il semble trop générique.

OriginalForfatteren Russ | 2015-05-03