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

C# Windows Phone 8地理定位器缓存位置,c#,caching,windows-phone-8,geolocation,C#,Caching,Windows Phone 8,Geolocation,在Windows Phone应用程序中,我得到如下地理位置: Geoposition geoposition = await geolocator.GetGeopositionAsync( maximumAge: TimeSpan.FromMinutes(5), timeout: TimeSpan.FromSeconds(10)); 如果我理解正确,maximumAge意味着该位置可以缓存,最长5分钟 我可以使用这种“内置缓存”吗?这样,当我的应

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

Geoposition geoposition = await geolocator.GetGeopositionAsync(
            maximumAge: TimeSpan.FromMinutes(5),
            timeout: TimeSpan.FromSeconds(10));
如果我理解正确,maximumAge意味着该位置可以缓存,最长5分钟

我可以使用这种“内置缓存”吗?这样,当我的应用程序启动时,我可以使用GetGeopositionAsync(…)和maximumAge(例如2(min))来获取新的Geopositin,而不需要实际使用geoposition

稍后在应用程序中,当我实际需要位置时,我再次调用GetGeopositionAsync(…),最大值为10(min)。现在我应该获取缓存的值(如果基于maximumAge它仍然有效)


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

是的,这是正确的。一篇MSDN博客文章()解释了使用
MaximumAge
的缓存非常好:

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

例如,如果应用程序将
MaximumAge
设置为5分钟,则地理定位器 可以使用一个最旧的
地理位置
来满足该请求
从请求开始算起的分钟数,只要该位置
符合应用程序规定的精度要求

请注意,
地理定位器
将始终采用以下顺序 满足请求的步骤:

  • 请求已启动

  • 确定缓存的
    地理位置是否满足年龄和所需精度,如果满足,立即返回

  • 基于期望精度的触发定位技术

  • 当满足所需精度时,返回一个
    地理位置

  • 当达到超时时,如果没有位置可用,则出错。如果有职位,考虑到框架 遵循尽力而为的模型,此
    地理位置的精确度较低
    此时可以返回应用程序所需的数据。该应用程序可以
    决定该信息是有用的还是废弃的


  • 首先,你为什么要缓存位置,你担心性能吗?是的,基本上只是为了保持时间来降低用户位置。