Рисуем ломаные на Yandex.карта — API 2.1
Всем привет. Сегодня хотел бы поделиться идеями по рисованию нескольких ломаных в Yandex.map v.2.1.
Много писать не буду приведу просто куски кода, так как основная информация изложена на официальном сайте Yandex в разделе API, как эти ломаные рисовать. Так как на оффсайте предложено решение для рисования 1 ломаной, а если у нас несколько маршрутов (в БД) и как их изобразить на 1 карте, это часто создает вопросы.
Ну думаю можно приступить.
1) Устанавливаем карту:
// Установка для карты ее центра и масштаба var myMap = new ymaps.Map('YMapsID', { // При инициализации карты обязательно нужно указать // её центр и коэффициент масштабирования. center: [55.76, 37.64], // Центр карты - Москва controls: ['zoomControl', 'searchControl', 'typeSelector', 'fullscreenControl'], // контролы для управления карты zoom: 7 // Масштаб карты, приближение });
2) Устанавливаем опции ломаных:
// Свойства и опции для ломаной линии для API Ya.map 2.1 var properties = { hintContent: "Ломаная линия" }; var options = { draggable: true, strokeColor: '0404B4ff',// Цвет где код цвета 0404B4, ff - прозрачность strokeWidth: 2 // Толщина ломаной в пикселах };
3) Допустим у нас есть 10 маршрутов, которые надо нарисовать, ну и перебираем все маршруты в цикле:
/* var geocoordinats = Array(); var geocoordinats = [ [55.80, 37.50], // Массив координат вершин 1 ломаной линии (1 маршрут) [55.80, 37.40], [55.70, 37.50], [55.70, 37.40] ] */ ....................... for(var i=0; i<routes.length; i++){ // routes (Массив всех наших маршрутов) myPolyline = new ymaps.Polyline( geocoordinats[i], // Массив координат ломаной линий (1 маршрут) properties, options ); myMap.geoObjects.add(myPolyline); // Добавляем геообъект на карту. } ......................
Ну вот и все, как то так. Если у Вас возникли вопросы, дополнения, поправки — пишите в комментариях.
У меня получилось вот как то так.
Спасибо.
9 комментариев
кирилл
У меня не рисуются линии. мой код с циклом выглядит так:
помогите найти ошибку
Дмитрий
А Вы не смотерели вывод ошибок через Firebug, потому что тут я не вижу ошибки.
Сможете весь Ваш код показать? Я поправлю Вам код, если в нем есть ошибки 🙂
кирилл
весь код выглядит так:
Обычная карта с номерами домов
Народны карта
Гибрид карта
путь 1
путь 2
путь 3
Дмитрий
Вы забыли вызвать Ваши линии на карте, код я поправил, линии рисуются.
кирилл
Дмитрий, вы поправили код, но там нет цикла for с помощью которого вы в своем примере рисуете множество линий. Мне именно цикл и был интересен.
поясню свою проблему. Мне нужно минимальным куском кода рисовать несколько(даже много линий на карте), к примеру, есть тхт файл, каждая строка это отдельный путь, строк много 100…1000 и более. Как мне их нарисовать на карте? я так понимаю нужно считать все в массив и затем из массива рисовать, но не могу понять как это реализовать. Есть мысли?
Дмитрий
Можете мне прислать структуру вашего файла хотя бы указать 5-10 Ваших маршрутов. Постараюсь Вам код написать! Просто сам решал уже такую же задачу. Подкидываю файл скрипту, а он уже рисует мне все нужные мне маршруты. Не соврать бы, но где то 1000 маршрутов рисовал на ура. Ну вроде скрина который я привел выше в статье.
Просто дело в том, что я предполагаю что у Вас есть какое то количество машрутов (например в файле).
Цикл for я использовал для прохождения по всем маршрутам имеющимся у нас. Вы же вызывали цикл из точек только одно маршрута(одной ломаной) и естественно, у Вас ничего не рисовалось 🙂 Вот.
кирилл
Мы друг друга поняли.Все верно, к примеру, есть файл там несколько маршрутов, которые можно добавлять в файл и они будут появляться на карте. структура была представлена выше. Не имеет значения, какие маршруты будет рисовать ваш скрипт, главное чтобы рисовал. И при добавлении в файл новых координат они тоже рисовались. Было бы очень здорово получить исходник данного скрипта.
проект будет на базе CMS WordPress маршруты будут добавляться из редактора страниц в файл. расширение файла хоть .тхт . Спасибо, жду ответ.
Юлия
Добрый день, Дмитрий! Я скопировала Ваш код, но почему то у меня не получилась такая же карта как у Вас. Поможете?
Дмитрий
Здравствуйте. Что у Вас не получается? Какие то может быть ошибки?