2012-04-15 4 views
2

Класс GeoCoordinateWatcher позволяет постоянно обновлять текущее местоположение пользователей. WatcherOnPositionChanged событие будет поднят как приОстановка GeoCoordinateWatcher после точного определения местоположения

  1. Первоначальное место находится
  2. точность повышается
  3. пользователь физически перемещается за пределы определенного порога

мне нужно, чтобы найти положение пользователей насколько это возможно, а затем остановить наблюдателя, эффективно игнорируя, движется ли пользователь. Однако, похоже, не существует способа погасить последние два типа обновлений.

На ум приходит несколько подходов. Первое обновление - это всегда кеш с последнего использования GPS, второе - неточное предположение, а третье - окончательное точное местоположение (по крайней мере, на моем устройстве). В зависимости от того, что это правда для всех устройств, в лучшем случае кажется ненадежным. Другой подход может заключаться в том, чтобы дождаться фиксированного количества времени, прежде чем оседать на место. Например, подождите 10 секунд, а затем возьмите последнее место.

Мой первый подход состоял в том, чтобы обновлять и отображать данные каждый раз при изменении местоположения. Однако это было очень сложно по двум причинам. Место меняется несколько раз за первые несколько секунд, а во-вторых, когда позиция пользователя менялась быстро, то есть при сидении в движущемся автомобиле загрузка стала бы очень раздражающей.

Каков наилучший способ найти местоположение пользователя как можно точнее, а затем отключить наблюдателя?

ответ

1

На объекте GeoCoordinate, который вы получаете от GeoCoordinateWatcher, есть два свойства: VerticalAccuracy и HorizontalAccuracy, которые дают ошибку magin в метрах. Просто игнорируйте координаты, пока свойства точности не будут достаточно низкими для ваших нужд.

+0

Этого недостаточно. GPS не продолжает улучшаться. Он улучшается до некоторой точки, а затем останавливается. Иногда это достигается с точностью до 6/6 метров, иногда с гораздо меньшей точностью. Поэтому, если я буду ждать высокой точности, я могу ждать всегда. –

+0

Затем запустите фоновый поток и заставьте его спать столько же времени, сколько вы готовы ждать. После этого времени, если у вас все еще нет достаточно точной позиции, возьмите последний. Я не верю, что есть способ предсказать, сможет ли GPS иметь точное исправление или нет, я не понимаю, как это будет возможно. –

Смежные вопросы