2013-07-03 43 views
7

我們正在評估我們的應用之一的WP8。它利用全球定位系統追蹤在該地區工作的承包商。我們將諾基亞Lumia視爲非常好的硬件平臺,但面臨着軟件堆棧問題。windows phone 8平臺上的GPS馬車行爲

a。我們嘗試將此平臺的geolocator特性與MovementThreshold設置爲100並將精度設置爲HIGH。 b。我們仍然看到數據中的錯誤(即使我們移動了大約一米,我們得到的中斷和位置也離實際太遠)。在網頁和文檔上搜索後,我們發現'在WP8上,如果無法從WiFi /蜂窩網絡獲取位置信息,則基於衛星GPS的位置將僅適用。

這是殺死微調對象的跟蹤。有什麼辦法(像我們可以選擇提供者的Android),我們可以強迫星期六。基於GPS的?

如果是重複的,我很抱歉。

任何幫助將不勝感激。 PS:我們已經應用公式來計算點到點之間的差異,並用閾值進行濾波,但是它不是很好的方法。 Regards ...

回答

6

2會有地理座標類 1地理位置* Ç * oordinate其中談到下System.Device.Location命名空間 2地理位置* Ç * oordinate其屬於Windows.Devices.Geolocation命名空間

如果您在跟蹤代碼中使用Geolocator,那麼您獲得的座標是Geocoordinate,因爲兩者都與2,Windows.Devices.Geolocation中提到的名稱空間相同,並且如果您使用geocoordinatewatcher,它會爲您提供GeoCoordinate,因爲它們都是1 System.Device 。位置。

如果您使用Geocoordinatewatcher上面的代碼工作正常,但如果您使用的是Geolocator,那麼Horizo​​ntalAccuracy屬性將無法在您那裏使用,而必須使用Accuracy Property。

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 
    } 
} 

或者您可以做的是您可以將Geocoordinate轉換爲GeoCoordinate,並使用上述答案中提到的代碼。

5

您無法強制執行基於衛星的跟蹤,但通過選擇高準確度,他們將被啓用。然後,您可以評估收到的位置的準確性,並選擇不使用不準確的位置。精度是GeoCoordinate類的一部分,單位爲米。

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 
    } 
} 

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