2015-06-15 2 views
3

Я пытаюсь внедрить систему поворота в поворотах в iOS с использованием MKDirections API. Я могу получить направление маршрута и нарисовать полилинию на карте, а когда начнется навигация, приложение начнет показывать инструкции с использованием объекта MKRouteStep в массиве Steps. Теперь проблема, так как расстояние в объекте MKRouteStep это расстояние, которое пользователь охватывает во время прохождения по пути шага я не могу определить, как рассчитать это расстояние. Есть ли способ рассчитать это расстояние? В настоящее время я вычисляя расстояние между двумя координатами т.е. координатами, когда последняя команда была показана с текущим местоположением пользователя, и если это расстояние равно расстоянию, указанным в MKRouteStep я показываю следующую команду, из-за которой она затягивает инструкции, которые должны быть доставлены пользователю.Определите, когда заканчивается MKRoutestep

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

Просьба предложить, если есть какие-либо другие хорошие решения для этого. Любая помощь высоко ценится.

Спасибо.

ответ

5

Поскольку никто не ответил на мой вопрос, я отвечаю на это сам, так что он может помочь кому-то, глядя на то же самое.

Таким образом, вместо того, чтобы использовать значение расстояния MKRouteStep для вычисления, когда показывать следующую команду, мы можем использовать последнюю координату массива полилинии, предоставленную MKRouteStep. Например:

MKMapPoint mapPointForEndOfRouteStep = routeStep.polyline [routeStep.polyline.pointCount - 1];

Теперь вы можете создать область вокруг него и проверить, находится ли ваше текущее местоположение в этом регионе или нет.

+0

Привет @ Милан, спасибо вам за сообщение. Как вы, наверное, знаете, это не очень горячая тема, и я борюсь с этими направлениями. Могу ли я попросить вас опубликовать немного кода? Например, используя swift 2, я не могу создать эту переменную mapPointForEndOfRouteStep. –

+0

Что делать, если позиция пользователя не находится точно на полигоне и немного перемещена от пути, может составлять около 0,01 метра. В этом случае я предполагаю, что проверка текущего местоположения находится в этом регионе или нет, всегда будет ложной. –

+0

@milan Вы использовали мониторинг региона для этого или вы просто проверяете себя (в didUpdateLocations), если текущее местоположение пользователя находится в пределах региона? Если вы используете региональный мониторинг, как решить проблему, где может быть более 20 шагов маршрута (система ограничивает 20 контролируемых регионов). – Aodh

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