Клуб API Карт

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

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

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

5 комментариев
маршруты,Мультимаршрут,маршрутизатор
Как получить длину мультимаршрута?
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 комментария
маршрутизатор,расчет маршрута,Мультимаршрут
Ограничение на количество и/или частоту обращения к маршрутизатору
Роман В.
5 мая 2017, 22:51

Здравствуйте!

Имеется ли какое-либо ограничение на количество запросов к маршрутизатору, кроме 25000 в сутки для бесплатной версии js-API?

В моём проекте происходит построение большого количества маршрутов за раз, однако  больше 1147 маршрутов (год основания Москвы? ;)) ни разу не удавалось получить за  раз. При этом при повторном подключении маршруты снова строятся, но на каком-то моменте сервер перестает отвечать. Пробовал вводить таймауты и кликать руками — всё равно упираюсь в какой-то предел, 1147 или меньше.

Если убрать воду, то мой код выглядит следующимо бразом:

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

function init () {

	var targetCoords = [55.848527, 37.583103],

	myMap = new ymaps.Map('map', {
	    center: targetCoords,
	    zoom: 11
	}, {
	    searchControlResults: 1,
	    searchControlNoCentering: true
	}),

	currentRoute,
	sourceCoordsArr,
	targetPoint;

	routesArr = [];
	var sourceCoordsArrLength;
	myMap.events.add('click', onMapClick);

    function evalRoute(source, target){
    	var currentRoute = new ymaps.multiRouter.MultiRoute(
    	{
    		referencePoints: [source, target],
    		params: { routingMode: 'masstransit'},
    	});

    	currentRoute.events.add("activeroutechange", function (event) {
    		var routes = currentRoute.getRoutes();
    		for (var i = 0; i<routes.getLength(); i++){
				// some code
    		}

	    	routeArr.push(route);	
	    	console.log('' + getCurrentTime() + '\t' + routeArr.length+' ' + route);

	    	if(routeArr.length == sourceCoordsArrLength){
	    		// some code
	    	}
	    	else{
	    		evalRoute(sourceCoordsArr[sourceCoordsArrIndex++], targetCoords);
	    		console.log('' + getCurrentTime() + '\t' +sourceCoordsArrIndex+' waitig..');
	    	}
		});
    }

    function evalCoordinates(targetCoords){
 		// some code
 		return sourceCoordsArr;
    }

    function onMapClick (e) {
    	metricArr = [];
	    clearTargetPoint();
	    targetCoords = e.get('coords');
	    targetPoint = new ymaps.Placemark(targetCoords, { iconContent: '' }, { preset: 'islands#blueCircleIcon' });
	    myMap.geoObjects.add(targetPoint);

	    // Generate source coordinates
	    sourceCoordsArr = evalCoordinates(targetCoords);
	    sourceCoordsArrLength = sourceCoordsArr.length;
	    
	    str = '' + sourceCoordsArrLength + ' точек';

	    evalRoute(sourceCoordsArr[sourceCoordsArrIndex++], targetCoords);
	}
}
ymaps.ready(init);

6 комментариев
маршрутизатор,маршрутизация,Ограничения API
Странно строятся маршруты в Уссурийске
(CDC)
5 мая 2017, 11:06

Мы используем платное API и наш клиент жалуется, что по Уссурийску маршруты строятся несколько странно.

Тут с ним сложно не согласиться. Вот типичный пример, который можно проверить в песочнице:

ymaps.ready(init);
function init() {
    var myMap = new ymaps.Map("map", {
            center: [43.76, 131.8],
            zoom: 9
        });
    ymaps.route([
        [43.83, 131.63],
        [43.8, 131.6],
        [43.76, 132]
    ]).then(function (route) { myMap.geoObjects.add(route); });
}

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

Что это?

Кривой граф дорог? Не выставлены какие-то параметры маршрутизации?

Как нам избежать такой ситуации?

