7 votos

Folleto: ¿Cómo habilitar la panorámica y el zoom mientras se sigue renderizando GeoJSON?

He superpuesto una enorme geometría GeoJSON sobre mi mapa Leaflet, cubriendo las fronteras de unos 20 países (alrededor de 1,5 millones de vértices) utilizando "L.geoJson".

Cada vez que me acerco o me alejo, el ordenador tiene que calcular la nueva cantidad de vértices antes de que vuelva la interacción con el mapa. Así que el usuario tiene que esperar 3-4 segundos después de hacer zoom hasta que el mapa llega a la resolución, antes de que el usuario pueda hacer más zoom o desplazarse por el mapa.

En relación con una pregunta anterior, he simplificado las geometrías para reducir el número de vértices en un 30% (ahora 1 millón de vértices), pero eso me ha hecho ganar apenas -1 segundo de tiempo de cálculo.

En lugar de renunciar a la calidad de la geometría GeoJSON, ¿hay alguna forma de poder hacer un paneo/zoom del mapa mientras los vértices no han terminado de calcularse?

En otras palabras, quiero poder desplazar y ampliar el mapa mientras la geometría sigue siendo borrosa.

PS: Usar TileMill está fuera de cuestión porque quiero interactividad para mis datos GeoJSON (por ejemplo, cambiar los colores de los países más tarde por código js), pero TileMill me dará un png no editable.

2voto

Paul G Puntos 1615

Interrumpir un proceso de renderizado no es posible en Leaflet ya que se realiza en un único trabajo atómico JS (AFAIK). La única forma de hacer que tu aplicación responda mejor a las interacciones del usuario podría ser potenciar el proceso de renderizado para que se complete más rápido. Simplificar las geometrías (o utilizar topojson) es una excelente primera solución para ello. Otra podría ser "embaldosar" tu capa geojson para que sólo se rendericen las características en la extensión del mapa. Hay un plugin para renderizar dichos mosaicos geojson. Un paso más allá sería construir versiones simplificadas de su conjunto de datos para cada nivel de zoom como se describe en este documento .

1voto

Ricardo Reyes Puntos 3428

Creo que estás enfocando el problema de forma equivocada.

No puedes cargar un conjunto de datos gigantesco y esperar una interactividad rápida. Si ya has simplificado todo lo que querías, y no es lo suficientemente rápido. Prueba con otra tecnología.

Si no estás contento con TileJSON, utiliza CartoDB o MapBox para hacerlo por ti, o utiliza WMS para la visualización y WFS para la interactividad. O cargue sus datos en ArcGIS online para apuntar y hacer clic fácilmente.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X