在wp8中,據我所見,有兩種從Geolocator獲取位置的方法。2種獲取wp8位置的方法,哪個最好?
- 聽PositionChanged事件
- 使用GetPositionAsync
在我的應用我希望得到的位置說,每5秒。這與我使用的上述哪一項有關?或者是一種比其他方法更適合頻繁定位捕獲的方法?
在wp8中,據我所見,有兩種從Geolocator獲取位置的方法。2種獲取wp8位置的方法,哪個最好?
在我的應用我希望得到的位置說,每5秒。這與我使用的上述哪一項有關?或者是一種比其他方法更適合頻繁定位捕獲的方法?
如果您想每隔5分鐘左右獲取一次位置,我會使用GetPositionAsync,因爲這樣可以在需要時檢索數據。使用事件可能意味着您最終會在用戶移動時檢索數據,這可能會導致您遇到問題。
這不是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()用於一次性地理位置採集場景,而不是跟蹤場景。
但是,如果你的運動閾值爲1米,可用於正在運行的應用程序。如果UI線程不得不更新顯示器上的統計數據,例如速度和距離,那麼觸發移動的事件是否會影響性能並導致更新延遲? – Gaz83 2013-02-12 11:29:48
1.當位置有*改變*時被觸發,2.讓你*當前*位置異步。 – 2013-05-02 11:05:04