在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