在 wp8 中获取位置的 2 种方法,哪个最好?

Posted

技术标签:

【中文标题】在 wp8 中获取位置的 2 种方法,哪个最好?【英文标题】:2 methods for getting location in wp8, which is best? 【发布时间】:2013-02-11 14:28:56 【问题描述】:

据我所知,在 wp8 中,有两种方法可以从 Geolocator 获取位置。

    监听 PositionChanged 事件 使用 GetPositionAsync

在我的应用中,我希望每 5 秒显示一次位置。我使用上述哪个有关系吗?还是一种方法比另一种更适合频繁的位置捕获?

【问题讨论】:

1.当位置改变时触发,2. 为您提供当前位置异步。 【参考方案1】:

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

Windows Phone 从多个来源(GPS、GLONASS、WiFi、蜂窝塔、信鸽等)获取位置信息,并将其缓存以备将来使用。 WP7/WP8 位置服务 API 的工作方式是它们始终获取新信息,并且取决于您的 DesiredAccuracy 和您的 MinimumThreshold 将决定将事件冒泡到托管/WinPRT API。同样,事件是基于时间的。位置服务 API 中触发的事件基于对您的特定标准有用的新数据的可用性。

如果您想根据 GeoLoc 每 5 秒执行一次操作,您最好订阅来自 GeoLocator/GeoCoordinateWatcher 的事件,在您的应用中缓存最新的值,并且每 5 秒使用最新的值。不要指望每 5 秒触发一次地理定位事件,也不要使用 GetPositionAsync() 轮询 WinPRT API。 GetPositionAsync() 用于一次性地理位置获取场景,而不是跟踪场景。

【讨论】:

但是如果你有一个 1 米的运动阈值,可以在运行的应用程序中使用。如果 UI 线程必须更新显示器上的统计信息,例如速度和距离,那么触发移动的事件不会影响性能并导致更新延迟吗?【参考方案2】:

如果您想每 5 分钟左右获取一次位置,我会使用 GetPositionAsync,因为这样您就可以在需要时检索数据。使用该事件可能意味着您最终会在用户移动时检索数据,这可能会给您带来问题。

【讨论】:

每 5 秒还是您的实际意思是 5 分钟? @Gaz83 - 抱歉,我的意思是秒,出于某种奇怪的原因,我输入了分钟。使用该事件的主要问题是,每次用户移动并且位置更新时,都会触发该事件。您想使用哪一种取决于程序的确切目的,但根据您所说的,我觉得在需要时调用 GetPositionAsync 效果最好。

以上是关于在 wp8 中获取位置的 2 种方法,哪个最好?的主要内容,如果未能解决你的问题,请参考以下文章

如何在WP8.1 c#中将广告放置在固定位置

有没有一种简单的方法可以确定用户在哪个半球?

linux系统哪个好

wp8后台gps追踪器停止工作

在堆栈中的哪个位置可以最好地将分析数据仓库数据与从第三方 API 抓取+缓存的数据合并?

读取字符行并获取文件位置