четверг, 10 июля 2014 г.

Yandex Maps API. Установка и определение маршрутов

В этой статье я опишу два вида работы с маршрутами. 1 - автоматическая прокладка маршрута между двумя точками на карте. 2 - ручная прокладка маршрута с помощью линии.

Автоматический маршрут


Воспользуемся стандартной функцией прокладки маршрута:
var start_point = [56, 37];
var end_point = [57, 39];
ymaps.route([start_point, end_point], {
 mapStateAutoApply: true,
 avoidTrafficJams: false,
 multiRoute: false,
 routingMode: "auto",
 viaIndexes: []
}).then(function (route) {
 var points = route.getWayPoints();  
 points.get(0).properties.set('balloonContent', '');
 points.get(1).properties.set('balloonContent', 'Дистанция: '+route.getHumanLength()+'
Продолжительность: '+route.getHumanTime()); points.get(0).properties.set('iconContent', 'А'); points.get(1).properties.set('iconContent', 'Б'); map.geoObjects.add(route); }, function (error) { // Ошибка error.message });

start_point - Координаты или адрес точки начала маршрута
end_point - Координаты или адрес точки конца маршрута
mapStateAutoApply - Автоматически позиционировать карту
avoidTrafficJams - Включает построение маршрута с учетом пробок. При использовании опции учитывайте, что объезд пробок не всегда возможен.
multiRoute - Позволяет строить мультимаршруты.
routingMode - Тип маршрутизации для мультимаршрутов (auto - автомобильная маршрутизаци, masstransit - маршрутизация с использованием общественного транспорта)
viaIndexes – Индексы транзитных точек мультимаршрута.




Ручной маршрут


Свой маршрут можно проложить с помощью линии (polyline), но учтите, что линия не будет обращать внимания на дороги и вообще возможность пройти по указанному маршруту.
var poly = new ymaps.Polyline([[56, 37], [57, 37], [57, 38], [55, 38]], {
 hintContent: "Ломаная линия",
 balloonContent: ""
}, {
 cursor: "pointer",
 draggable: true,
 hasBalloon: true,
 hasHint: true,
 interactiveZIndex: false,
 opacity: 1,
 openBalloonOnClick: true,
 openEmptyBalloon: false,
 openEmptyHint: false,
 openHintOnHover: true,
 strokeColor: '#000000',
 strokeOpacity: 0.8,
 strokeStyle: '',
 strokeWidth: 5,
 syncOverlayInit: false,
 visible: true
});
map.geoObjects.add(poly); 
map.setBounds(poly.geometry.getBounds());
poly.editor.startEditing(); 
poly.editor.startDrawing(); 

hintContent - содержимое всплывающей подсказки ломаной
balloonContent - содержимое балуна ломаной
cursor - Вид курсора над ломаной
draggable - Определяет возможность перетаскивания ломаной
hasBalloon - Определяет наличие поля balloon у ломаной
hasHint - Определяет наличие поля hint у ломаной
interactiveZIndex - Включает режим автоматического изменения z-index ломаной в зависимости от ее состояния.
opacity - Прозрачность
openBalloonOnClick - Определяет, показывать ли балун при щелчке на ломаной.
openEmptyBalloon - Определяет, показывать ли пустой балун при щелчке на ломаной.
openEmptyHint - Определяет, показывать ли пустой хинт при наведении указателя мыши на ломаную.
openHintOnHover - Определяет, показывать ли хинт при наведении указателя мыши на ломаную.
strokeColor - Цвет линии или обводки
strokeOpacity - Прозрачность линии или обводки
strokeStyle - Стиль линии или обводки
strokeWidth - Толщина линии или обводки
syncOverlayInit - Включает синхронное добавление оверлея на карту. По умолчанию добавление оверлея осуществляется асинхронно, что позволяет предотвратить зависания браузера при добавлении на карту большого числа ломаных. Однако, асинхронное добавление не позволяет получать доступ к оверлею сразу после добавления ломаной на карту.расстановка стрелок через каждые n пикселей марштура
visible - Определяет видимость ломаной

Для завершения редактирования и рисования линии используйте функции:
poly.editor.stopEditing(); 
poly.editor.stopDrawing();

Чтобы получить актуальный массив с координатами всего маршрута воспользуйтесь этим кодом:
var points = poly.geometry.getCoordinates();




На этом я закончу статьи по Yandex Maps. До тех пор пока не появятся запросы на описание каких-либо пропущенных мною функций.


Комментариев нет:

Отправить комментарий