Реализация пошаговой навигации в Android с помощью Mapbox SDK

Я пытаюсь реализовать пошаговую функцию в своем приложении с помощью Mapbox Android SDK. Хотя в Mapbox в качестве продукта указан Drive, я не могу найти никакой документации / примеров о том, как использовать его (возможно, они все еще над этим работают).

В любом случае, думаю, мне нужно построить его самому. Получение координат направления и рисование ломаных линий - все в порядке. Я застрял здесь - в ответе api направления Mapbox у нас есть объект steps json, который содержит пошаговые инструкции. Допустим, есть 3 точки под объектом steps, например A, B, C, где

  • A = lat1, lng1 (исходная точка)
  • B = lat2, lng2
  • C = lat3, lng3 (пункт назначения)

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

lat1 == lat2 && lng1 == lng2

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

Заранее спасибо :)


person ik024    schedule 21.11.2016    source источник


Ответы (1)


Возможно, вы захотите изучить наш _ 1_. Он включает в себя основные строительные блоки, необходимые для навигации (мы над этим работаем!). Под капотом мы используем порт Turf на Java для выполнения всех вычислений ГИС.

В вашем случае вы можете, например, использовать что-то вроде getSnapToRoute(), чтобы приблизить точку на шаге к местоположению пользователя, чтобы вычислить, как далеко вы от следующего поворота.

person zugaldia    schedule 23.11.2016
comment
Спасибо за ответ. Хорошо, вот что вернет getSnapToRoute (), когда мы пересечем точку. Возвращаемое значение метода - Position. Вернет ли он нуль ?? Просто пытаюсь понять. - person ik024; 24.11.2016
comment
Вы всегда должны получать Position, возвращаемый этим методом. - person cammace; 28.11.2016