В CoreLocationManager
вы можете установить desiredAccuracy
на номер kCLLocationAccuracyBestForNavigation
. Тем не менее, GPS по-прежнему никогда не совершенен, вы можете получить от GPS-сигнала от 5 до 100 м в зависимости от качества сигнала, вида неба (каньонов, городов) и т. Д.
Еще один источник ошибок, ваши данные GPS находятся в одной и той же системе координат (например, WGS-84) в качестве карты и данных дорожной сети. Различные базы данных могут добавлять небольшие (или большие) ошибки.
Чтобы компенсировать присущую GPS и ошибку при сопоставлении, большинство приложений навигации по очереди используют то, что мы называем «привязкой к дороге». Мы подсчитываем, к каким дорогам находится пользователь, и если местоположение GPS находится в пределах 30 м (см. Примечание 1) дороги. И курс (или заголовок, примечание2) находится в пределах +/- 25 градусов дорожного направления, ТОГДА мы «привязываемся» к дорога. Это означает, что мы меняем местоположение и заголовок отображаемой точки местоположения так, чтобы он показывал, что пользователь находится точно в дороге (вычислите ближайшую точку на дороге от точки GPS) и направляйтесь вдоль дорожного пути (выберите заголовок дороги, который ближе всего). Для этого требуются подробные данные о геометрии дороги, включая кривые и некоторые веские расчеты, но она работает очень хорошо, как только вы ее получите.
Если они находятся дальше от дороги или не совпадают с дорожным заголовком, тогда мы показываем их фактическое местоположение GPS. Это работает очень хорошо, но для этого требуется, чтобы у вас была геометрия дорожной сети (или, по крайней мере, ее маршрут к геометрии назначения), чтобы вы могли выполнить эти проверки.
Примечание1: мы выбираем допуски, основанные на сообщенном horizontalAccuracy
, из CLLocation
, который мы получаем.
Примечание2: мы смешиваем заголовок (курс исправления) и курс (из GPS), чтобы определить фактический заголовок пользователя. Ниже примерно 8 км/ч мы преимущественно используем заголовок компаса, выше которого мы в основном используем курс GPS (его более точный). Мы также курс GPS, чтобы определить ошибку компаса, чтобы исправить это.Это позволяет нам показывать точные заголовки, даже когда они останавливаются на свету или на очень медленных скоростях парковки.
теперь я использую карты Google Maps SDK для ios .... с его доступным api я не могу реализовать привязку к функциональности дороги ... что бы вы посоветовали мне ... я должен использовать openstreetsmap, карту apple, mapquset ! ?? где я должен начать – homam