Приветсвую!
На этот раз задача будет действительно сложной (но т.к. мне уже здесь не раз помогали, надеюсь что и в этот раз не обойдете помощью :) )
В общем ситуация: Задаем точки для маршрута. Но точки находятся не на проезжей части, а, например , на клумбе:
и получается вот такое косяк в виде отсутствия линии. Это мне не подходит, однако есть задача использовать именно маршруты. Ну решил поступить так: нашел пример где берутся сегменты и приспособил его под себя:
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Карта.</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><script src="http://yandex.st/jquery/1.6.4/jquery.min.js" type="text/javascript"></script><script src="http://api-maps.yandex.ru/2.0/?load=package.full&a " type="text/javascript"></script>mp;lang=ru-RU <script type="text/javascript">// Как только будет загружен API и готов DOM, выполняем инициализациюymaps.ready(init);function init () {var myMap = new ymaps.Map("map", {center:[57.931311, 34.576128],zoom:6});// Добавим на карту схему проезда от станции метро "Крылатское" до "Молодежная" и затем до станции "Кунцевская".// Полный маршрут делится на два:// Крылатское - Молодежная и Молодежная - Кунцевская.// Построим простейший маршрутный лист, помогающий проехать// по первому маршруту.//Построим полный маршрут и затем добавим его на карту.ymaps.route(['Москва, метро Крылатское', 'Москва, метро Молодежная', 'Москва, метро Кунцевская'], {mapStateAutoApply:true}).then(function (route) {myMap.geoObjects.add(route);// Получаем первый маршрут (от метро "Крылатское" до "Молодежная").var way = route.getPaths().get(0),// Маршрут состоит из сегментов. Сегмент - участок маршрута, который нужно проехать// до следующего изменения направления движения.segments = way.getSegments(),moveList = 'Трогаемся,</br>';for (var i = 0; i < segments.length; i++) {var street = segments[i].getCoordinates();var streetlen = segments[i].getCoordinates().length;moveList += (streetlen + 'Едем ' + segments[i].getHumanAction() + (street ? ' на ' + street[0] : '') + ', проезжаем ' + segments[i].getLength() + ' м.,' + [i]);moveList += '</br>'var geometry12 = [street[0], [55.756842, 37.408139]],properties12 = {hintContent: "Ломаная линия"},options12 = {strokeColor: '#000000',strokeWidth: 4,strokeStyle: '1 5'},polyline12 = new ymaps.Polyline(geometry12, properties12, options12);myMap.geoObjects.add(polyline12);}moveList += 'Останавливаемся.';// Выводим маршрутный лист$('#list').append(moveList);}, function (error) {alert('Возникла ошибка: ' + error.message);});}</script></head><body><table style="border: solid; border-color: #423189;"><tbody><tr><td style="border: solid; border-color: #423189;"><div id="map" style="width: 600px; height: 400px"></div></td><td style="padding-left: 10px; padding-top: 10px" valign="top"><div id="list"></div></td></tr></tbody></table></body></html>
Что делал: брал сегмент, находил его координаты первой точки и подставлял в координаты точки для линии. Второй точкой линии было начало маршрута (ну или его координаты)
Получилось много линий (ну это понятно я же обрабатывал точки и линии в for. И тут я понял, что зашел в тупик и не знаю что делать дальше, чтобы все такие косяки заменялись линиями... Может быть как - нибудь сделать, например когда точка начала / конца сегмента != точке начала / конца маршрута, то рисовалось бы линия от конечной точки этого сегмента до точки начала / конца маршрута... Или же когда длина сегмента вовсе = 0, то соседние точки соединять линией...В общем идей много, а в силу своего нубизма в апи карт попрбовать не имеется возможным =(
Помогите, пожалуйста довести до ума идею, уверен, что впоследствии она пригодится не только мне
P.S. Извиняйте, если написал непонятно, если что - то совсем не усваивается, распишу подробнее ...