Foros del Web » Programando para Internet » Javascript »

Google Maps con miles de marcadores

Estas en el tema de Google Maps con miles de marcadores en el foro de Javascript en Foros del Web. Buenas, He usado bastante la API de Google Maps. Usando MYSQL y PHP he conseguido mostrar los marcadores sobre el mapa correctamente, pero ahora tengo ...
  #1 (permalink)  
Antiguo 05/12/2012, 15:47
Avatar de 0123  
Fecha de Ingreso: noviembre-2012
Ubicación: Entre la consola, el coda y un poco de photoshop
Mensajes: 263
Antigüedad: 11 años, 5 meses
Puntos: 10
Google Maps con miles de marcadores

Buenas,

He usado bastante la API de Google Maps. Usando MYSQL y PHP he conseguido mostrar los marcadores sobre el mapa correctamente, pero ahora tengo un reto mas.

Queria hacer lo siguiente:

-Se muestra el mapa, desde lejos, se ven los puntos, pero acumulados [URL="http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/examples/simple_example.html?compiled"]este ejemplo[/URL]. Contaria los marcadores con MYSQL.
-Haces zoom y entonces se cargan de nuevo los marcadores cercanos. Y se muestran normalmente.

Mi problema es que tengo miles de marcadores, y cargarlos de una vez seria demasiado peso.

¿Conoceis alguna ejemplo de ello?, lo importante es que se vuelvan hacer consultas al modificar la posicion.

¿Que pensais?
  #2 (permalink)  
Antiguo 05/12/2012, 18:18
txemaarbulo
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Google Maps con miles de marcadores

Para pasarlos directamente desde la base de datos, habría que preguntarse cuán rápida es la respuesta.

Del ejemplo que señalas, las 100 marcas que se presentan están recogidas desde un JSON que contiene 1.093 puntos (se recogen a nivel de ejemplo los 100 primeros). Y es rápida
Puedes ver el archivo http://google-maps-utility-library-v.../src/data.json con el que enlaza.

En http://gmaps-samples-v3.googlecode.c...nymarkers.html y bajo el mismo sistema de agruparlos mediante markerclusterer los puntos son recogidos en KML. Aquí son algo más de 2.500.

En resumen, no veo ningún problema si los datos son extraídos previamente a un archivo, sea JSON, XML, KML con los que enlace la página.

Si en el posicionamiento de los marcadores queremos utilizar geocoder, ahí si estamos fritos y con la necesidad de solicitar servicios de pago a Google
  #3 (permalink)  
Antiguo 06/12/2012, 04:53
Avatar de 0123  
Fecha de Ingreso: noviembre-2012
Ubicación: Entre la consola, el coda y un poco de photoshop
Mensajes: 263
Antigüedad: 11 años, 5 meses
Puntos: 10
Respuesta: Google Maps con miles de marcadores

'Tal vez no me he explicado bien, :P.

Segun he leido si posiciones varios miles de marcadores el mapa se sobrecarga y funciona lento, ademas de que la mayoria de marcadores se superpondrian y quedaria feo. Ademas de que no puedo cargar miles de marcadores de golpe, seria una perdida de recursos bestial.

Por ello necesito poder cargar unicamente los marcadores cercanos respecto al zoom y posicion del mapa.

¿Existe algo creado parecido?, tiene que haberlo, sino no me explico como lo hacen algunas inmobiliarias.

¿Sabeis?
  #4 (permalink)  
Antiguo 06/12/2012, 06:02
txemaarbulo
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Google Maps con miles de marcadores

Cita:
Iniciado por 0123 Ver Mensaje
Segun he leido si posiciones varios miles de marcadores el mapa se sobrecarga y funciona lento, ademas de que la mayoria de marcadores se superpondrian y quedaria feo. Ademas de que no puedo cargar miles de marcadores de golpe, seria una perdida de recursos bestial.
Ello es debido a cómo se solicitan los datos. Si no tienes el JSON, XML o KML de puente (solo haces una llamada al archivo), o si acudes a geocoder, que tiene que hacer una llamada por cada dirección ó lat/lng, la lentitud se hace evidente. Además corres el riesgo en las llamadas del máximo de solicitudes impuestas por Google Maps. Por ello es aconsejable pasar de la basse de datos a un archivo "puente" que es el que leerá el código de la página.

Cita:
Iniciado por 0123 Ver Mensaje
Por ello necesito poder cargar unicamente los marcadores cercanos respecto al zoom y posicion del mapa.

¿Existe algo creado parecido?, tiene que haberlo, sino no me explico como lo hacen algunas inmobiliarias.

¿Sabeis?
En las páginas más complejas que he visto, uno o varios de los campos es la región, provincia y/o ciudad.

La lectura de los puntos, en este caso, la limitas al área elegida.

Al hacer la lectura del archivo, generalmente mediante <select>, lo limitas a un espacio que es centrado mediante combinado con bounds

Bien:
Código Javascript:
Ver original
  1. var southWest = new google.maps.LatLng(-31.203405,125.244141);
  2.   var northEast = new google.maps.LatLng(-25.363882,131.044922);
  3.   var bounds = new google.maps.LatLngBounds(southWest,northEast);
O bien
Código Javascript:
Ver original
  1. var limits = new google.maps.LatLngBounds();
  2. limits.extend(point);
  3. map.fitBounds(limits);

En ambos casos limitas el zoom del mapa al área seleccionada o a los puntos que aparecen.

Dado que no tengo ahora el enlace a alguna de estas páginas, te paso un enlace a una prueba propia de áreas (polígonos), donde cada provincia contiene en torno a 1000 puntos y cada municipio oscila entre varias decenas y varias centenas de puntos para formar las áreas. Enlace a lectura de KLM mediante select.

En tu caso, la estructura de los KML que utilizo, podrás hacerlos en XML con la correspondiente variación de su estructura para indicar puntos, direcciones, ventanas, etc. Claro está que habrá que trabajarlos adecuadamente.
  #5 (permalink)  
Antiguo 06/12/2012, 10:15
Avatar de 0123  
Fecha de Ingreso: noviembre-2012
Ubicación: Entre la consola, el coda y un poco de photoshop
Mensajes: 263
Antigüedad: 11 años, 5 meses
Puntos: 10
Respuesta: Google Maps con miles de marcadores

Buenas txemaarbulo,

Muchas gracias por tu ayuda. Entiendo, el ejemplo que me has puesto me ha hecho la boca agua.

Lo voy a estudiar a muerte.

Gracias!

Etiquetas: google, html, maps, marcadores, miles, mysql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:12.