php - markerclustererplus - markerclusterer google maps
¿Servidor agrupado? (1)
He buscado desesperadamente la solución adecuada que pudiera manejar hasta 50 000 marcadores (y por qué no aún más si el servidor puede manejarla) mientras soy fácil en mi servidor y he estado haciendo esto durante días.
El concepto es algo como esto:
- ¿Cuál sería la mejor solución / lenguaje para agrupar el lado del servidor? No estoy buscando un código de trabajo enorme, pero necesito que me empujen hacia la dirección correcta.
- ¿Cómo "almacenar en caché" o "marcar" clústeres / marcadores ya cargados para que no se vuelvan a cargar los marcadores / clústeres que ya se cargaron cuando se acercó o alejó el mapa o se amplió?
Teoría:
El camino correcto es similar a esto:
- Si el mapa está disminuido y hay muchos marcadores, maneje la agrupación en el servidor
- Si se acerca el mapa a un punto en el que todos los marcadores ya no se ajustan a la ventana gráfica, solo agrupe los marcadores que están en la ventana gráfica, también el servidor.
- Si el zoom es tan grande que el número de marcadores en la ventana gráfica es pequeño (<500 por ejemplo) , clúster en el navegador a través de JS
Datos que podría usar en el lado del servidor y que también podría enviar al navegador a través de JSON:
- Límites de mapa enviados a través de ajax al servidor cuando se realiza una solicitud
- Recuento total de marcadores de la consulta de la base de datos
- Coordenadas de marcadores desde la consulta de la base de datos
- Probablemente algo más importante / útil que actualmente no me estoy dando cuenta
Estoy trabajando con aplicaciones de mapas de Google con 50,000 100.000 polígonos. Ha resultado muy útil la posibilidad de organizar los polígonos en una serie de regiones (hojas lógicas, áreas o similares). El uso de una matriz de regiones ya visualizadas que se envían al servidor a través de ajax junto con las coordenadas que enlazó me permitió seleccionar solo las regiones que aún no se muestran y así reducir tanto la asignación de ancho de banda como el tiempo para renderizar polígonos,
Para el resto de la estrategia es correcto. para una evaluación más a fondo debe obtener en profundidad técnica poco practicable en un contexto social como SO.
Para el lenguaje del lado del servidor están todos bien, en este momento estoy usando PHP y framework Yii2 con el controlador PDO para MySQL. Lo importante es utilizar un entorno que facilite el acceso a la base de datos.
En estas condiciones, el uso de una buena organización del clúster y la visualización de polígonos en regiones cuando el nivel de zoom lo permite hace que las aplicaciones de google maps tengan un rendimiento excelente
Tenga en cuenta que la apariencia de los marcadores es más rápida que la de los polígonos, ya que es menor el número de coordenadas involucradas y sus características gráficas.
Para una pregunta general como la suya es difícil encontrar una buena respuesta en línea. Para las regiones depende de la dimensión del área que administra y la densidad promedio de los marcadores. Para el área que no está cerca del polo, puede usar una fracción de la coord .. o si su punto geográfico tiene algún atributo relacionado con el área, puede usarlos. Puede encontrar fórmulas en línea para vincular el zoom con una dimensión aproximada del área. Depende también de cómo se realiza la recopilación de marcadores. En mi caso, durante la recopilación, evalúo algún atributo para estas necesidades.
Para el control hay marcadores o un grupo de marcadores que ya están en los mapas. Uso simplemente vector y uso esto (a través de ajax) para el intercambio dinámico con el servidor. En el primer momento el vector está vacío y progresivamente el vectore contiene elementos para "saber" lo que ya se muestra.