2016-08-17 5 views
1

Ich habe irgendwo zwischen 2M und 10M statische Objekte, die ich auf Google Maps überlagern möchte. Ich habe vorher HeatmapLayer erfolgreich auf viel kleineren Sets versucht. Aufgrund des Schervolumens bin ich etwas besorgt, und ich muss die Objekte zusammenklumpen, um Leistungsprobleme zu vermeiden. Die Zielplattform ist Chrome auf einem Standard-Desktop.Anzeige von Millionen von Objekten in JavaScript

Was ist der beste Weg zum Platzieren und Zusammenführen von Objekten in unmittelbarer Nähe? Sollte ich eine Art loser Viererbaum versuchen, um die Objekte zusammen zu klumpen, und dann jeden Knoten mit seinem jeweiligen Gewicht unter Verwendung der HeatmapLayer anzeigen? Oder sollte ich versuchen, dynamisch eine Art Dreiecksnetz zu erstellen, bei dem Vertices dynamisch zusammengeführt werden können und Dreiecke an Gewicht zunehmen, wenn mehr Objekte hinzugefügt werden und dann die Dreiecke über Google Maps angezeigt werden? HeatmapLayer ist ziemlich schnell (sieht aus, als wäre es in GL-Shadern implementiert), aber ich bezweifle, dass es Polygon ist.

Ich habe versucht, nach Open Source lose Quad-Tree-JavaScript-Implementierungen und andere schnelle Raum Partition JavaScript-Implementierungen zu suchen, aber nichts gefunden. Ist es meine beste Idee eine C++ Implementierung zu portieren? Irgendwelche Antworten/Kommentare von jemandem, der etwas Ähnliches gebaut hat, wären hilfreich!

+2

Es scheint, dass Sie Ihre statischen Objekte in systematische Zonen vorgruppieren möchten. Wenn Sie dann ein bestimmtes Kartenstück zur Anzeige haben, können Sie berechnen, welche Bereiche sich mit Ihrem Ansichtsfenster schneiden und dann nur mit der Teilmenge von Objekten in den überlappenden Bereichen arbeiten. Ich könnte mir vorstellen, dass Sie oft nur eine Zone haben, die mit dem Ansichtsfenster überlappt. Dies kann sogar mehrstufig sein, so dass eine Zone Unterzonen enthält und Sie den Prozess wiederholen, um ihn auf nur die relevanten Unterzonen einzugrenzen. – jfriend00

+2

Haben Sie den Artikel ["Too Many Markers"] (https://developers.google.com/maps/articles/toomanymarkers) in der Dokumentation zu Google Maps Javascript API v3 gesehen? Für viele Marker werden Sie wahrscheinlich eine kachelbasierte Rendering-Lösung (FusionTablesLayer, KmlLayer oder einen benutzerdefinierten Kartentyp mit Kacheln verwenden, die Sie auf Ihrem Server rendern) verwenden. – geocodezip

Antwort

0

Ich entschied mich für die Vorverarbeitung meiner Daten im Backend mit einem space partitioning implementation. Ich empfehle es für jeden, der den Luxus hat, dies zu tun.

Verwandte Themen