Клуб API Карт

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

Пост в архиве.

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

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

Но запутался. Такое ощущение что 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 комментариев
Sergey Konstantinov
28 января 2016, 02:49
У каждого сегмента маршрута с помощью getStreet можно получить улицу.
http://api.yandex.ru/maps/doc/jsapi/2.x/ref/reference/router.Segment.xml#getStreet
http://api.yandex.ru/maps/jsbox/router
Андрей Грэй
28 января 2016, 02:49

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

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

 

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

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

 

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

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

Sergey Konstantinov
28 января 2016, 02:49
Нет, такой возможности нет. Геокодировать все улицы, которые пересекает маршрут, весьма накладно.
Андрей Грэй
28 января 2016, 02:49

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

Sergey Konstantinov
28 января 2016, 02:49
Если речь идёт о конкретной улице - руками собрать её координаты и проверять пересечение.
Андрей Грэй
28 января 2016, 02:49

 

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

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

Sergey Konstantinov
28 января 2016, 02:49
Нет, но это легко решается простым перебором.
Андрей Грэй
28 января 2016, 02:49

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

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

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