2010-12-21 4 views
0

Ich möchte Marker durch Ajax bekommen, wie meine Karte zu bewegen. Gibt es jedoch eine Methode, um zu vermeiden, dass Marker mit der gleichen Breite und Länge auf Google Maps geladen werden? Nehmen wir an, sobald die Markierung für eine bestimmte geographische Breite und Länge geladen ist, wird sie nicht ein zweites Mal hinzugefügt, wenn die Karte zurück zum Ort bewegt wird. Vielen Dank.Vermeiden Sie laden Marker mit der gleichen Breite und Länge auf Google-Karte

Antwort

1

Behalten Sie ein Array von Markern und schauen Sie es sich an, bevor Sie neue Marker laden, um sicherzustellen, dass sie noch nicht geladen wurden. Fügen Sie jede neue Markierung hinzu, indem Sie sie an das Array anhängen.

0

Um Marker zu erstellen, müssen Sie die lat und long Daten irgendwo haben. Stellen Sie sicher, dass diese Datengruppe keine Duplikate enthält, bevor Sie die Methode zum Erstellen der Markierung aufrufen.

Zum Beispiel habe ich eine Reihe von Lat und Long-Werte, var latLong = [ [1.8, 2.6], [3.4, 1.1], ...];. Ich kann durch dieses Array iterieren und die Duplikate entfernen. Übergeben Sie dann den resultierenden Datensatz an meine Marker-Creator-Routine.

0

Sie können alle Markierungen entfernen, wenn sich das Ansichtsfenster ändert, und die neuen Markierungen für das aktuelle Ansichtsfenster abrufen und anzeigen.

Wenn Sie wollen, dass alle Marker gehalten werden auf der Karte, die ich wegen der Geschwindigkeit nicht empfehlen reduzieren Sie alle newcome Marker auf ein Array schieben kann und eine Art von Check machen (Wenn der Marker bereits in diesem Array vorhanden ist, drücken Sie nicht).

1

Speichern Sie die Marker in einem Objekt "Hash" und geben Sie sie unter lat-long ein.

So:

var marker_dict = {}, i=0, l=latLongArray.length, lat, lng; 

while (i < l) { 
    lat = latLongArray[i][0], lng = latLongArray[i][1] 
    marker_dict[lat + '-' + lng] = new google.maps.Marker(
             new google.maps.LatLng(lat, lng) 
            ); 
    i++; 
} 

Dann wird, wie Sie in neuem Marker hinzufügen, einfach stellen Sie sicher, zu überprüfen, dass der Schlüssel nicht bereits in Ihrem marker_dict ist.

Auf diese Weise müssen Sie nicht jedes Mal das gesamte Array durchlaufen, wenn die Karte verschoben wird.

+1

Danke dafür, hat mir heute geholfen! –