Domanda

Sono usando OpenLayers per visualizzare le mappe di OpenStreetMap. (Anche se, mi piacerebbe assumere questo dovrebbe essere abbastanza generale da lavorare per qualsiasi prodotto mappa ...)

Sono la visualizzazione di alcuni molto sofisticati sovrapposizioni vettore, e la quantità e la risoluzione delle caratteristiche Sto tornando dal server tramite GeoJSON di sovrapposizione è dimostrata troppo per molti computer.

Quello che mi piacerebbe fare ora è invece di inviare solo i dati si addicono alla risoluzione del zoom corrente. Questo dovrebbe essere relativamente facile da fare utilizzando i metodi getResolution e calculateBounds sull'oggetto Map. calculateBounds restituisce un oggetto Bounds che poi può essere trasformato tra la proiezione della mappa proiezione e visualizzazione.

Come faccio a trasformare la risoluzione nella mia proiezione desiderata (4326 in questo caso)? C'è un costruito in modo di fare questo o devo eseguire la risoluzione contro una formula nota?

È stato utile?

Soluzione

È possibile utilizzare Proj4js di trasformare i sistemi di coordinate sul client.

Altri suggerimenti

Come circa appena limitando la scala a cui il vostro livello di GeoJSON vettore trarrà?

http: //dev.openlayers .org / docs / files / OpenLayers / layer-js.html # OpenLayers.Layer.maxScale

Poi i OpenLayers AJAX richieste al server dovrebbero far scattare solo al di là di questa scala. Scegliere un livello di scala / zoom OpenSteetMaps che corrisponde a quando si desidera visualizzare il livello vettoriale, e impostare il maxScale conseguenza.

Le richieste dovrebbero automaticamente essere l'invio dei limiti della visualizzazione della mappa corrente al server per ottenere le caratteristiche rilevanti.

Forse ho capito male il tuo dilemma però. Se si desidera che le formule di risoluzione questo articolo li descrive:

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

Aggiorna

Si potrebbe attuare una strategia di clustering in OpenLayers. Penso che questo dovrebbe ridurre il tempo di rendering, anche se mi piacerebbe presumo la stessa quantità di dati potrebbe essere restituito dal database.

http: / /dev.openlayers.org/releases/OpenLayers-2.7/doc/apidocs/files/OpenLayers/Strategy/Cluster-js.html

Controlla l'esempio qui:

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

Per evitare di avere punti di diverse dimensioni si Sould impostate il pointRadius: "$ {} raggio" ad un costante.

Finalmente un alternativa sarebbe quella di utilizzare un servizio WMS piuttosto che GeoJSON, il server sarebbe allora solo ritornerà immagini di una dimensione fissa.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top