2013-07-03 3 views
7

Wir bewerten WP8 für eine unserer App. Es nutzt GPS zur Verfolgung von Auftragnehmern im Bereich arbeiten. Wir sehen Nokia Lumia als eine sehr gute Hardware-Plattform, aber mit dem Problem des Software-Stacks.GPS Buggy Verhalten auf Windows Phone 8 Plattform

a.Wir haben versucht, Geolocator-Funktion dieser Plattform zusammen mit MovementThreshold als 100 zusammen mit Genauigkeit als HIGH festgelegt. b. Trotzdem sehen wir einen Fehler in den Daten (selbst wenn wir etwa einen Meter bewegen, bekommen wir Interrupt und Position zu weit vom eigentlichen). Nach der Suche im Web und in der Dokumentation haben wir festgestellt, dass GPS-basierte Satelliten auf WP8 nur verfügbar sind, wenn die Standortinformationen nicht aus dem WiFi/Mobilfunk-Netzwerk abgerufen werden können.

Damit wird die Feinabstimmung des Objekts beendet. Gibt es einen Weg (wie in Android können wir Anbieter wählen) können wir Sat zwingen. basiertes GPS?

Es tut mir leid, wenn es eine Art Duplikat ist.

Jede Hilfe wird geschätzt.

PS: Wir haben bereits Formel für die Berechnung von Diff zwischen Punkten angewendet und filtern mit Schwellenwert, aber es ist nicht gut Ansatz. Grüße ...

Antwort

6

Es gibt 2 GeoCoordinate Klassen 1 Geo * C * oordinate die Namespace 2 Geo * c * oordinate unter System.Device.Location kommt die kommt unter Windows.Devices.Geolocation Namensraum

Wenn Sie Geolocator in Ihrem Tracking-Code verwenden, ist die Koordinate Geocoordinate, da beide in demselben Namespace wie unter Windows.Devices.Geolocation angegeben sind. Wenn Sie geocoordinatewatcher verwenden, erhalten Sie GeoCoordinate als beide in 1 System.Device .Ort.

Wenn Sie Geocoordinatewatcher verwenden, funktioniert der obige Code gut, aber wenn Sie Geolocator verwenden, steht die HorizontalAccuracy-Eigenschaft nicht für Sie zur Verfügung, stattdessen müssen Sie Accuracy Property verwenden.

private const double ACCURACY_THRESHOLD = 20; 

private void LocationChanged(Geocoordinate coordinate) 
{ 
    if (coordinate.Accuracy < ACCURACY_THRESHOLD) 
    { 
     // use point 
    } 
    else 
    { 
     // ignore and wait for better accuracy 
    } 
} 

oder was Sie tun können, ist, dass Sie GeoCoordinate zu GeoCoordinate und verwenden Sie den Code oben bezeichnete Antwort umwandeln kann.

5

Sie können Satelliten-Tracking nicht erzwingen, aber durch die Wahl hoher Genauigkeit werden sie aktiviert. Sie können dann die Genauigkeit des empfangenen Standorts auswerten und keine fehlerhaften Standorte auswählen. Die Genauigkeit ist Teil der GeoCoordinate-Klasse in Metern.

private const double ACCURACY_THRESHOLD = 20; 

private void LocationChanged(GeoCoordinate coordinate) 
{ 
    if (coordinate.HorizontalAccuracy < ACCURACY_THRESHOLD) 
    { 
     // use point 
    } 
    else 
    { 
     // ignore and wait for better accuracy 
    } 
} 

Siehe http://msdn.microsoft.com/en-us/library/system.device.location.geocoordinate.horizontalaccuracy.aspx