Frage

Ich erstelle mehrere Gmarkers (von JSON-Daten geladen durch JQuery „load“ -Funktion), auf alle von ihnen mir ein Ereignis-Listener hinzufügen, das Infofensters Objekt zu öffnen ich auf der Markierung vor erstellt, und dann füge ich alle auf die Karte .

Das Problem ist, dass das Infofenster immer auf dem gleichen Marker öffnet. Ich alle hatten diese vor der Arbeit, ich kann nicht sehen, wo das Problem ist ... Gültigkeitsbereich der Variablen? dumme Fehler irgendwo?

ich hochgeladen ein Beispiel , und hier ist ein Verknüpfung mit der JavaScript-Datei

Der Code:

    var map;
    var infowindow;
    $(document).ready(function() {

        var myLatlng = new google.maps.LatLng(47.15984,2.329102);
      var myOptions = {
        zoom: 6,
        center: myLatlng,
        mapTypeId: google.maps.MapTypeId.HYBRID,
        scrollwheel: false
      }

      map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

      infowindow = new google.maps.InfoWindow({content:'<p>Test</p>'});

        $.getJSON("data.json", function(data) {

            var markers = [];
            for (var i = data.length - 1; i >= 0; i--){
                var latLng = new google.maps.LatLng(data[i].lat, data[i].lng);
              var marker = new google.maps.Marker({position: latLng});

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

              markers.push(marker);
            };

            for (var j = markers.length - 1; j >= 0; j--){
                markers[j].setMap(map);
            };

        });
    });
War es hilfreich?

Lösung

Ändern

infowindow.open(map,marker);

infowindow.open(map,this);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top