Как можно разместить несколько независимых мультимаршрутов на одной карте?
Примерно как на скрине
Как можно разместить несколько независимых мультимаршрутов на одной карте?
Примерно как на скрине
Добрый день. Я хочу научить карту прокладывать маршрут через несколько точек и отображать длину проложенного маршрута. У меня получилось машрут проложить, но с длиной возникли проблемы:
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);
Скажите, что я делаю не так и как узнать длину мультимаршрута?
Здравствуйте!
Имеется ли какое-либо ограничение на количество запросов к маршрутизатору, кроме 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);Мы используем платное 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); });
}Здесь мы видим, что после второй точки маршрут уходит куда-то в дебри для разворота, что увеличивает маршрут на приличное количество километров.
Что это?
Кривой граф дорог? Не выставлены какие-то параметры маршрутизации?
Как нам избежать такой ситуации?
Всем привет!
Подскажите ка решить следующую задачу, в поиске, к сожалению ничего не нашел.
Например, имеется маршрут Москва -Спб, как полчить список городов и населенных пунктов(название населенного пункта/города, координаты):
а) находящихся по пути следования маршрута
б) находящиеся на удалении в 5 км(радиус) от маршрута.
Заранее спасибо за помощь!
Начиная с версии 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 Яндекс.Карт
Здравствуйте.
Возникла задача поиска точки на маршруте по пройденному расстоянию.
Т.е. есть известный маршрут, есть показания одометра от начальной точки и нужно найти координаты места/точки на маршруте.
Если кто сталкивался, подскажите, пожалуйста, решение.
Не смог самостоятельно разобраться и найти ответ, можно ли с помощью API Карт получить длину маршрута между двумя адресами, прописаными просто в двух input, которые я сам произвольно на станице разместил?
Есть ли возможность с помощью API выставить полный аналог текущего функционала кнопки Маршруты в новом дизайне (весна 2015)?
(Дизайн кнопок и списков, адреса точек, добавление точек, описание движения маршрута, расчет с пробками, варианты маршрутов).
Или единственный способ нанизывать весь функционал друг за другом и верстая собственные стили оформления?