Pregunta

Tengo problemas para optimizar el dibujo de un mapa similar a Google. Funciona bien para cientos de puntos, pero cuando se trata de grandes cantidades, como miles, se vuelve borroso y lento. También sin zoom se ve raro.

Me gustaría saber cómo optimizar el algoritmo de dibujo para dibujar menos lugares para que parezca que no se aplica zoom en Google Maps.

Sin embargo, también dibujo enlaces entre lugares , y no puedo optimizar eso.

Por favor, publique cualquier cosa que se le ocurra, tengo que terminar esto y enviarlo mañana.

Así es como se ve:

ampliado alejado

¿Fue útil?

Solución

Creo que estaría tentado a no dibujar líneas que sean más cortas que un umbral (y lo digo en términos de la ventana gráfica, no en términos de distancia absoluta). Eso significa que cuando el mapa se aleja, tendrá menos que dibujar y el mapa se verá menos ocupado y cuando el mapa se acerque, las líneas entre estos puntos cercanos se harán visibles. Editar: en realidad, pensando un poco más, creo que solo aplicaría esta restricción de longitud cuando hay una gran cantidad de líneas en la pantalla, o haría que el umbral de longitud sea una función de la cantidad de líneas en la pantalla.

Creo que también estaría tentado a no dibujar líneas que provienen de puntos que están fuera de la pantalla (fuera de la ventana gráfica) o, al menos, bastante lejos de la pantalla (un umbral alejado del centro de la ventana gráfica). Sugeriría probar este cambio primero.

Puede parecer que estos cambios ocultarán información (y lo harán) pero, tal como está, el mapa está tan ocupado que esta información presentada es casi inútil de todos modos.

Otros consejos

Aquí hay dos ideas:

  1. Cada objeto que dibujamos en un mapa tiene un valor adicional en la base de datos, "Nivel de zoom". Al acercar, se mostrarán elementos adicionales en función de ese valor.

  2. Una segunda forma de hacerlo es usar la agrupación. Si los elementos comienzan a superponerse, muestre un punto con [10 elementos]. Solo muestre los elementos debajo de él cuando haga zoom.

algunos consejos:

  1. región del clip, para dibujar puntos solo en la región del clip
  2. puede verificar el proyecto SIG de código abierto, ver cómo optimizan el dibujo.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top