Wie viele Punkt-Features können Ihrer Erfahrung nach zu einer OpenLayers-Vektorebene (neue OpenLayers.Layer.Vector-Ebene ("Punktebene")) hinzugefügt werden, bevor sie ungewöhnlich langsam wird?
Mein Anwendungsfall ist die Anzeige von Punkten aus einer Datenbanktabelle. Der Benutzer kann entscheiden, welchen Zeitrahmen er visualisieren möchte. Daher kann das Ergebnis von sehr wenigen bis zu potenziell 100.000 Punkten reichen. Ich möchte eine angemessene Grenze einführen und den Benutzer warnen, wenn seine Abfrage mehr Funktionen zurückgeben würde.
openlayers
web-mapping
Underdunkel
quelle
quelle
Antworten:
Ich habe keine definitive Antwort für Sie, aber Sie haben eine Seite zusammengestellt, auf der Sie mit unterschiedlichen Punktzahlen auf einer OL-Karte herumspielen können : http://derekswingley.com/lab/olpts/
quelle
Wenn die Anzeige aufgrund der zu hohen Feature-Nummer langsam wird, sind die anzuzeigenden Daten nicht für die Zoomstufe geeignet. Wenn die Feature-Dichte zu hoch ist, kann die Anzeige normalerweise nicht mehr gelesen werden (siehe dieses Beispiel ). Selbst wenn es keine Verarbeitungsbeschränkung gäbe und alle Anzeigegeräte in der Lage wären, 1000000000000 Merkmale in 0,001 s auf einem kleinen Bildschirm anzuzeigen, würde die Visualisierung unmöglich bleiben.
Das Töpfer-Radixgesetz besagt, dass die Feature-Dichte unabhängig von der Zoomstufe unter einem konstanten Schwellenwert bleiben sollte. Eine Möglichkeit, dieses Problem zu lösen und die Daten an die Visualisierungsskala anzupassen, besteht darin, sie mithilfe von Generalisierungsoperationen wie der einen oder anderen zu transformieren .
quelle
Ich glaube nicht, dass es nicht möglich ist, eine eindeutige Antwort auf diese Frage zu geben. Rendering-Punkte / Polygone hängen vollständig von Browser und Hardware (CPU & Speicher) ab, nicht von OpenLayers. Ich hatte ein Problem mit Openlayers und IE6 für eines der Lake (Polygon) -Rendering. Aber in Firefox wurde es gut geladen. Und die beste Option wäre, den Speicher- und CPU-Verbrauch mit Chrome zu überwachen, oder einige Tools wären besser.
quelle
Wie andere habe ich keine Antwort auf diese Frage, aber die Anwendung einer BBox-Strategie kann Ihnen dabei helfen, nur die erforderlichen Daten zu speichern, da nur Features angezeigt werden, die sich innerhalb des angegebenen Begrenzungsrahmens befinden.
quelle
In OpenLayers 6 gibt es einen WebGL-Punkt-Renderer, mit dem Sie hunderttausende von Features mit zeitbasierter Filterung rendern können. Die neueste Version des offiziellen Workshops finden Sie unter https://openlayers.org/workshop/en/webgl/ .
Mit OpenLayers 2, dessen Verwendung ich wirklich nicht mehr empfehle, liegt das Maximum für eine akzeptable Bildrate nur bei einigen hundert Funktionen.
quelle
Ich bin auf einen ähnlichen Anwendungsfall gestoßen, nicht sicher, ob er den oben genannten Anforderungen entspricht, aber
Clustering
in OL 5 habe ich ihn übernommen.Clustering, wie die Wörter vermuten lassen, nimmt eine Gruppe von Punkten und fügt sie zu einem einzigen Punkt zusammen. Sie haben beispielsweise 100 Punkte in einer bestimmten Stadt. Alle Punkte werden als ein Punkt aus einem Zoom von beispielsweise,
4
aber als einzelne Punkte aus einem Zoom von beispielsweise, sichtbar sagen10
also , was Sie tun können , ist , wenn sich der Zoom4
Sie diese Punkte als einer beitreten können, was diese tut es die Verringerung der Anzahl der Punkte , hilft in einem bestimmten Bereich gemacht werden.Mit anderen Worten, nehmen wir an, Sie haben 10.000 Punkte auf der Karte zu rendern und sie sind ziemlich nahe beieinander, sodass Sie daraus Cluster erstellen und das Rendern reduzieren können. Wenn der Benutzer zoomt, brechen Sie die Cluster immer wieder auf. Dadurch wird sichergestellt, dass Sie weniger Rendern und eine bessere Leistung erzielen.
Zufriedenstellende Leistung. Link zu Clustering-Beispielen auf Openlayern
quelle