2009-03-16 3 views
5

Ich entwickle eine Google Maps-Anwendung und bin auf dieses Problem gestoßen. Ich muss alle Marker entfernen, die außerhalb der Grenzen der Karte liegen.Ermitteln, ob ein Marker in Google Maps sichtbar ist

Gibt es einen einfachen Weg, dies zu tun, außer ein Array zu halten und die Länge jedes Markers zu betrachten?

Ich kann MarkerManager nicht verwenden, weil ich viel zu viele Punkte habe. Ich möchte clearOverlays() nicht verwenden, weil es jeden offenen Marker schließen würde.

Jede Hilfe wäre willkommen.

Antwort

4

Wenn Sie nicht jeden Marker einzeln betrachten wollen, dann gruppieren Sie ihn zunächst in einige Mengen und berechnen Sie die Grenzen des Satzes.

Sie können die Sätze dann anzeigen oder ausblenden, je nachdem, was gerade auf der Karte angezeigt wird (Sie können die Begrenzung der Karte mit GMap2.getBounds()) finden.

Wie viele Punkte sprechen wir?

aktualisieren

A. Über 65K.

Ich kann sehen, warum Sie 65K GMarkers nicht erstellen können, wenn die Seite geladen wird. Das dauert mehr als 5 Sekunden.

Ich würde sie in Gruppen von 200 Ish gruppieren und wenn der Rand der Gruppe innerhalb einer 1/4-Kartenbreite außerhalb der angezeigten Kante dann finden Sie, erstellen Sie Marker und zeigen Sie die benachbarte Gruppe. Es geht außerhalb von 1/2 Kartenbreite der Außenkante dann die Gruppe ausblenden.

Andere Alternativen sind eine dritte Partei-Bibliothek zu verwenden, wie

+0

65k, aber ich werde nie zeigen mehr als 300 zu einem Zeitpunkt – Sklivvz

+0

Danke für den Tipp, das andere Problem ist, dass das Herunterladen der Informationen zu 65k Markern generieren würde zu lange dauern ... – Sklivvz

+0

Gruppieren Sie sie Server-Seite und laden Sie die Gruppengrenzen in der ersten Seite laden. Sie können die Punkte dann im laufenden Betrieb mit AJAX herunterladen, da sich die Gruppen dem angezeigten Teil der Karte nähern. – RichH