2013-06-23 53 views
1

我們的應用程序中的WinRT Geolocator有一個奇怪的行爲。用戶點擊應用程序中的按鈕即可獲取當前位置。第一次正常工作,但所有後續點擊按鈕都會返回相同的座標,即使我們移動超過一公里也很困難。WinRT Geolocator總是返回相同的位置

該應用程序在ThinkPad上運行,我們安裝了名爲「GPS Satellite」的應用程序,如果我們切換到此應用程序,請獲取座標並返回到我們的應用程序,然後Geolocator返回正確的座標。所以我們知道GPS工作正常,但似乎座標保存在緩存中,即使很困難,我們已經設置了幾毫秒的終止時間。

private async void ExecuteObtenirCoordGPSCommand() 
     {  
      try 
      { 
       Geolocator geolocator = new Geolocator(); 
       geolocator.DesiredAccuracy = PositionAccuracy.High; 
       // Make the request for the current position 

       Geoposition pos = await geolocator.GetGeopositionAsync(new TimeSpan(0,0,0,0,200), new TimeSpan(0,0,5)); 


       Place.Latitude = pos.Coordinate.Latitude; 
       Place.Longitude = pos.Coordinate.Longitude; 
      } 
      catch 
      { 
       GPSMsgErreur = "The GPS is unavailable"; 
      } 
} 

我們試圖在GetGeopositionAsync方法上過期,但沒有解決問題。

我們已經嘗試將Geolocator var放在類級別,得到相同的結果。

任何想法?

+0

使用'await'關鍵字將'async void'更改爲'async Task'並調用方法'ExecuteObtenirCoordGPSCommand()'。您是否在應用清單中添加了位置功能? – Xyroid

+0

我們使用來自MS的示例代碼具有相同的行爲:http://code.msdn.microsoft.com/windowsapps/Geolocation-2483de66/view/SourceCode#content –

+0

您是否在應用程序清單中添加了位置功能? – Xyroid

回答

0

不知道這是你的問題,但使用的是被標記的API在這個崗位有過時: http://msdn.microsoft.com/en-us/library/windows/apps/windows.devices.geolocation.geocoordinate

嘗試使用:

Place.Latitude = pos.Coordinate.Point.Position.Latitude; 
Place.Longitude = pos.Coordinate.Point.Position.Longitude; 

你也可以使用:

double someVar = pos.Coordinate.Accuracy 

找出設備上的誤差幅度。可能是你在離你的第一個位置不夠遠的地方,而你的第二個位置在錯誤的邊緣內...

我還可以告訴你,我有一個使用Visual Studio 2013 Windows(WinRT) ThinkPad使用與您正在使用的相同對象並且工作良好。 我的和你之間的主要區別是,我使用的API上面顯示和我沒有使用以下語句:

geolocator.DesiredAccuracy = PositionAccuracy.High; 

而且我沒有帶任何參數的GetGeopositionAsync方法。

我希望這會有所幫助。 乾杯,漢斯。

相關問題