2009-03-16 23 views
5

Estoy desarrollando una aplicación de Google Maps y me he encontrado con este problema. Necesito eliminar todos los marcadores que están fuera de los límites del mapa.Cómo determinar si un marcador está visible en Google Maps

¿Hay alguna manera simple de hacer esto, además de mantener una matriz y observar la latitud de cada marcador?

No puedo usar MarkerManager porque tengo demasiados puntos. No quiero usar clearOverlays() porque cerraría cualquier marcador abierto.

Cualquier ayuda sería apreciada.

Respuesta

4

Si no desea ver cada marcador individualmente, agrúpelos en algunos conjuntos inicialmente y calcule los límites del conjunto.

Luego puede mostrar u ocultar los conjuntos dependiendo de lo que se muestra actualmente en el mapa (puede encontrar el límite del mapa usando GMap2.getBounds()).

¿De cuántos puntos estamos hablando?

actualización

A. Sobre 65K.

Veo por qué no puede crear 65K GMarkers cuando se carga la página. Eso llevará más de 5 segundos.

Los agrupo en grupos de 200 ish y cuando el borde del grupo se encuentra dentro de un margen de mapa de 1/4 fuera del borde mostrado, busque, cree marcadores y muestre el grupo adyacente. Va fuera del 1/2 del ancho del mapa del borde exterior y luego oculta el grupo.

Otras alternativas son utilizar una biblioteca de terceros tales como

+0

65k, pero nunca se mostrarán más de 300 a la vez – Sklivvz

+0

Gracias por la sugerencia, el otro problema es que la descarga de la información para generar marcadores de 65k llevaría demasiado tiempo ... – Sklivvz

+0

Agrupa el lado del servidor y carga los límites del grupo en la carga de la página inicial. Luego puede descargar los puntos sobre la marcha usando AJAX a medida que los grupos se acercan a la porción del mapa que se muestra. – RichH

Cuestiones relacionadas