【问题标题】:Stopping GeoCoordinateWatcher After Accurate Location Has Been Found找到准确位置后停止 GeoCoordinateWatcher
【发布时间】:2012-04-15 18:48:57
【问题描述】:

GeoCoordinateWatcher 类允许我不断更新用户当前位置。 WatcherOnPositionChanged 事件将同时引发

  1. 找到初始位置
  2. 提高了准确性
  3. 用户实际移动超出了定义的阈值

我需要尽可能准确地找到用户的位置,然后有效地停止观察者而忽略用户是否在移动。但是,似乎没有办法消除最后两种类型的更新。

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

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

尽可能准确地找到用户位置,然后关闭观察者的最佳方法是什么?

【问题讨论】:

    标签: windows-phone-7 geolocation


    【解决方案1】:

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

    【讨论】:

    • 这还不够。 GPS没有继续改进。它改善到一定程度,然后停止。有时这是一个 ~6/6 米的精度,有时它的精度要低得多。因此,如果我等待高精度,我可能会永远等待。
    • 然后启动一个后台线程,让它在你准备好等待的时候休眠。在那之后,如果您仍然没有足够精确的位置,请选择最后一个。我不相信有一种方法可以预测 GPS 是否能够进行精确定位,我不知道这怎么可能。
    猜你喜欢
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多