2013-02-11 33 views
0

在wp8中,據我所見,有兩種從Geolocator獲取位置的方法。2種獲取wp8位置的方法,哪個最好?

  1. 聽PositionChanged事件
  2. 使用GetPositionAsync

在我的應用我希望得到的位置說,每5秒。這與我使用的上述哪一項有關?或者是一種比其他方法更適合頻繁定位捕獲的方法?

+1

1.當位置有*改變*時被觸發,2.讓你*當前*位置異步。 – 2013-05-02 11:05:04

回答

1

如果您想每隔5分鐘左右獲取一次位置,我會使用GetPositionAsync,因爲這樣可以在需要時檢索數據。使用事件可能意味着您最終會在用戶移動時檢索數據,這可能會導致您遇到問題。

+0

每5秒鐘還是5分鐘? – Gaz83 2013-02-11 16:13:35

+0

@ Gaz83 - 抱歉,我的意思是秒,出於某種奇怪的原因,我輸入了分鐘。使用該事件的主要問題是,每次用戶移動並且位置更新時,事件都會觸發。你想使用哪種類型取決於程序的確切目的,但根據你所說的話,當你需要最佳工作時,調用GetPositionAsync時聽起來像我。 – Kobunite 2013-02-11 16:22:12

5

這不是GeoLocation在WP7/WP8上的工作方式。

Windows Phone從多個來源(GPS,GLONASS,WiFi,蜂窩塔,歸巢鴿等)獲取位置信息並將其緩存供將來使用。 WP7/WP8位置服務API的工作方式是他們總是獲取新信息,並且取決於您的DesiredAccuracy,並且您的MinimumThreshold將決定將事件升級到託管/ WinPRT API。再次,事件是基於時間的。定位服務API中發起的事件基於對您的特定標準有用的新數據的可用性。

如果您希望每5秒鐘基於GeoLoc執行一個動作,最好的辦法是訂閱GeoLocator/GeoCoordinateWatcher中的事件,緩存應用中的最新值,並且每5秒鐘使用最新值。不要指望每5秒觸發一次地理定位事件,也不要使用GetPositionAsync()輪詢WinPRT API。 GetPositionAsync()用於一次性地理位置採集場景,而不是跟蹤場景。

+0

但是,如果你的運動閾值爲1米,可用於正在運行的應用程序。如果UI線程不得不更新顯示器上的統計數據,例如速度和距離,那麼觸發移動的事件是否會影響性能並導致更新延遲? – Gaz83 2013-02-12 11:29:48