android-mapview - trazar - tipos de mapas android studio
Google Maps Android API v2 es muy lento al agregar muchos marcadores (2)
Estoy actualizando una aplicación de Android existente para usar la nueva API de Android de Google Maps v2. Tengo alrededor de 2500 marcadores que quiero agregar al mapa. Con la versión anterior de la API, encontré que la capacidad de respuesta de los mapas es terrible cuando hay 2500 marcadores, por lo que tuve que trabajar en ello agregando solo marcadores que se encuentran en la región visible actual del mapa.
Esperaba que 2500 marcadores fueran más rápidos con la nueva API, pero aún así es horrible, incluso en un Nexus 4, y no veo ningún tipo de opción para hacer clústeres.
Entonces, mi pregunta: ¿cómo puedo determinar si un cierto punto de latencia está contenido dentro de la región visible del mapa?
He consultado VisibleRegion en la documentación, pero hasta ahora no he tenido suerte con eso. Cualquier ayuda es muy apreciada.
* Nota al margen: 2500 marcadores en un MKMapView de iOS (google maps o Apple maps) es muy suave y sensible incluso con un iPhone 3gs. Todavía no entiendo por qué es tan lento en Android, incluso con el último y mejor hardware.
Bien, después de probar un par de cosas más, descubrí cómo determinar si un punto dado está en la región visible, y es bastante simple:
//Note: this.mMap is an instance of GoogleMap
LatLngBounds bounds = this.mMap.getProjection().getVisibleRegion().latLngBounds;
LatLng markerPoint = new LatLng(item.getLatitude(), item.getLongitude());
if(bounds.contains(markerPoint))
{
this.mMap.addMarker(new MarkerOptions(...));
}
* Tenga en cuenta que obtener la proyección de GoogleMap es una operación costosa, por lo que si está repasando una larga lista de elementos para crear marcadores y agregándolos al mapa como soy, solo tome la proyección una vez antes de hacer un bucle.
Actualizar
Decidí escribir una publicación de blog que detalla cómo mostrar los marcadores que se encuentran en la región visible del mapa y ocultar los marcadores a medida que se mueven de la pantalla. No es una solución perfecta, pero si está mostrando miles de marcadores y sabe que sus usuarios no necesitan verlos todos al mismo tiempo (a menos que se alejen), es una solución bastante buena.
Ocultar y mostrar marcadores de pantalla con Google Maps Android API V2
Para una solución de clúster en Android, es posible que desee probar las Extensiones de Mapas de Android: https://github.com/mg6maciej/android-maps-extensions