2016-07-30 17 views
0

Ich kann Javascript wirklich nicht verstehen, ich weiß, es sollte eine sehr einfache Frage sein, aber ich stucked .. Ich habe eine Google-Karte mit mehreren Markern und ich fügte jeden Marker und perfekt arbeiten, aber ich wollte geben sie verbindet. Mein Standort-Array ist wie;Google Map Marker mit URL

['http://website.com',36.598900,35.202094,'1'] 

Ich benutze [1] und [2] als lat lang, aber ich wollte [0] als Link verwenden. Meine Schleife funktioniert perfekt, aber jede Markierung des Link geht zum letzten Punkt des Link

Hier ist meine Schleife

for (i = 0; i < locations.length; i++) { 
    marker = new google.maps.Marker({ 
    position: new google.maps.LatLng(locations[i][1], locations[i][2]), 
    map: map, 
    icon: image, 
    url: locations[i][0], 
    }); 

    google.maps.event.addListener(marker, 'click', function() { 
    window.location.href = marker.url; 
    }); 

} 

Wo habe ich den Fehler machen?

Antwort

1

1/Sie müssen var vor marker = new google.maps.Marker({ hinzufügen,

Weil, verwenden Sie jetzt als globale Variable, die für jede Iteration überschrieben wird.

2/Wie auch immer, Best Practices sind das Speichern aller Markierungen als Objektattribute. Nennen wir dieses Objekt: mk, dann werden Ihre Marker mk.marker0, mk.marker1, ... usw. sein.

var mk={}; // this is nameSpace to save all markers 
locations.map((loc,i)=>{ 
    mk['marker'+i] = new google.maps.Marker({ 
     position: new google.maps.LatLng(loc[1], loc[2]), 
     map: map, 
     icon: image, 
     url: loc[0], 
    }); 
    return mk['marker'+i]; 
}).forEach((marker)=>{ 
       google.maps.event.addListener(marker, 'click', function() { 
        window.location.href = marker.url; 
      });  

}) 
+0

Sie haben Recht, ich var vor Marker hinzugefügt, aber nichts geändert. Immer noch alle Link zu den letzten Artikel URL-Wert –

+0

@ ÇağdaşTakış: Ich aktualisiere die Antwort, es wird jetzt funktionieren .. sicher sein –

+1

Sie haben meine Schlafzeit gespeichert. Vielen Dank! –