Estoy construyendo un sitio ASP.NET MVC donde quiero tener un mapa Google Maps JavaScript API que muestra los marcadores cargados desde mi backend a través de AJAX.Estrategia para los marcadores de carga diferida en un mapa Google Maps JavaScript API
Como no quiero que el cliente se encuentre con problemas de memoria, quiero cargar los marcadores y aplicarlos a Fluster2 para ponerlos en los clústeres. Creo que la mejor manera de cargar los marcadores de forma perezosa es agregar un detector de eventos al evento idle
del mapa, que se produce después de que el mapa se panoramice o se amplíe.
Aquí está mi estrategia actual:
- Añadir evento a
idle
evento. - Cuando se lanza el evento
idle
, use jQuery para hacer una llamada AJAXHTTP POST
a mi backend, suministrando la ventana/límites actuales del mapa. - El servidor devuelve todos los puntos dentro de la ventana gráfica.
- Los puntos se crean en marcadores y se agregan a Fluster2, que los agrega al mapa. Los puntos antiguos NO se descartan.
- Repita
Sin embargo, esto puede crear problemas, ya que los puntos de edad no se descartan. No quiero descartarlos, ya que no quiero volver a cargarlos, pero con mi estrategia actual, los cargaré por segunda vez y crearé marcadores para ellos una segunda vez.
Aunque creo que no es una buena idea decirle de alguna manera el back-end en la llamada AJAX que ya tengo algunos de los marcadores, que sería bueno para aplicar algún tipo de una tabla hash que no permite duplicados .
De esta forma, cuando cargo los puntos, puedo intentar agregarlos primero a la tabla hash: si eso tiene éxito, aún no los he mostrado, así que puedo agregarlos como marcadores; si falla, ya están en el mapa.
Es esta una buena estrategia? En caso afirmativo, ¿cómo puedo implementar una tabla hash que no permita duplicados?
¡Gracias por su ayuda! Trataré de implementar esto. –
Para la clave hash, puede crear un objeto google.maps.latLng a partir de su latitud/longitud y usar su método toString(). – dsas