Проверить, находится ли пользователь рядом с контрольной точкой маршрута с помощью GPS

Вот ситуация:

У меня есть заранее определенный маршрут GPS, по которому будет работать пользователь. route имеет несколько контрольных точек, и пользователь должен пройти рядом со всеми из них (думайте о них как о контрольных точках в гоночной игре, которые не позволяют пользователю использовать ярлыки) .Мне нужно убедиться, что пользователь проходит через все контрольные точки.Я хочу определить область, которая будет считаться внутри радиуса контрольной точки, но я не хочу, чтобы она была просто радиальной областью, это должна быть область с учетом формы пути. Не понял? Я тоже. Посмотрите на это плохо нарисованное изображение, чтобы лучше понять: Route example

Черные линии представляют собой заранее определенный путь, синий шар - контрольную точку, а синий многоугольник - желаемую область. Зеленая линия - более точный пользователь, а красная линия - менее точный пользователь (возможно, пьяный за рулем? Lol). Обе линии должны находиться внутри многоугольника, но пользователь, полностью пропустивший маршрут, не должен.

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

Есть предложения?

РЕДАКТИРОВАТЬ:

Я рассматриваю возможность использования простой функции distanceTo (), чтобы просто нарисовать воображаемый круг и проверить, есть ли там пользователь. Это хорошо, потому что это настолько просто реализовать и понять, и плохо, потому что для того, чтобы убедиться, что наиболее ошибочный пользователь проходит через контрольную точку, мне понадобится большой радиус, чтобы правильный пользователь вошел в область контрольной точки раньше, чем ожидалось.

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

5
задан Rodrigo Castro 20 December 2011 в 03:32
поделиться