Pregunta

Estoy usando OpenLayers para mostrar mapas de OpenStreetMap. (Aunque, Me asumir esto debería ser lo suficientemente general para trabajar para cualquier producto mapa ...)

Estoy mostrando algunos vectores superpuestos muy sofisticados, y la cantidad y la resolución de las características que estoy que regresan desde el servidor a través de GeoJSON de superposición ha demostrado ser demasiado para muchos equipos.

Lo que me gustaría hacer ahora en su lugar es sólo para enviar datos acorde la resolución del zoom actual. Esto debería ser relativamente fácil de hacer usando los métodos getResolution y calculateBounds en el objeto Map. calculateBounds devuelve un objeto de límites que a continuación se puede transformar entre la proyección del mapa de proyección y la pantalla.

¿Cómo transformo la resolución en mi proyección deseada (4326 en este caso)? ¿Hay una construida en la forma de hacer esto o tengo para ejecutar la resolución en contra de una fórmula conocida?

¿Fue útil?

Solución

Puede utilizar Proj4js para transformar los sistemas de coordenadas en el cliente.

Otros consejos

¿Qué tal limitación de la escala a la que va a llamar su capa GeoJSON vectorial?

http: //dev.openlayers .org / docs / archivos / OpenLayers / capa-js.html # OpenLayers.Layer.maxScale

A continuación, los OpenLayers AJAX peticiones al servidor sólo deben dar lugar a más allá de esta escala. Elija un nivel de escala / zoom OpenSteetMaps que corresponde a cuando se quiere mostrar la capa vectorial, y establecer el MaxScale en consecuencia.

Las solicitudes deben ser automáticamente el envío de los límites de la pantalla del mapa actual a su servidor para obtener las características relevantes.

Puede que haya entendido mal su dilema sin embargo. Si desea que las fórmulas de resolución de este artículo los describe:

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

Actualizar

Se podría implementar una estrategia de agrupamiento en OpenLayers. Creo que esto debería reducir el tiempo de renderizado, aunque yo supongo la misma cantidad de datos que se devuelve desde la base de datos.

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

Salida este ejemplo:

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

Para evitar tener diferentes puntos de tamaño que sould establecer el pointRadius: "$ {} radio" a una constante.

Finalmente una alternativa sería utilizar un servicio WMS en lugar de GeoJSON, el servidor tendría entonces sólo regresará imágenes de un tamaño fijo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top