Клуб API Карт

Ограничение на количество и/или частоту обращения к маршрутизатору

vlasovspb
5 мая, 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 комментариев
Подписаться на комментарии к посту
Строить маршруты и не показывать их на карте запрещено условиями использования АПИ.
Да и 25000 вы явно превышаете с таким кодом.
dimik,
Хммм. Как разобраться с отображением маршрутов я подумаю. А 25000 каким образом превышаю , если я строю маршруты для  2000 точек?
vlasovspb,
Что за проект? Вы единственный пользователь, делаете один клик в день?
Маршрутизатор не годится в качестве DistanceMatrix сервиса. Лучше выбрать что-то более подходящее, с получением результата за один запрос вместо 2тысяч
Пожалуйста, внимательно ознакомьтесь с условиями использования API: https://tech.yandex.ru/maps/doc/jsapi/2.1/terms/index-docpage/ Сервис должен быть публичным, иметь открытый доступ для всех желающих, а все полученные данные должны отображаться на карте.

Скорее всего Вам подойдет наша коммерческая версия, в которой есть специальные инструменты для построения большого числа маршрутов, в том числе без показа на карте.
ymapsapi,
Мой проект будет публичным, открытым и бесплатным. Но пока не планирую широко его продвигать (в том числе из-за ограничения в 25000) и пока что делаю его скорее для себя и своих друзей (при этом сайте в открытом доступе).
С отображением маршрутов на карте я попробую что-нибудь придумать, но вот почему сервер перестаёт отвечать гораздо раньше заявленного предела, для меня остаётся загадкой.


Как я понял, самая дешевая коммерческая версия обладает гораздо меньшим количеством доступных запросов, чем бесплатная, что мне кажется странным и тем более неподходящим в свете некоммерческого характера моего проекта, во всяком случае, на данном этапе.
vlasovspb,
если Ваш проект соответствует условиям бесплатной версии, то всё в порядке. Что касается неответов сервера, пришлите, пожалуйста, пример такого запроса, с какой ошибкой он завершился, в какое время был совершен - мы постараемся проверить по логам. Отправить информацию лучше письмом.

Что касается коммерческой лицензии, то минимальный тариф сделан для тех пользователей, кому не нужно большое количество запросов, но критично использовать API в сценариях, запрещенных в бесплатной версии (интранет, платный сервис, мониторинг транспорта и т.п.).