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

3
在Windows Phone应用程序中,我可以通过以下方式获取地理位置信息:
Geoposition geoposition = await geolocator.GetGeopositionAsync(
            maximumAge: TimeSpan.FromMinutes(5),
            timeout: TimeSpan.FromSeconds(10));

如果我理解正确,maximumAge指的是地理位置可以被缓存并且最多可以保持5分钟。

我可以使用这个“内置缓存”吗?当我的应用程序启动时,我可以使用带有maximumAge参数2(分钟)的GetGeopositionAsync(...)函数来获取新鲜的地理位置信息,而不需要实际使用该地理位置信息。

在应用程序后期,当我真正需要位置信息时,我再次调用GetGeopositionAsync(...)函数,但这次将maximumAge设置为10(分钟)。现在,我应该会得到缓存的值(如果它仍然有效,基于maximumAge)了吧?

这是否有意义?如果这按照我的预期工作,我就不需要构建自己的地理位置信息缓存系统了。


你为什么要首先缓存位置,是担心性能问题吗? - Neil Turner
基本上只是为了记录获取用户位置所需的时间。 - devha
1个回答

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. 标识缓存的"Geoposition"是否满足年龄和所需准确性,如果满足,则立即返回。 3. 基于所需精度触发定位技术。 4. 当符合所需精度时,返回"Geoposition"。 5. 当超时到达时,如果还没有位置可用,则出错。如果有一个位置可用,鉴于框架遵循最佳努力模型,这个精度比应用程序期望的低的"Geoposition"可以在此时返回。应用程序可以决定信息是否有用或者将其丢弃。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接