1 комментарий
маршрутизация,маршрутизатор,расчет маршрута
Как получить населенные пункты и города по пути следования маршрута?
Удалённый пользователь
23 декабря 2016, 13:36

Всем привет!

Подскажите ка решить следующую задачу, в поиске, к сожалению ничего не нашел.

Например, имеется маршрут Москва -Спб, как полчить список городов и населенных пунктов(название населенного пункта/города, координаты):

а) находящихся по пути следования маршрута
б) находящиеся на удалении в 5 км(радиус) от маршрута.

Заранее спасибо за помощь!

5 комментариев
маршрутизация,маршрутизатор
Использование CSP, интерактивные маркеры объектов и другие возможности новой версии API Карт
Maps API
26 октября 2016, 12:46

Начиная с версии 2.1.44, в API появились настройки для работы с использованием CSP и другие возможности, которые будут полезны как разработчикам, так и конечным пользователям.  О наиболее интересных из них речь пойдет ниже.

Подключение API при использовании CSP

Если ваш сервис использует политику защиты контента (CSP) , то вы наверняка уже задумывались, как обеспечить корректную работу API на странице. Теперь достаточно добавить параметр 'csp=true' при подключении API и настроить правила, как описано в нашей документации.

https://api-maps.yandex.ru/2.1/?lang=ru_RU&csp=true

Интерактивные маркеры POI на подложке

Points Of Interest или POI - это маркеры на подложке карты, которые обозначают наиболее значимые или заметные объекты и помогают ориентироваться на схеме. Это могут быть как организации, так и, например, достопримечательности.
Теперь точки POI на карте стали интерактивными - при нажатии откроется карточка с информацией об объекте. А если хочется узнать больше, прямо из карточки можно перейти на Яндекс.Карты.

Если по каким-то причинам интерактивность подложки не нужна в вашем проекте, её можно отключить.

Новые балуны маршрутов

Информация о маршруте стала более подробной  - вид транспорта, пересадки и время в пути наглядно представлены в стандартном балуне. Также в нем появился умный блок «Открыть в Яндекс.Картах», который позволит узнать дополнительные детали о маршруте или изменить его при необходимости.

Управление с клавиатуры в плеере Панорам

В плеере Панорам появилась поддержка горячих клавиш, достаточно включить опцию 'hotkeysEnabled' . С помощью клавиатуры можно, например, перемещаться между сценами и менять направление взгляда.

Подробнее о возможностях новых версий читайте в ChangeLog.

Команда разработки API Яндекс.Карт

новости,POI,панорамы,балун,маршрутизатор,CSP,API 2.1
Поиск точки на маршруте по пройденному расстоянию.
vvnab
15 июня 2016, 10:47

Здравствуйте.

Возникла задача поиска точки на маршруте по пройденному расстоянию.
Т.е. есть известный маршрут, есть показания одометра от начальной точки и нужно найти координаты места/точки на маршруте.

Если кто сталкивался, подскажите, пожалуйста, решение.

1 комментарий
маршрутизация,маршрутизатор,расчёт расстояния,измерение расстояний,расстояние
Маршрутизация без карты
gevmarlen
16 октября 2015, 23:41

Не смог самостоятельно разобраться и найти ответ, можно ли с помощью API Карт получить длину маршрута между двумя адресами, прописаными просто в двух input, которые я сам произвольно на станице разместил?

3 комментария
маршрутизация,маршрутизатор
Маршруты с обновленным дизайном
denis.sergei4
25 июня 2015, 10:04

Есть ли возможность с помощью API выставить полный аналог текущего функционала кнопки Маршруты в новом дизайне (весна 2015)? 

(Дизайн кнопок и списков, адреса точек, добавление точек, описание движения маршрута, расчет с пробками, варианты маршрутов). 

Или единственный способ нанизывать весь функционал друг за другом и верстая собственные стили оформления?

7 комментариев
API 2.1,элементы управления,маршрутизатор,контролы