google-maps - kmllayer - kml google maps
¿Cómo simplificar(reducir el número de puntos) en KML? (5)
Para su primera pregunta, podría calcular el área de un polígono particular y relacionar cada nivel de zoom con un área mínima particular, de modo que al acercarse o alejarse, los polígonos desaparezcan y aparezcan marcadores según el nivel de zoom.
Para la segunda pregunta, usaría la sugerencia de Mark Bessey.
Tengo un problema similar a esta publicación . Necesito mostrar hasta 1000 polígonos en un mapa de Google incrustado. Los polígonos están en una base de datos SQL, y puedo renderizar cada uno como un solo archivo KML sobre la marcha usando un HttpHandler personalizado (en ASP.NET), como este http://alpha.foresttransparency.org/concession.1.kml .
Incluso en mi (muy rápida) máquina de desarrollo, toma un tiempo para cargar incluso un par de docenas de formas. Entonces dos preguntas, realmente:
¿Cuál sería una buena estrategia para representarlos como marcadores en lugar de superposiciones una vez que estoy más allá de un cierto nivel de zoom?
¿Existe un algoritmo disponible públicamente para simplificar un polígono (reduciendo el número de puntos) para que no muestre más puntos que los que tienen sentido en un cierto nivel de zoom?
Recomendaría 2 cosas: - Calcular y combinar polígonos que se tocan. Esto implica MUCHO procesamiento y matemáticas duras, pero lo hice así que sé que es posible. - Cree su propia superposición en lugar de usar KML en formato PNG, mientras los combina en la sugerencia anterior. Tendrás que crear MUCHOS PNG, pero está ardiendo rápidamente en el cliente.
Buena suerte :)
No sé mucho más que KML, pero creo que la solución habitual a la pregunta n. ° 2 consiste en repetir los puntos y eliminar los segmentos de línea de un determinado tamaño. Esto causará algunos efectos "desafortunados" en algunos casos, pero es relativamente rápido y fácil de hacer.
Para su segunda pregunta: necesita el algoritmo de generalización Douglas-Peucker
Hace un momento necesitaba una solución a su pregunta # 2 y después de ver algunos de los algoritmos de simplificación de línea disponibles, creé la mía.
El proceso es simple y parece funcionar bien, aunque puede ser un poco lento si no lo implementa correctamente:
P[0..n]
es tu matriz de puntos. Deja que T[n]
se defina como el triángulo formado por los puntos P[n-1], P[n], P[n+1]
Max
Es el número de puntos que están tratando de reducir esta línea a.
- Calcula el área de cada posible triángulo
T[1..n-1]
en el conjunto. - Elija el triángulo
T[i]
con el área más pequeña - Retire el punto
P[i]
para aplanar esencialmente el triángulo - Recalcular el área de los triángulos afectados
T[n-1], T[n+1]
- Vaya al Paso n.º 2 si la cantidad de puntos>
Max