Windows Phone 8 Geolocator缓存位置

时间:2014-05-31 19:14:20

标签: c# caching windows-phone-8 geolocation

在Windows Phone应用中,我得到如下地理位置:

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

如果我理解这一点,则maximumAge意味着该位置可以缓存,最长可达5分钟。

我可以使用这个"内置缓存"所以当我的应用程序启动时,我使用带有maximumAge的GetGeopositionAsync(...),例如2(分钟),只是为了获得新鲜的地理位置,而不实际使用地理位置。

稍后在应用程序中,当我确实需要该位置时,我再次使用maximumAge调用GetGeopositionAsync(...),例如10分钟。现在我应该得到缓存的值(如果它仍然基于maximumAge有效)?

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

1 个答案:

答案 0 :(得分:4)

是的,这是正确的。 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的年龄限制,   从操作开始的时间开始,应用程序将使用它。通过   默认情况下,请求不会返回缓存的Geoposition。如果你的应用程序   可以使用缓存位置一段短暂的时间,这个参数   也可以看作有效时间跨度。该应用程序可以简化它   让Geolocator处理缓存的逻辑。

     

例如,如果应用将MaximumAge设置为5分钟,则为Geolocator   可以使用长度为5的Geoposition来满足该请求   从请求开始的几分钟,只要该位置   符合应用程序指定的准确度要求。

     

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

     
      
  1. 请求已开始。

  2.   
  3. 确定缓存的Geoposition是否满足年龄和所需的准确度,如果是,请立即返回。

  4.   
  5. 根据所需的准确度触发定位技术。

  6.   
  7. 当符合所需的准确度时,请返回Geoposition

  8.   
  9. 达到超时后,如果尚无可用的位置,则输出错误。如果有一个可用的位置,给定该框架   遵循尽力而为模型,此Geoposition具有较低的准确性   比应用程序所希望的可以在此时返回。该应用程序可以   决定信息是否有用或丢弃信息。

  10.