ultima software samsung paquete manualmente descargar cual como actualizar actualizacion android google-maps geolocation mylocationoverlay

android - software - ¿Cómo implementar la actualización en vivo en la ubicación actual del usuario?



descargar ultima version de android (1)

Estoy usando MyLocationOverlay para mostrar la ubicación actual. Sin embargo, toma un tiempo para que la ubicación se actualice. Quería implementar algo así como la función "sígueme" en iPhone, donde la ubicación del usuario también se está moviendo a medida que el usuario se mueve. ¿Cómo puedo hacer que el marcador de MyLocationOverlay realice una actualización en vivo en su ubicación?

Tenga en cuenta que anulo el dibujo () y drawMyLocation () porque necesito dibujar un marcador personalizado.

Mi código actual se ve así: (El problema con mi código es que el marcador no se mueve junto con el usuario. Dado que lleva un tiempo antes de que se invoque onLocationChanged, el marcador saltará repentinamente de un lugar a otro).

@Override public synchronized void onLocationChanged(Location location) { if (location != null && mapController != null) { //Recenter map based on current location mapController.animateTo(new GeoPoint((int) (location.getLatitude() * 1e6), (int) (location.getLongitude() * 1e6))); } super.onLocationChanged(location); }


Puede dar al administrador de la ubicación un intervalo mínimo para esperar entre llamadas a ese método, pero no le va a importar exactamente ese intervalo el 100% del tiempo (consulte la descripción de LocationManager.requestLocationUpdates () ). Puede ser más corto, podría ser más largo, porque, por ejemplo, puede estar nublado y el chip gps no podrá obtener actualizaciones de ubicación tan regularmente como lo desearía.

No hay una forma adecuada de superar esto: los servicios de ubicación siempre tendrán imperfecciones. Cada aplicación con reconocimiento de ubicación que usé "colgó" el marcador de vez en cuando porque el chip gps perdió la solución por un momento.

Lo único que puede hacer para suavizar esto es recordar la velocidad del movimiento y si gps pierde corregir, le da al marcador de mapa actualizaciones falsas basadas en la suposición de que el usuario se mueve en la misma dirección con la misma velocidad que cuando gps tenía una solución Pero solo tiene sentido hacer eso por dos o cinco actualizaciones reales omitidas (solo para suavizar los casos cuando la corrección se pierde durante varios segundos).

UPD Para eso, puede implementar un tipo de escucha de ubicación proxy, que actualizará su marcador teniendo estrictamente en cuenta los intervalos que especifique, por ejemplo, cada 200 ms, y lo hará en función de su ubicación almacenada. Y la ubicación almacenada puede ser actualizada asincrónicamente por el oyente de ubicación real. Los objetos de ubicación tienen tiempo de la corrección que proporcionó los datos (consulte el método getTime () ), puede usar eso para determinar si aún debe "predecir" el próximo movimiento del marcador o si la ubicación es lo suficientemente antigua como para darse por vencido y notificar al usuario que gps no tiene pista donde están :)