Клуб API Карт

Названия улиц из пути

Пост в архиве.
zh00pel
22 января 2013, 19:58

Прошу помощи разобраться с выводом названий улиц.

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

Но запутался. Такое ощущение что getCoordinates() выдает не то, да и не уверен что geocode()  - правильный выбор для данной задачи.

 ymaps.route([ start, finish ]).then(
function(router) {
self._route = router.getPaths();
self._route.each(function(end) {
var coords = end.geometry.getCoordinates();
var myGeocoder = ymaps.geocode(coords,{json:true,kind: 'street', results:1,});
console.log(myGeocoder);
//console.log(end.geometry.getStreet());
});
});

 

10 комментариев
У каждого сегмента маршрута с помощью getStreet можно получить улицу.
http://api.yandex.ru/maps/doc/jsapi/2.x/ref/reference/router.Segment.xml#getStreet
http://api.yandex.ru/maps/jsbox/router

Спасибо. Ввидел.

Я неправильно сформировал мысль. 

 

Задумка такая. Есть маршрут. Если этот маршрут на своем пути пересекает или проходит по определенной улице, то выполняется условие...

Может быть для этого есть более удобная реализация?

 

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

Далее нахожу название улицы. А находить название улиц исходя из координат точек сегментов маршрута, т.е. каждая точка проверятся, расположена ли она на этой улице или нет.

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

Ясно. Но насколько мне кажется задача с проверкой, пересекает ли (или проходит по) улицу маршут должа быть достаточно тривиальна. Может быть подскажете в какую сторону думать? :)

Если речь идёт о конкретной улице - руками собрать её координаты и проверять пересечение.

 

проверять пересечение.

Не могли бы чуть конкретнее? Для этого есть какой-то функционал в API?

Нет, но это легко решается простым перебором.

:)))) Но перебором чего? Сегментов? Координат? И перебирать в сравнении с чем?

Отрезков ломаных.
У вас есть одна ломаная - геометрия вашей улицы - и вторая ломаная - геометрия маршрута (или набор ломаных, если путевых точек больше 2). Нужно перебрать попарно все отрезки и проверить, не пересекаются ли они.
Геометрию i-й ломаной маршрута можно получить из route.getPaths(i).geometry.getCoordinates()

Теперь понял. Спасибо за помощь.