Ich baue eine ASP.NET MVC-Site, auf der ich eine Google Maps Javascript-API-Karte haben möchte, die Marker von meinem Backend über AJAX lädt.Strategie zum Lazy-Loading von Markern in eine Google Maps JavaScript API-Karte
Da ich nicht möchte, dass der Client in Speicherprobleme läuft, möchte ich Lazy-Load die Markierungen und wenden Sie sie auf Fluster2, um sie in Cluster. Ich denke, der beste Weg zum Lazy-Load der Marker ist das Hinzufügen eines Ereignis-Listeners zum idle
Event der Map, der auftritt, nachdem die Map geschwenkt oder gezoomt wurde.
Hier ist meine aktuelle Strategie:
- hinzufügen Ereignis-Listener
idle
Ereignis. - Wenn
idle
Ereignis ausgelöst wird, verwenden Sie jQuery, um einen AJAXHTTP POST
Aufruf an mein Back-End, das aktuelle Ansichtsfenster/Grenzen der Karte zu liefern. - Das Backend gibt alle Punkte im Ansichtsfenster zurück.
- Die Punkte werden in Markern erstellt und zu Fluster2 hinzugefügt, wodurch sie zur Karte hinzugefügt werden. Alte Punkte werden NICHT verworfen.
- Repeat
Doch diese Probleme schaffen kann, wie die alten Punkte nicht verworfen werden. Ich möchte sie nicht verwerfen, da ich sie nicht noch einmal laden möchte, aber mit meiner derzeitigen Strategie würde ich sie ein zweites Mal laden und für sie ein zweites Mal Marker erstellen.
Während ich es ist keine gute Idee, denke irgendwie das Backend in dem AJAX-Aufruf zu sagen, dass ich bereits einige des Markers habe, wäre es schön, zu irgendeine Art von Hash-Tabelle implementieren, die Duplikate nicht zulässt, dass .
Wenn ich die Punkte lade, kann ich versuchen, sie zuerst zur Hashtabelle hinzuzufügen: Wenn das gelingt, habe ich sie noch nicht angezeigt, also kann ich sie als Marker hinzufügen; Wenn es fehlschlägt, sind sie bereits auf der Karte.
Ist das eine gute Strategie? Wenn ja, wie kann ich eine Hashtabelle implementieren, die keine Duplikate zulässt?
Danke für Ihre Hilfe! Ich werde versuchen, dies zu implementieren. –
Für den Hash-Schlüssel können Sie ein google.maps.latLng-Objekt aus Ihrem lat/long erstellen und dessen toString() -Methode verwenden. – dsas