2011-08-02 11 views
7

Me gustaría actualizar dinámicamente el mapa/cargar nuevos mapas superpuestos cada vez que mi usuario lo mueve una cierta distancia. ¿Cómo voy a hacer esto? ¿Hay un oyente cada vez que el usuario mueve el mapa? Lo más probable es que simplemente mida la distancia entre los puntos centrales.¿Cómo detectar el movimiento de Google MapView en Android?

Gracias!

Respuesta

0

Desafortunadamente, la interfaz del mapa no incluye ningún oyente para controlar las acciones del mapa (zoom/pan). Tendrá que configurar un temporizador de algún tipo que compruebe el centro/nivel de zoom para averiguar si las cosas han cambiado y actualizar en consecuencia.

0

Puede hacerlo anulando el método onTouch(...) en su Activity (para que cada vez que el usuario mueva el mapa, pueda volver a calcular los límites del mapa). Necesitará conocer el nivel de zoom y los límites del mapa, etc. para cargar estas superposiciones según las distancias del mapa.

+0

Pero si el usuario la desliza hacia la izquierda, por ejemplo, ¿no viajaría el mapa a un lugar diferente desde donde lo tocó el usuario? ? No habría forma de determinar la posición final, ¿verdad? – confused

+0

Al capturar los valores 'ACTION_DOWN' y' ACTION_UP' 'MotionEvent's, puede calcular la distancia del deslizamiento y así calcular la distancia recorrida por el usuario a través del mapa. – Phil

8

Prueba esto para detectar los movimientos de mapa: http://pa.rezendi.com/2010/03/responding-to-zooms-and-pans-in.html

El inicio y después de que el mapa se ha movido, debe guardar el centro del mapa actual. Como sugiere el artículo, rastrea ACTION_UP para determinar cuándo el usuario ha terminado un movimiento de mapa. Luego, compare el nuevo centro del mapa con el antiguo centro del mapa. Para obtener los centros de utilización Mapa getMapCenter de MapView():

http://code.google.com/android/add-ons/google-apis/reference/com/google/android/maps/MapView.html#getMapCenter()

EDIT: He realizado un trabajo adicional sobre este, y tienen una aplicación completa con código para su disfrute. Esta publicación de blog explica una solución de temporizador para esto y contiene un enlace a la fuente de Github: http://bricolsoftconsulting.com/extending-mapview-to-add-a-change-event/

Cuestiones relacionadas