2012-04-15 60 views
2

GeoCoordinateWatcher类允许我不断更新用户当前位置。该WatcherOnPositionChanged事件将提高双方在找到准确位置后停止GeoCoordinateWatcher

  1. 初始位置中找到
  2. 的精度提高
  3. 物理移动超出了定义的阈值

我需要找到用户位置的用户尽可能准确,然后停止观察者有效地忽略用户是否正在移动。但是,似乎无法熄灭最后两种更新。

想到几种方法。第一次更新始终是上次使用GPS时的缓存,第二次更新似乎是不准确的猜测,第三次更新似乎是最终准确的位置(至少在我的设备上)。根据这一点,所有设备都是如此,看起来似乎不可靠。另一种方法可能是在安置该地点之前等待一段固定的时间。例如等待10秒钟,然后取最新的位置。

我的第一种方法是每次更改位置时更新和显示数据。然而,这非常麻烦,原因有两个。位置在前几秒改变几次,其次当用户位置快速改变时,即坐在移动的汽车中时,加载会变得非常烦人。

什么是尽可能准确地查找用户位置,然后关闭监视器的最佳方法?

回答

1

在您从GeoCoordinateWatcher获得的GeoCoordinate对象上,有两个属性:VerticalAccuracy和Horizo​​ntalAccuracy,它们以米为单位给出错误magin。只要忽略坐标,直到精度属性足够低以满足您的需求。

+0

这还不够。 GPS不会继续改进。它提高到某个点然后停止。有时这是一个6/6米的精度,有时它的准确度要低得多。所以如果我等待高精度,我可能会永远等待。 – 2012-04-18 08:07:57

+0

然后启动一个后台线程,并让它休眠尽可能多的时间,因为您已准备好等待。在那之后,如果你还没有足够精确的位置,拿走最后一个。我不相信有一种方法可以预测GPS是否能够进行精确的修复,但我不明白这是可能的。 – 2012-04-18 08:11:45