Google Maps und Apps mit Kartenansicht haben unterschiedliche aktuelle Positionen

8

Ich habe eine Kartenansicht, in der ich den aktuellen Standort des Benutzers verfolgen möchte. Sowohl GPS als auch "drahtlose Netzwerke nutzen" ist in meinen Telefoneinstellungen aktiviert. Da ich in Innenräumen bin, bekomme ich kein GPS-Fix, daher wird der Standort über das Netzwerk bestimmt; WLAN-Spot ist verfügbar.

Ich habe die Google Maps App und meine Anwendung läuft.

Seltsamerweise unterscheidet sich der aktuelle Standort zwischen Google Maps und meiner Anwendung, wo Google Maps sehr genau ist, während der Standort in meiner App auf ein paar 100 Meter liegt.

In meiner Anwendung mache ich im Prinzip folgendes (zum Debugging):

1) Platziere zuerst einen Marker auf der Karte: Geopoint wird über locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);

abgerufen

2) plazieren Sie zunächst einen anderen Marker auf der Karte: Geopoint wird über locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);

abgerufen

Dadurch werden die letzten bekannten Standorte beider Anbieter auf der Karte angezeigt (zuletzt von außerhalb meiner App bekannt).

3) dann für die regelmäßigen Updates (da ich hier sowieso keinen GPS-Fix bekomme), mache ich:

%Vor%

Sie können für die Häufigkeit und die Entfernung sehen, dass ich den 0 param in beiden Fällen überlasse.

Im App-Manifest werden die folgenden Berechtigungen gewährt:

%Vor%

Tatsächlich wird mein baseLocationListener aufgerufen, was ich im Log sehe, aber die aktualisierte Position ist irgendwie die gleiche wie die letzte bekannte aktuelle Position (von LocationManager.NETWORK_PROVIDER), gleich lat / lng.

Ich dachte, ich habe etwas übersehen oder einen Parameter oder eine Einstellung verpasst oder mein Code hat einen Fehler. Daher habe ich einige andere (insgesamt 3) LBS-Apps aus dem Android-Markt installiert, die auch den aktuellen Nutzerstandort anzeigen. Die aktuellen Standorte, die in diesen Apps angezeigt werden, entsprechen denen in meiner Anwendung - und sie sind alle ungefähr 100 Meter entfernt - aber immerhin gleich.

Siehe den Screenshot hier: Screenshot http://img33.imageshack.us/img33/8679/mapproblem.png

Ссылка

Nun frage ich mich:

1) Soweit ich weiß, ist getLastKnowLocation systemweit und nicht App-weit. Warum gibt es Unterschiede zwischen dem Standort in Google Maps und allen anderen Apps?

2) Aktualisiert Google Maps die lastKnownLocation eines Anbieters nicht?

3) Verwendet Google Maps einen anderen benutzerdefinierten Standortanbieter (d. h. aufgrund von Lizenzierungsgründen) als GPS_PROVIDER oder NETWORK_PROVIDER, wie sie im SDK enthalten sind?

4) Wie erzielen Sie mit dem NETWORK_PROVIDER dasselbe genaue Ergebnis wie Google Maps?

    
Mathias Conradt 20.07.2010, 10:27
quelle

3 Antworten

2

Ich glaube, ich habe eine Antwort gefunden, aber keine Lösung. Es scheint, dass das Problem in der Datenqualität der verschiedenen Kartenanbieter, die für Google Maps und MapView in SDK verwendet werden, die sich unterscheiden.

Die Koordinaten der Kartenkacheln scheinen nicht sehr genau zu sein, genau wie in den öffentlichen Google Maps Web API / Kacheln.

Sehen Sie sich diesen Screenshot für ein Beispiel an, wo ich den gleichen Geo-Punkt gepinnt habe. Screenshot http://img339.imageshack.us/img339/2793/gmaps2.png Ссылка

Die Karte mit der öffentlichen Karte api ist ein paar hundert Meter entfernt. Scheint, wir müssen nur damit leben ?! : (

    
Mathias Conradt 20.07.2010, 12:44
quelle
2

Ich weiß, dass Ihr Beitrag ein Jahr alt ist, aber die Antwort ist meiner Meinung nach: Google-Kartendaten in China sind versetzt oder verzerrt. Ich merke, dass du in Südchina bist. Die chinesische Regierung verlangt dies aus Sicherheitsgründen. Hier finden Sie die Google-Suchergebnisse .

Der Transformationsalgorithmus ist unbekannt. Wahrscheinlich können Sie es googlen und wünschen Ihnen viel Glück.

    
Frank Du 23.06.2011 01:27
quelle
0

Die Karten- und Satellitenbilder in Google Maps sind um einige Meter abgeschwächt, aber ich denke nicht, dass es so viel los sein sollte. Das scheint ein paar hundert Meter zu sein.

Abhängig davon, wie Sie Ihre Position erworben haben, bestimmen Sie, welche Position Sie erhalten. Nach meinem Verständnis sind dies die drei Erwerbsebenen.

  • GPS
  • Netzwerk
  • WLAN

GPS und Netzwerk werden durch Triangulation bestimmt. GPS ist am genauesten. WIFI wird mit einem "Whois" gemacht, eine Adresse wird erfasst und dann geocodiert, was manchmal völlig ungenau ist.

Einige Telefone sagen, sie sind GPS, aber sie sind wahrscheinlich Pseudo-GPS wie das iPhone 1.

    
CrazyEnigma 22.07.2010 15:31
quelle