繁体   English   中英

Windows Phone 8 Geolocator缓存位置

[英]Windows Phone 8 Geolocator cached location

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

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

如果我理解正确,则maximumAge表示该位置可以缓存,最长可达5分钟。

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

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

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

对,那是正确的。 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可以使用Geoposition满足该请求,该地理位置距请求开始时间的5分钟,只要该位置满足应用程序指定的精度要求即可。

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

  1. 请求已开始。

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

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

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

  5. 达到超时后,如果没有可用的位置,则输出错误。 如果有可用的位置,假设框架遵循尽力而为模型,则此时可以返回精度低于应用程序所需的Geoposition 应用程序可以决定信息是否有用或丢弃它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM