0

我的Wp7(芒果)应用程序需要知道用户的位置才能搜索数据库中最近的对象。但是我想在欢迎屏幕上显示结果,所以我需要尽快找到我的位置。我写了一个代码,开始GeoCoordinateWatcher(在高精度和最小的阈值),并在第一次发射停止它,并将位置发送到Web服务,它返回有问题的对象。GeoCoordinateWatcher需要多少次火灾?

在我测试之后,我去了现场,到镇的另一边。我开始了它,并为大家的娱乐表现出了完全错误的结果 - 我知道为什么:它仍然认为我在家!

要更新GPS需要多长时间? 我怎么知道我终于得到了我目前的位置?在停止之前我应该​​允许GeoCoordinateWatcher发射多少次?

回答

3

退房这里的答案:

http://awkwardcoder.blogspot.com/2011/09/geo-location-on-wp7-dont-trust-first.html

基本上,继续要求更新,直到一个是从你开始要求它们的范围内。

in PositionChanged 

if ((DateTime.Now - e.Position.TimeStamp.DateTime) < LocationTimeout) 
    { 
     //recent enough. 
    } 
+0

这味道非常好。我会尽快结帐! – TDaver 2012-01-18 18:48:41

+0

确实!有趣的解决方案 – Ku6opr 2012-01-18 20:45:46

+0

@ Ku6opr昨天刚刚有这个确切的问题,所以这个问题是在我的舌头:) – 2012-01-18 22:49:08

0

您的StatusChanged事件用于处理旧用户位置(在家中)。当设备状态准备就绪 - 您有当前位置(但可能不准确)。因此,使用HorizontalAccuracy如果需要高精度位置;)

+0

是的,但第一个(少数)StatusChanged事件仍将包含旧位置!我如何知道它已更新? – TDaver 2012-01-18 14:25:09