Windows Phone 8地理定位器缓存位置

本文关键字:缓存 位置 定位器 Phone 8地 Windows | 更新日期: 2023-09-27 18:05:59

在Windows Phone应用程序中,我得到这样的地理位置:

Geoposition geoposition = await geolocator.GetGeopositionAsync(
            maximumAge: TimeSpan.FromMinutes(5),
            timeout: TimeSpan.FromSeconds(10));

如果我理解正确的话,maximumAge意味着这个位置可以被缓存,并且最多5分钟。

我可以使用这个"内置缓存",这样当我的应用程序启动时,我使用getgeopotionasync(…)与maximumAge例如2 (min),只是为了获得新的地理位置,而不是实际使用地理位置。

后来在应用程序中,当我真正需要的位置,我再次调用getgepositionasync(…)与maximumAge例如10(分钟)。现在我应该得到缓存的值(如果它仍然有效基于maximumAge)?

这有什么意义吗?如果这工作如我所料,我不需要建立我自己的地理位置缓存系统。

Windows Phone 8地理定位器缓存位置

没错。一篇MSDN博客文章(http://blogs.windows.com/windows_phone/b/wpdev/archive/2012/11/30/acquiring-a-single-geoposition-in-windows-phone-8.aspx)解释了使用MaximumAge的缓存非常好:

MaximumAge定义了Geoposition缓存时间的限制,从操作开始的时间,它被应用程序使用默认情况下,请求不会返回缓存的地理位置。如果你的应用是否可以在短时间内使用缓存位置,此参数也可以看作是有效期的时间跨度。该应用程序可以简化其逻辑,让Geolocator处理缓存。

例如,如果应用程序设置MaximumAge为5分钟,则地理定位器可以满足这一要求与Geoposition一样古老的5从请求开始的几分钟后,只要那个位置满足应用程序指定的精度要求。

请注意,Geolocator将始终采用以下顺序满足请求的步骤:

  1. 请求启动

  2. 确定缓存的Geoposition是否满足年龄和期望的精度,如果满足,立即返回它。

  3. 基于所需精度触发定位技术。

  4. 当满足所需精度时返回Geoposition

  5. 当达到超时时,如果还没有可用的位置,则错误输出。如果有职位空缺,考虑到框架遵循最佳努力模型,此Geoposition具有较低的精度比期望的应用程序可以在这个时候返回。应用程序可以