【问题标题】:Windows Phone 8 Geolocator cached locationWindows Phone 8 地理定位器缓存位置
【发布时间】:2014-05-31 19:14:20
【问题描述】:

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

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

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

我可以使用这个“内置缓存”,以便当我的应用程序启动时,我使用 GetGeopositionAsync(...) 和 maximumAge,例如2(分钟),只是为了在不实际使用地理位置的情况下获得新的 geopostitin。

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

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

【问题讨论】:

  • 一开始为什么要缓存位置,担心性能问题?
  • 是的,基本上只是为了让时间保持在较低的用户位置。

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


【解决方案1】:

是的,没错。一篇 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 分钟,则地理定位器 可以使用 5 岁的 Geoposition 来满足该请求 从请求开始的时间开始的分钟,只要那个位置 满足应用程序指定的精度要求。

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

  1. 请求已启动。

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

  3. 根据所需精度触发定位技术。

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

  5. 达到超时时,如果还没有可用的位置,则会出错。如果有职位空缺,鉴于框架 遵循尽力而为的模型,此Geoposition 精度较低 此时可以返回应用程序所需的内容。该应用程序可以 决定信息是有用还是丢弃。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-21
    • 1970-01-01
    • 1970-01-01
    • 2013-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多