Tengo una vista de mapa donde quiero rastrear la ubicación actual del usuario. El GPS y las 'redes inalámbricas' se activan en la configuración de mi teléfono. Sin embargo, dado que estoy en el interior no obtengo una corrección de GPS, por lo tanto, la ubicación se determina a través de la red; lugar wifi está disponible.Google Maps y aplicaciones con mapview tienen diferentes posiciones actuales
Tengo la aplicación Google Maps ejecutándose y mi aplicación ejecutándose.
Extrañamente, la ubicación actual difiere entre Google Maps y mi aplicación, donde Google Maps es muy preciso, mientras que en mi aplicación la ubicación está de alguna manera a unos 100 metros.
En mi aplicación, básicamente, hacer lo siguiente (con fines de depuración ahora):
1) inicialmente coloque un marcador en el mapa: geopunto recuperará a través de locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
2) inicialmente colocar otro marcador en el mapa : geopoint recuperado a través de locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
Esto colocará las últimas ubicaciones conocidas de ambos proveedores en el mapa (finalmente conocido desde fuera de mi aplicación).
3) a continuación de las actualizaciones regulares (ya que no consigo un GPS fijar todos modos cubierta aquí), que hacen:
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, baseLocationListener);
Puede ver por la frecuencia y la distancia que paso por el parámetro 0 en ambos casos.
En el manifiesto de la aplicación, se conceden los permisos siguientes:
android.permission.ACCESS_COARSE_LOCATION
android.permission.ACCESS_FINE_LOCATION
android.permission.ACCESS_MOCK_LOCATION
En realidad mi baseLocationListener se consiga llamar, lo que veo en el registro, pero la ubicación actualizada de alguna manera es la misma que la última posición actual conocida (de LocationManager.NETWORK_PROVIDER), mismo lat/lng.
Pensé que tal vez pasé por alto algo o me perdí un parámetro o configuración, o mi código tiene un error. Por lo tanto, instalé algunas otras (3 en total) aplicaciones LBS del mercado de Android que también muestran la ubicación del usuario actual. Las ubicaciones actuales que se muestran en esas aplicaciones son iguales a las de mi aplicación, y todas están a unos 100 metros de distancia, pero al menos son lo mismo.
Ver la captura de pantalla aquí: screenshot http://img33.imageshack.us/img33/8679/mapproblem.png
http://img33.imageshack.us/img33/8679/mapproblem.png
Ahora me pregunto:
1) según entiendo, getLastKnowLocation es y no aplicación en todo, ¿por qué todo el sistema Hay diferencias entre la ubicación en los mapas de Google y todas las demás aplicaciones?
2) ¿Google Maps no actualiza el lastKnownLocation de un proveedor?
3) ¿Google Maps utiliza un proveedor diferente ubicación personalizada (es decir, debido a razones de licencia) que no sea GPS_PROVIDER o NETWORK_PROVIDER como lo son en el SDK?
4) ¿cómo lograr el mismo resultado preciso con el NETWORK_PROVIDER como lo hace Google Maps?
¿Es posible que Google Maps solo esté usando la última ubicación que obtuvo del GPS, ya que a través de la red sabe que no ha llegado muy lejos? En otras palabras, la aplicación Google Maps sabe que entró (ya que el GPS se fue pero la ubicación de la red aún está disponible), y almacena el último punto GPS conocido y lo usa. – Nate
No lo creo. Ejecuté todas las aplicaciones al mismo tiempo, por lo tanto, la posición no debería diferir al mismo tiempo. Hace solo unos minutos también lo probé afuera y también fui en un autobús por una distancia más larga. Los mosaicos de la API de google maps son definitivamente inexactos, vea mi respuesta a continuación, que básicamente lo demuestra. También probé con GPS completamente fuera de uso y solo con GSM/Wifi, todo da como resultado lo mismo. Además, getLastKnowLocation es para todo el sistema, no para toda la aplicación. Si Google Maps lo usa, también debería obtener el mismo puesto en mi aplicación. –
De hecho, probablemente obtenga el mismo latitud/longitud de getLastKnowLocation que Google Maps, pero solo se muestra incorrectamente en diferentes mosaicos de mapas inexactos (consulte la respuesta a continuación como un ejemplo de la API web). –