Клуб API Карт

Найдено на тему «Мультимаршрут»:
Несколько независимых мультимаршрутов на одной карте?
seoperin
1 ноября 2017, 12:35

Как можно разместить несколько независимых мультимаршрутов на одной карте?

Примерно как на скрине

5 комментариев
маршруты,Мультимаршрут,маршрутизатор
Маршрут не виден целиком
Be0cca
31 октября 2017, 13:46

Есть карта с автомобильным маршрутом из точки А в точку Х и кнопкой. При активации кнопки маршрут меняется на пешеходный из точки В в точку Х, а при деактивации кнопки - маршрут возвращается в исходное состоянии.

Проблема в том, что при активации кнопки, часть пешеходного маршрута становится не видна. Как сделать так чтобы при изменении маршрута, изменялись границы карты и маршрут умещался целицом?

Пробовал вставлять в обработчик собития кнопки (нашел в одном из ответов в другой теме). 

myMap.setBounds(multiRoute.getBounds(), {checkZoomRange:true});

Но такая конструкция работает как-то не корректно. Сначала сдвигается карта, а потом рисуется маршрут и получается что оба маршрута и пешеходный и автомобильный становятся частично не видны...

Код скрипта:

ymaps.ready(function () {
    // Задаём точки мультимаршрута.
    var pointA = [57.357517, 37.594334], // Стадион
		pointB = [57.352960, 37.589776], // Вокзал
        pointX = "Кашин, улица Вонжинская, 2",
        /**
         * Создаем мультимаршрут.
         * @see https://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/multiRouter.MultiRoute.xml
         */
        multiRoute = new ymaps.multiRouter.MultiRoute({
            referencePoints: [
                pointA,
                pointX
            ],
            params: {
                //Тип маршрутизации - автомобильная маршрутизация.
                routingMode: 'auto'
            }
        }, {
			// Позволяет скрыть иконки путевых точек маршрута.
			wayPointVisible:false,
			
            // Автоматически устанавливать границы карты так, чтобы маршрут был виден целиком.
            boundsAutoApply: true
        });

    // Создаем кнопку.
    var changePointsButton = new ymaps.control.Button({
        data: {content: "Как пройти"},
        options: {selectOnClick: true}
    });

    // Объявляем обработчики для кнопки.
    changePointsButton.events.add('select', function () {
		//myMap.setBounds(multiRoute.getBounds(), {checkZoomRange:true});
        multiRoute.model.setReferencePoints([pointB, pointX]);
		multiRoute.model.setParams({routingMode: 'pedestrian'}, true);
		changePointsButton.data.set({content: 'Как проехать'});
    });
	
    changePointsButton.events.add('deselect', function () {		
		//myMap.setBounds(multiRoute.getBounds(), {checkZoomRange:true});
        multiRoute.model.setReferencePoints([pointA, pointX]);
		multiRoute.model.setParams({routingMode: 'auto'}, true);
		changePointsButton.data.set({content: 'Как пройти'});
    });

    // Создаем карту с добавленной на нее кнопкой.
    var myMap = new ymaps.Map('YMapsID', {
        center: [57.358381, 37.613440],
        zoom: 12,
        controls: [changePointsButton]
    }, {
        buttonMaxWidth: 300
    });
	
	// Отключаем масштабирование карты колесиком мыши
	myMap.behaviors.disable('scrollZoom'); 
	
    // Добавляем мультимаршрут на карту.
    myMap.geoObjects.add(multiRoute);
});

Ссылка на исходники

7 комментариев
карта,Мультимаршрут,API 2.1
Маршрут из панели маршрутов
ch2102
25 сентября 2017, 06:03

Я чесно искал и не нашёл решения, возможно его нет, или я пропустил банально какую-то срочку в документации. Можно ли как-то получить мультимаршрут и желательно эвент о его построении если использовалась стандартная панели маршрутизации? Спасибо.

8 комментариев
панель маршрутов ,Мультимаршрут
Мультимаршрут - как отключить балун при нажатии на маршрут
rarescrap
24 августа 2017, 06:57
Этот балун нужно отключить


Здравствуйте. Существует ли способ отключить балун на карте выше при клике на мультимаршрут? Я пробовал переопределять клик по нему, дабы он ничего не делал, но это не сработало.

multiRoute.events.add("click", function(){
    // Ничего не делаем
});

Весь JS карты:

function init () {
	/**
	 * Тестовый массив с метками адресов
	 */
	var arr = new Array();
	for(var i=0; i<window.getDataJSInterface.getRoutePointsNumber(); i++){
	    arr[i] = new Array();
	    arr[i][0] = window.getDataJSInterface.getRoutePointCoord(i, 0);
	    arr[i][1] = window.getDataJSInterface.getRoutePointCoord(i, 1);
	  }
	
    /**
     * Создаем мультимаршрут.
     * Первым аргументом передаем модель либо объект описания модели.
     * Вторым аргументом передаем опции отображения мультимаршрута.
     * @see https://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/multiRouter.MultiRoute.xml
     * @see https://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/multiRouter.MultiRouteModel.xml
     */
    var multiRoute = new ymaps.multiRouter.MultiRoute({
        // Описание опорных точек мультимаршрута.
        referencePoints: arr
    }, {
        // Автоматически устанавливать границы карты так, чтобы маршрут был виден целиком.
        boundsAutoApply: true
    });

    // Создаем карту с добавленными на нее кнопками.
    var myMap = new ymaps.Map('map', {
        center: [55.750625, 37.626],
        zoom: 7,
        controls: ['zoomControl']
    }, {
        buttonMaxWidth: 300
    });
   
    // Ожидаем успешного построения маршрута
    multiRoute.model.events.add("requestsuccess", function(){
		window.updateDataJSInterface.updateRouteLength( multiRoute.getActiveRoute().properties.get('distance').value );
		
		// Возвращает пиздец, если расстояние огромно
		//window.console.log( multiRoute.getActiveRoute().properties.get('durationInTraffic').value );
		
		var s = multiRoute.getActiveRoute().properties.get('duration').value;
		var m = (s/60) % 60;
		window.console.log(m);
		var h = s / 3600;
		window.console.log(h);
		
		window.updateDataJSInterface.updateTripTime(h, m);
    });

    // Добавляем мультимаршрут на карту.
    myMap.geoObjects.add(multiRoute);
}

