Новинки «Яндекс.Карт»: видеомаршруты и общественный транспорт в одном приложении
Команда сервиса анонсировала ряд обновлений для пользователей
На конференции, приуроченной к 15-летию «Яндекс.Карт», команда сервиса анонсировала несколько обновлений. Теперь в «Картах» можно построить видеомаршрут и заранее изучить дорогу. Также в «Яндекс.Карты» добавили новый раздел — «Транспорт», благодаря чему теперь не придется переключаться между двумя разными приложениями.
Новый раздел с видеомаршрутами — «Зеркала»
Команда сервиса представила новый раздел — «Зеркала». В нём собраны фотографии автомобильных дорог, которые при построении маршрута объединяются в видео. Благодаря новой функции пользователи смогут посмотреть маршрут от начала до конца пути: оценить качество дороги, отметить сложные развязки.
Фотографии для нового раздела собираются пользователями приложения «Мобильная Народная Карта». С помощью него любой пользователь может снять свой маршрут и передать снимки в «Яндекс.Карты». Это приложение помогает собирать информацию о разметке, дорожных знаках и номерах домов.
Свежие снимки появляются в «Картах» почти сразу после съемки: если вы проедете и снимете участок дороги, то другие пользователи увидят его уже через несколько часов.
«Транспорт» теперь и в «Яндекс.Картах»
В мобильном приложении «Яндекс.Карт» появится весь функционал приложения «Яндекс.Транспорт». Теперь больше не придется переключаться между приложениями: «Карты» помогут сориентироваться, где едет нужный транспорт, и покажут, как лучше добраться до места
Обновился и дизайн карты — если нажать на кнопку «Транспорт», вид карты изменится. Автомобильные дороги станут не такими яркими, а объекты общественного транспорта будут лучше заметны. Благодаря этому на карте можно быстрее найти вокзалы, станции метро и автобусные остановки.
При построении маршрута «Карты» предложат разные варианты — теперь все они собраны на одном экране. Так их можно сразу сравнить и понять, на чём быстрее доехать до нужной точки: на машине, общественном транспорте, велосипеде или пешком. В городах, где есть «Яндекс.Такси» и «Яндекс.Драйв», на экране появятся варианты такси и каршеринга с приблизительной стоимостью поездки.
Олег Левчук, руководитель «Яндекс.Карт»:
В приложении «Яндекс.Карты» каждый день строят маршруты 1.5 миллиона человек — мы хотим, чтобы им было удобнее смотреть, как добраться до нужных организаций и интересных мест. Сейчас в городах становится всё больше способов передвижения, и в них всё сложнее ориентироваться. Поэтому мы активно развиваем транспортные сценарии и перенесли в «Карты» основные возможности «Транспорта» — так пользователи сэкономят время и не будут переключаться между приложениями.
В «Яндекс Картах» теперь можно строить маршруты на будущее
Команда Яндекса объявила о запуске новой функции для своего картографического сервиса «Яндекс Карты». Теперь у пользователей есть возможность заранее узнать, сколько может занять маршрут на машине в нужное им время.
Как отмечают разработчики, это поможет спланировать поездку так, чтобы не опоздать и не приехать слишком рано. Новая функция пригодится тем, кто едет, например, в аэропорт. Пользователи смогут рассчитать, сколько времени заложить на дорогу. А ещё проверить длительность пути можно, собираясь за город. «Яндекс Карты» построят маршрут на основе исторических данных о пробках и покажут, сколько времени обычно занимает поездка.
Чтобы воспользоваться функцией, нужно построить маршрут, нажать на часы слева от кнопки «Поехали» и выбрать дату и время. «Карты» покажут примерное время в пути, но если нажать «Поехали» — предупредят, что перестроят маршрут, опираясь на текущее время.
До этого увидеть длительность будущей поездки можно было, только построив маршрут на общественном транспорте. А сейчас это доступно и тем, кто собирается ехать на автомобиле.
20 сентября 2022 в 12:29
Маршрут МЦД-3 стал доступен пользователям «Яндекс Карт»
МОСКВА, 17 августа. /ТАСС/. Маршрут Ленинградско-Казанского Московского центрального диаметра (МЦД-3) начал отображаться в мобильной и веб-версии сервиса «Яндекс Карты» и сервисе «Яндекс Метро». Об этом ТАСС сообщили в пресс-службе «Яндекса».
«В «Яндекс Картах» появился Ленинградско-Казанский диаметр (МЦД-3). Он соединяет Зеленоград и Раменское с пересадками на другие виды транспорта. Сразу после запуска движения диаметр стал отображаться в мобильной и веб-версии «Яндекс Карт» и «Яндекс Метро», — рассказали в пресс-службе.
Также в «Яндекс Карты» добавлены все входы и выходы со станций МЦД-3 для удобства планирования поездок пассажирами. В «Яндекс Метро» обновилась схема станций: на ней появился МЦД-3, а линии всех центральных диаметров стали тоньше. «Благодаря этому по схеме теперь проще ориентироваться и искать нужные станции», — добавили в пресс-службе.
Ранее сегодня президент РФ Владимир Путин дал команду на запуск движения по маршруту Ленинградско-Казанского Московского центрального диаметра. В церемонии, прошедшей по видеосвязи из «Манежа», приняли также участие столичный мэр Сергей Собянин и губернатор Подмосковья Андрей Воробьев.
Запуск движения по МЦД-3
© Владимир Гердо/ Софья Сандурская/ ТАСС
О новом маршруте
МЦД-3 — третья линия Московских центральных диаметров. Она свяжет Зеленоград с Раменским, общая протяженность маршрута — 85 км. Всего на линии расположены 38 станций, на 14 из них будут пересадки на метро, МЦК и пригородные железнодорожные направления.
МЦД-3 будет работать с 05:30 до 01:00, в часы пик поезда будут курсировать каждые пять-шесть минут. Как ожидается, запуск линии на 15% разгрузит северный участок Люблинско-Дмитровской линии метро и на 8% — северный участок Калужско-Рижской линии и восточный Таганско-Краснопресненской.
Запуск МЦД-1 и МЦД-2 состоялся осенью 2019 года. Тогда Путин лично открывал движение по первому Московскому центральному диаметру, в числе первых пассажиров отправившись от Белорусского вокзала по ветке, которая соединила Одинцово и Лобню.
© Информационное агентство ТАСС
Свидетельство о регистрации СМИ №03247 выдано 02 апреля 1999 г. Государственным комитетом Российской Федерации по печати.
Как построить маршрут яндекс карты API
Как можно построить маршрут между двумя точками с предварительной проверкой этих точек на яндекс картах. Нашел пример но там нужно задать точные координаты пример. А если у меня два input и в которых я ввожу адреса и хочу что бы расчет маршрута был динамическим, то тогда мне нужно что бы маршрут строился после того когда эти поля заполнены оба корректными данными. Пример валидации помогите объединить эти два примера.
Отслеживать
задан 3 фев 2020 в 16:16
Максим Сычевский Максим Сычевский
117 1 1 серебряный знак 11 11 бронзовых знаков
А почему вам не подходит стандартный контрол для построения маршрутов? Как в этом примере: tech.yandex.ru/maps/jsbox/2.1/route_panel_control
5 фев 2020 в 9:48
@Reni Во первых мне не нужна карта. Во вторых я использую дополнительные поля, например поле с указанием офиса или квартиры. В третьих я на лету хочу на основании данных маршрута считать стоимость доставки. Ну и в довесок все это работает на Yii2)))
5 фев 2020 в 10:05
Без показа карты бесплатную версию использовать запрещено условиями. Сценарий доставки тоже сам по себе нарушает пункт условий бесплатной версии.
5 фев 2020 в 11:10
@Reni так я использую информацию только для расчёта расстояния. Карту разве обязательно показывать? Мне она как токавая вообще не нужна. Покрайне мере не для этого сценария.
5 фев 2020 в 11:18
Да, в вашем описании используются и геокодирование, и построение маршрутов. Сам сценарий нарушает сразу два пункта бесплатного использования — нужно обязательно показывать карту и нельзя использовать бесплатную версию для логистики. Вот полные условия: tech.yandex.ru/maps/jsapi/doc/2.1/terms/index-docpage
5 фев 2020 в 11:22
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Маршрут на карте между двумя точками с предварительной проверкой адреса: https://jsfiddle.net/naivv/ohs4rnz5/
Строится не совсем динамически, для простоты использовал кнопки «проверить» и «построить».
Согласен с комментатором, по условиям использования это не подходит под бесплатный сценарий.
Кстати, при построении маршрута можно использовать определение местоположения пользователя:
control.routePanel.geolocate('from');
ymaps.ready(init); function init() < // Стоимость за километр. var DELIVERY_TARIFF = 20, // Минимальная стоимость. MINIMUM_COST = 500; // https://tech.yandex.ru/maps/jsbox/2.1/input_validation // Подключаем поисковые подсказки к полю ввода. var suggestView = new ymaps.SuggestView('suggest1'), suggestView = new ymaps.SuggestView('suggest2'), map, routePanelControl, addrFrom, addrTo; map = new ymaps.Map('map', < center: [55.75, 37.65], zoom: 9, controls: [] >); // Создадим панель маршрутизации. routePanelControl = new ymaps.control.RoutePanel( < options: < // Добавим заголовок панели. showHeader: true, title: 'Расчёт доставки' >>); var zoomControl = new ymaps.control.ZoomControl( < options: < size: 'small', float: 'none', position: < bottom: 145, right: 10 >> >); // Пользователь сможет построить только автомобильный маршрут. routePanelControl.routePanel.options.set( < types: < auto: true >>); // Неизменяемые точки "откуда" и "куда" routePanelControl.routePanel.state.set(< fromEnabled: false, toEnabled: false >); map.controls.add(routePanelControl).add(zoomControl); // При клике по кнопке запускаем верификацию введёных данных и построение маршрута $('#button1').bind('click', function(e) < geocode('#suggest1'); >); $('#button2').bind('click', function(e) < geocode('#suggest2'); >); $('#button3').bind('click', function(e) < if (addrFrom && addrTo) < showRoute(addrFrom.getAddressLine(), addrTo.getAddressLine()); >else < $('#notice3').css('display', 'block'); >>); function geocode(ctrl_id) < // Забираем запрос из поля ввода. var request = $(ctrl_id).val(); // Геокодируем введённые данные. ymaps.geocode(request).then(function(res) < var obj = res.geoObjects.get(0), error, hint; if (obj) < // Об оценке точности ответа геокодера можно прочитать тут: https://tech.yandex.ru/maps/doc/geocoder/desc/reference/precision-docpage/ switch (obj.properties.get('metaDataProperty.GeocoderMetaData.precision')) < case 'exact': break; case 'number': case 'near': case 'range': error = 'Неточный адрес, требуется уточнение'; hint = 'Уточните номер дома'; break; case 'street': error = 'Неполный адрес, требуется уточнение'; hint = 'Уточните номер дома'; break; case 'other': default: error = 'Неточный адрес, требуется уточнение'; hint = 'Уточните адрес'; >> else < error = 'Адрес не найден'; hint = 'Уточните адрес'; >// Если геокодер возвращает пустой массив или неточный результат, то показываем ошибку. if (error) < if (ctrl_id == '#suggest1') < addrFrom = null >else < addrTo = null >showError(ctrl_id, error); showMessage(ctrl_id, hint); > else < if (ctrl_id == '#suggest1') < addrFrom = obj >else < addrTo = obj >showResult(ctrl_id); > if (addrFrom && addrTo) < $('#notice3').css('display', 'none'); >else < $('#notice3').css('display', 'block'); >>, function(e) < console.log(e) >) > function showResult(ctrl_id) < // Удаляем сообщение об ошибке, если найденный адрес совпадает с поисковым запросом. $(ctrl_id).removeClass('input_error'); $('#notice1').css('display', 'none'); $('#notice2').css('display', 'none'); // полный адрес для сообщения под картой. if (ctrl_id == '#suggest1') < showMessage(ctrl_id, addrFrom.getAddressLine()); >else < showMessage(ctrl_id, addrTo.getAddressLine()); >// Сохраняем укороченный адрес для подписи метки. //shortAddress = [obj.getThoroughfare(), obj.getPremiseNumber(), obj.getPremise()].join(' '); > function showError(ctrl_id, message) < $(ctrl_id).addClass('input_error'); if (ctrl_id == '#suggest1') < $('#notice1').text(message); $('#notice1').css('display', 'block'); >else < $('#notice2').text(message); $('#notice2').css('display', 'block'); >> function showRoute(from, to) < // https://tech.yandex.ru/maps/jsbox/2.1/deliveryCalculator routePanelControl.routePanel.state.set(< from: from, to: to >); // Получим ссылку на маршрут. routePanelControl.routePanel.getRouteAsync().then(function(route) < // Зададим максимально допустимое число маршрутов, возвращаемых мультимаршрутизатором. route.model.setParams(< results: 1 >, true); // Повесим обработчик на событие построения маршрута. route.model.events.add('requestsuccess', function() < var activeRoute = route.getActiveRoute(); if (activeRoute) < // Получим протяженность маршрута. var length = route.getActiveRoute().properties.get("distance"); // Вычислим стоимость доставки. price = calculate(Math.round(length.value / 1000)), // Создадим макет содержимого балуна маршрута. balloonContentLayout = ymaps.templateLayoutFactory.createClass( 'Расстояние: ' + length.text + '.
' + 'Стоимость доставки: ' + price + ' р.'); // Зададим этот макет для содержимого балуна. route.options.set('routeBalloonContentLayout', balloonContentLayout); // Откроем балун. activeRoute.balloon.open(); > >); >); > function showMessage(ctrl_id, message) < if (ctrl_id == '#suggest1') < $('#messageHeader1').html('Пункт отправления:'); $('#message1').html(message); > else < $('#messageHeader2').html('Пункт назначения:'); $('#message2').html(message); > > // Функция, вычисляющая стоимость доставки. function calculate(routeLength) < return Math.max(routeLength * DELIVERY_TARIFF, MINIMUM_COST); >>
html, body < position: relative; width: 100%; height: 100%; padding: 0; margin: 0; font-size: 13px; font-family: sans-serif; overflow: hidden; >#footer < width: 376px; background-color: #f2f2ef; padding: 12px; >#map < height: 376px; width: 480px; margin: 0px 12px 18px 12px; position: relative; >#messageHeader, #message, #route, #header < width: 376px; margin: 12px 10px 12px 12px; >#button < display: inline-block; margin-top: 10px; font-size: 11px; color: rgb(68, 68, 68); text-decoration: none; user-select: none; padding: .2em 0.6em; outline: none; border: 1px solid rgba(0, 0, 0, .1); border-radius: 2px; background: rgb(245, 245, 245) linear-gradient(#f4f4f4, #f1f1f1); transition: all .218s ease 0s; height: 28px; width: 74px; >#button:hover < color: rgb(24, 24, 24); border: 1px solid rgb(198, 198, 198); background: #f7f7f7 linear-gradient(#f7f7f7, #f1f1f1); box-shadow: 0 1px 2px rgba(0, 0, 0, .1); >#button:active < color: rgb(51, 51, 51); border: 1px solid rgb(204, 204, 204); background: rgb(238, 238, 238) linear-gradient(rgb(238, 238, 238), rgb(224, 224, 224)); box-shadow: 0 1px 2px rgba(0, 0, 0, .1) inset; >.input < height: 18px; margin-top: 10px; margin-right: 10px; width: 277px; padding: 4px; border: 1px solid #999; border-radius: 3px; box-shadow: 0 0 1px 1px rgba(0, 0, 0, 0); transition: .17s linear; >.input:focus < outline: none; border: 1px solid #fdd734; box-shadow: 0 0 1px 1px #fdd734; >.input_error, .input_error:focus < outline: none; border: 1px solid #f33; box-shadow: 0 0 1px 1px #f33; >#notice
Проверка при вводе адреса доставки Адрес не найден
Адрес не найден
Недостаточно данных для построения маршрута