Клуб API Карт

Деление маршрута на отрезки

andrej.kaktus312
25 сентября 2012, 23:26

Доброго времени суток!

Задача состоит в следующем: необходимо проложенный маршрут между двумя городами разделить на участки определённой длины, скажем 1 км, и поставить метку.

Решение пока идёт по следующей схеме:

1.делим маршрут на пути->для каждого пути определяем составляющие его сегменты

2.получаем координаты начала и конца сегмента

3.определяем расстояние между точками с помощью getLength(), после чего суммируем с длиной предыдущего сегмента... Если длина суммы сегментов больше 1 км, например, 1,3км,то нужно поставить точку на маршруте на расстоянии в 300 м от конечной.

Вот тут вопрос, как найти координаты этой точки и/или проверить принадлежность какой-либо точки заданному маршруту/пути/сегменту?

Изучение документации наталкивает на мысль, что решение задачи пока не возможно... Надеюсь на помощь в решении задачки

4 комментария
Подписаться на комментарии к посту

Можно задать вопрос - зачем.

Самый простой вариант - развернуть ответ маршрутизатора до конечных сегментов(getPath\getSegment\getCoordinates), склеить в одну очень большую геометрию типа "линия"

Далее у нас векторная задача: берем первые две точки из этой геометрии, считаем расстояние, сдвигаемся вперед...

Если требуемое расстояние превышено откатываем нашу точку немного назад по последнему вектору направления.

Забудьте про JS и АПИ карт. Школьная задачка, и делать ее ручками придется.

 

А как проверить принадлежность? У segment есть geometry у которой данная функция есть.

Вам остается найти сегмент у которого данная функция вернет минимальный distance(и при этом не в километре от линии)

Можете вообще не работать с сегментами, чтобы определять расстояние, это не обязательно.

Берете геометрию пути path.geometry, у нее есть геокоординаты, и начинаете по ним пробегаться, вычисляя и суммируя растояние между соседними точками через coordSystem.geo.getDistance Когда сумма будет больше 1 км возвращаетесь на предыдущую точку и добавляете к ней такой вектор, чтобы расстояние получилось равным 1км (это геометрия за 6й класс). Дальше продолжаете пробегаться по массиву начиная с найденной точки.

Берете геометрию пути path.geometry

ты про getPaths().geometry?

у меня возвращает null


path = route.getPaths().get(0)

тренируй телепатию ;)