Frage

Ich verwende OpenLayers, um OpenStreetMap -Karten anzuzeigen. (Ich würde jedoch annehmen, dass dies allgemein genug sein sollte, um für jedes Kartenprodukt zu arbeiten ...)

Ich zeige einige sehr ausgefeilte Vektorüberlagerungen an, und die Menge und Auflösung der Funktionen, die ich über Geojson zum Overlay vom Server zurückkehre, hat sich für viele Computer zu sehr erwiesen.

Was ich jetzt jetzt tun möchte, ist, nur Daten zu senden, die der Auflösung des aktuellen Zooms entsprechen. Dies sollte relativ einfach mit dem zu tun sein getResolution und calculateBounds Methoden auf der Map Objekt. calculateBounds Gibt ein Grenzenobjekt zurück, das dann zwischen der Kartenprojektion und der Anzeigeprojektion transformiert werden kann.

Wie verwandle ich die Auflösung in meine gewünschte Projektion (4326 in diesem Fall)? Gibt es eine eingebaute Art und Weise oder muss ich die Lösung gegen eine bekannte Formel durchführen?

War es hilfreich?

Lösung

Sie können verwenden Proj4js Koordinatensysteme am Client zu transformieren.

Andere Tipps

Wie wäre es, wenn Sie nur die Skala einschränken, auf der Ihre Geojson -Vektorschicht zeichnen wird?

http://dev.openlayers.org/docs/files/openlayers/layer-js.html#openlayers.layer.maxscale

Anschließend sollten die OpenLayers AJAX -Anforderungen an den Server nur über diese Skala hinausgehen. Wählen Sie eine OpenSteetMaps -Skala / Zoom -Ebene aus, die entspricht, wenn Sie die Vektorebene anzeigen möchten, und stellen Sie die MaxScale entsprechend fest.

Die Anforderungen sollten automatisch die Grenzen der aktuellen Kartenanzeige an Ihren Server senden, um die relevanten Funktionen zu erhalten.

Ich habe Ihr Dilemma jedoch missverstanden. Wenn Sie die Auflösungsformeln wünschen, beschreibt sie in diesem Artikel:

http://msdn.microsoft.com/en-us/library/aa940990.aspx

Aktualisieren

Sie können eine Clustering -Strategie in OpenLayers implementieren. Ich denke, dies sollte die Renderzeit verkürzen, obwohl ich davon ausgehen würde, dass die gleiche Datenmenge aus der Datenbank zurückgegeben würde.

http://dev.openlayers.org/releases/openlayers-2.7/doc/apidocs/files/openlayers/strategy/cluster-js.html

Schauen Sie sich das Beispiel hier an:

http://openlayers.org/dev/examples/strategy-cluster.html

Um nicht unterschiedliche Punkte zu haben, sollten Sie den Pointradius auf eine Konstante setzen: "$ {Radius}".

Schließlich wäre eine Alternative, einen WMS -Dienst anstelle von Geojson zu verwenden. Der Server würde dann nur Bilder einer festen Größe zurückgeben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top