La función implementada por el código en la primera mitad del Capítulo 3 de la Guía de desarrollo para información de posicionamiento es: cuando cambia la ubicación geográfica (latitud y longitud) recopilada por el teléfono móvil, la longitud y latitud cambiadas se muestran en la interfaz. Si ha desarrollado un programa de posicionamiento nativo de Android, debería estar familiarizado con esta parte del código. Es bastante satisfactorio. Primero registra el servicio de monitoreo de ubicación y luego activa el método onLocationChanged () cuando cambia la ubicación. Ahora descargue el código de muestra del sitio web oficial. Después de importar el proyecto, abra el archivo MyLocation.java en el paquete com.amap.cn.apis.location. Las funciones principales implementadas por este archivo son: inicializar el mapa y lograr el. primer posicionamiento. El mapa se moverá automáticamente al punto de posicionamiento. Usaremos este archivo para completar la función de posicionamiento automático en tiempo real del mapa en un momento.
Al ver esto, es posible que alguien quiera simplemente integrar el contenido del archivo MyLocation con el módulo de posicionamiento nativo de Android que se proporciona en el Capítulo 3. Si su solución es intentar dibujar la ubicación actual en el mapa con el método onLocationChanged(), se encontrará con muchos problemas. Porque si usa la API proporcionada por Amap para dibujar puntos de posicionamiento en el mapa, debe llamar al método enableMyLocation () en la clase MyLocationOverlay. Según el material de referencia oficial, este método encapsula el método requestLocationUpdates () en la clase nativa de Android. LocationManager, por lo que debe haber llamado al método requestLocationUpdates() en la clase nativa LocationManager antes de escribir el método onLocationChanged(). Esto provocó que LocationManager realizara otro requestLocationUpdates antes de eliminarUpdate, lo que provocó que el programa se cerrara inesperadamente.
Así que regrese al Capítulo 3 de la Guía de desarrollo y observe detenidamente la segunda mitad: si desea que el mapa se mueva con la ubicación actual, debe heredar MyLocationOverlay e implementar su onLocationChanged(). método y llame a MapView.getController() El método .animateTo() mueve la posición del mapa. Esta oración original en la guía oficial del usuario es la respuesta correcta al problema, pero el sitio web oficial es realmente confuso. Solo contiene unas pocas líneas de texto y código. Para un novato como Raccoon que acaba de entrar en contacto con el desarrollo de mapas. Es realmente confuso, todavía estoy jugando por un tiempo, finalmente resolvió el problema, así que lo comparto, con la esperanza de que los novatos como yo puedan tomar menos desvíos.
Primero publiqué el archivo MyLocation.java modificado completo, con comentarios antes y después del código agregado o modificado (excluyendo cambios de paquete): "/*cambio de inicio*/" y " /*cambio de fin*/ "