2016-04-11 7 views
0

Я создаю приложение iOS с помощью MapKit и CoreLocation. Я могу получить текущее местоположение пользователя, позвонив по телефону:Проверьте, действительно ли движется пользователь

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

Благодаря

+0

Как вы начинаете пользоваться Location Manager Service? – Abizern

+0

см. Мои изменения :) –

+0

Попробуйте использовать [startMonitoringSignificantLocationChanges()] (https://developer.apple.com/library/ios/documentation/CoreLocation/Reference/CLLocationManager_Class/#//apple_ref/occ/instm/CLLocationManager/startMonitoringSignificantLocationChanges) вместо 'startUpdatingLocation()' – Abizern

ответ

0

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

например. location.distanceTo(prevLocation) > 3.

Также см. CLLocation.horizontalAccuracy и CLLocation.verticalAccuracy.

Обратите внимание, что местоположение часто рассчитывается на основе GPS и спутники GPS также перемещаются.

Другой вариант - проверить скорость location.speed > X, где X - некоторое ненулевое значение (опять же, это не очень безопасно проверять на нуль).

+0

Не мог ли downvoter прокомментировать? – Sulthan

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