ymaps.ready(init);

Можно ли как-нибудь отлючить этот балун?

4 комментария
Мультимаршрут,балун,клик на полилинии
Как получить длину мультимаршрута?
rarescrap
21 августа 2017, 09:49

Добрый день. Я хочу научить карту прокладывать маршрут через несколько точек и отображать длину проложенного маршрута. У меня получилось машрут проложить, но с длиной возникли проблемы:
1) multiRoute.getRoutes() возвращает пустой массив
2) multiRoute.getActiveRoute() возвращет null

Я знаю, что есть пример в песочнице (https://tech.yandex.ru/maps/jsbox/2.1/multiroute_data_access), но я не могу его пока использовать т.к. multiRoute.getRoutes() ничего не возвращет.

Код карты:

function init () {
	/**
	 * Тестовый массив с метками адресов
	 */
	var adresses = [
		  [52.282071, 104.287999],
		  [52.276622, 104.316408],
		  [52.262905, 104.302418],
		  [52.225794, 104.311010]
		];
	
    /**
     * Создаем мультимаршрут.
     * Первым аргументом передаем модель либо объект описания модели.
     * Вторым аргументом передаем опции отображения мультимаршрута.
     * @see https://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/multiRouter.MultiRoute.xml
     * @see https://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/multiRouter.MultiRouteModel.xml
     */
    var multiRoute = new ymaps.multiRouter.MultiRoute({
        // Описание опорных точек мультимаршрута.
        referencePoints: [
          [52.282071, 104.287999],
  		  [52.276622, 104.316408],
  		  [52.262905, 104.302418],
  		  [52.225794, 104.311010]
        ]
    }, {
        // Автоматически устанавливать границы карты так, чтобы маршрут был виден целиком.
        boundsAutoApply: true
    });

    // Создаем карту с добавленными на нее кнопками.
    var myMap = new ymaps.Map('map', {
        center: [55.750625, 37.626],
        zoom: 7,
    }, {
        buttonMaxWidth: 300
    });
   
    // КОРЕНЬ ЗЛА!
    var a = multiRoute.model.getRoutes();

    // Добавляем мультимаршрут на карту.
    myMap.geoObjects.add(multiRoute);
}

ymaps.ready(init);

Скажите, что я делаю не так и как узнать длину мультимаршрута?

2 комментария
маршрутизатор,расчет маршрута,Мультимаршрут
Удаление балуна при построении мультимаршрута
Удалённый пользователь
13 июня 2017, 20:04

Добрый день.

При построении мультимаршрута, при клике на путевую точку, возникает балун с описанием точки и кнопкой "Подробнее", при клике на которую открывается маршрут на карте Yandex Maps. Можно ли как-нибудь убрать появление такого балуна при клике по путевой точке?

2 комментария
Мультимаршрут,балун
Изменение метки маршрута
Удалённый пользователь
25 мая 2017, 11:53

Здравствуйте. При построении маршрута по точкам (мультимаршрут) путевые точки отображаются в виде меток с буквами латинского алфавита (A, B, C и т.д.). Можно ли сделать так, чтобы метки были с цифрами (1, 2, 3 и т.д.)?

2 комментария
Метки,Мультимаршрут,Путевые точки
Как отследить переход с активного маршрута?
fuel.savings
22 октября 2016, 04:49

Подскажите пожалуйста.

Как отследить переход с активного маршрута на неактивный, чтобы собственный макет тоже менялся. То есть при построении мультимаршрута от точки А до Б выдаётся три варианта маршрута и автоматически выбирается активным более оптимальный, и у меня создаётся свой макет балуна, но когда я меняю активный маршрут на другой из предложенных мне яндексом, то макет остается прежним т.к. я не могу отследить переход от активного. В макете у меня так же указаны: Время в пути, протяженность и тд.. Перерыл весь интернет ничего из примеров я не нашел. Я не силен в js и если можно объясните на примерах. Заранее всем большое спасибо.

3 комментария
мультимаршрут
Прокладка пешеходных маршрутов
AbushkevichGrisha
18 мая 2016, 14:46

Уже умеем считать маршруты для обычного транспорта на >1000 точек. Но встал вопрос для прокладки маршрута для велосипеда. Хотим для этого использовать пешеходные маршруты, появились ли API методы для пешеходных маршрутов? 

1 комментарий
мультимаршрут
Построение маршрута
Максим М.
5 ноября 2014, 11:11

версия 2,1 в песочнице https://tech.yandex.ru/maps/jsbox/2.1/router

1) как убрать все точки и сам маршрут? myMap.geoObjects.remove(route); почему то не сработал.

2) есть ли возможность выстроить 2 маршрута? как тут https://tech.yandex.ru/maps/jsbox/2.1/create_multiroute или в мультимаршруте сделать вывод как тут https://tech.yandex.ru/maps/jsbox/2.1/router

6 комментариев
мультимаршрут,API 2.1