Как сделать маршрут по адресам с помощью приложения карты
Если часто приходится ездить на общественном транспорте, путешествовать или просто ходить пешком, подборка лучших приложений для построения маршрута поможет выбрать оптимальный вариант перемещения по городу.
Google Maps
Сервис от компании Google стал очень популярен благодаря множеству полезных функций:
- Возможность сохранения фрагментов карт для открытия без доступа в интернет.
- Просмотр актуальной информации о пробках.
- Подробная информация обо всех учреждениях, популярных местах и компаниях.
- Просмотр улиц в режиме обзора.
- Навигация.
О последнем подробнее. Можно задать маршрут из одного пункта в другой, и приложение подскажет, каким путём быстрее и дешевле доехать до пункта назначения, покажет подходящий транспорт или вовсе посоветуем пройтись пешком. Карты великолепно справляются с мониторингом движения автобусов, маршруток и трамваев. В них также есть актуальная информация о стоимости проезда.
Кроме того, приложение отлично подстраивается под предпочтения — к примеру, если пошёл дождь, а вы без зонта. В этом случае нужно отметить в настройках пункт «Минимум ходьбы». Приложение составит маршрут с минимумом физических нагрузок. Google Maps полностью бесплатно и считается наиболее функциональным среди конкурентов.
ЯндексТранспорт
Новинка от Яндекса была запущена не так давно, но уже успела собрать тысячи восторженных отзывов благодаря своим функциям:
- Приложение показывает ситуацию на дорогах в режиме реального времени.
- Может подсчитать, сколько придётся ехать с учётом пробок.
- Даёт возможность отметить самые частые остановки.
Интерфейс простой — каждый вид транспорта окрашен в разные цвет. Остановки отмечены большими иконками квадратной формы.
Отличительная черта приложения — узконаправленность, так как Яндекс.Транспорт не составляет маршрут, а лишь показывает находящиеся рядом остановки и номера автобусов, которые подойдут, чтобы прибыть в пункт назначения. В одном обновлении появилась функция «Мой транспорт». Она позволяет оставлять на карте лишь свои маршруты, но для использования нововведения придётся создать аккаунт в Яндексе. Приложение бесплатно и доступно на платформе Android и iOS.
MapsMe
Отличное приложение, которое не даст заблудиться в трудную минуту. Оно идеально для тех, кто путешествует. Его особенности:
- Работает офлайн, так что при отсутствии интернета карта всё равно будет доступна.
- Присутствует возможность построения маршрутов в любой точке планеты.
- Требуется лишь единоразовое скачивание карты.
- Есть возможность построения пешего маршрута.
Разработчики подошли к делу ответственно, и на карте даже отмечены ступеньки в тех местах, где они есть.
Недавно у меня возникла необходимость отображать маршрут между двумя точками на карте Google в моем приложении. На Хабре уже были публикации на эту тему. Например, «Маршруты на картах Google в вашем Android-приложении». Однако этим материалам уже довольного много времени и они не используют новых возможностей. Хочу показать еще один способ рисования маршрутов, может быть, кому-то он окажется полезен.
Я опущу процесс интеграции Google карт в приложение, интересующиеся могут найти всю информацию в подробном руководстве от Google. Весь процесс отображения маршрутов состоит из нескольких этапов:
- Получение информации о маршруте;
- Обработка полученного ответа;
- Рисование маршрута на карте.
Получение маршрута
Для получения информации о маршруте мы должны выполнить запрос к службе маршрутов Google. Полное описание запросов и возвращаемых запросов доступны на сайте Google. Я лишь отмечу, что для получения маршрута мы должны выполнить запрос вида:
В качестве output мы можем выбрать XML, либо (в нашем случае) JSON. К числу обязательных параметров относятся origin и destination — их можно указать в виде текстового представления адреса, либо в виде значений широты и долготы, разделенных запятой. Третий обязательный параметр sensor указывает на то, исходит ли запрос от устройства с датчиком положения, либо нет — в нашем случае всегда будет равен true.
После того, как мы разобрались с форматом запроса, необходимо выбрать способ, которым мы будем выполнять наш запрос к службе маршрутов Google и получать ответ. Я использую библиотеку Retrofit, которая позволят выполнять формировать запросы к REST-сервисам буквально в пару строк.
Для использования Retrofit необходимо подключить библиотеку к вашему проекту. С использованием gradle это делается добавлением одной строки зависимости в ваш gradle-файл:
Далее нам необходимо описать API службы маршрутов Google. Для этого мы создаем новый Java-интерфейс, где мы создаем некоторое количество методов и при помощи аннотаций Retrofit сопоставляем их с различными методами на сервере. Так как мы будем получать только информацию, нам нужно описать только один метод для GET-запроса:
Аннотация GET в качестве аргумента принимает директорию на сервере, к которой должен выполняться запрос, а уже в самом методе аннотируем каждый его параметр аннотацией Query. Как аргумент для каждой аннотации имя параметра, который мы включаем в запрос. В данном случае для параметров origin и destination я устанавливаю свои значения для флага encodeValue, при помощи которого я сообщаю Retrofit, чтобы он не кодировал запятую, которая разделяет значения широты и долготы в моем запросе. Также я добавляю еще один параметр language для того, что бы ответ от сервера приходил на русском языке. Наш REST-метод должен возвращать некий объект, назовем его RouteResponse. Его мы опишем позже, а пока просто создадим еще один класс с именем RouteResponse.
После того, как мы описали API нашей службы, мы можем выполнить запрос. Для этого нам надо создать RestAdapter, создать сервис, представляющий удаленную службу и вызвать у него метод нашего API:
Вот и все, что нужно, чтобы получить маршрут от службы маршрутов Google. Добавив в конструктор RestAdapter строку , вы можете выполнить запрос, и увидеть у себя в логе ответ от сервера. Но мы на этом не останавливаемся.
Обработка полученного ответа
В результате выполнения запроса мы получим объект RouteResponse. На самом деле, поскольку от сервера мы запросили JSON, то и ответ от сервера придет в JSON-формате. Retrofit, получив ответ от сервера, самостоятельно запускает парсинг JSON с использованием парсера от Google GSON, а уж тот парсит JSON в объект RouteResponse. При желании можно выбрать другой парсер — Jackson, либо JSON-парсер от Instagram, но я предпочитаю пользоваться GSON. GSON идет в комплекте с Retrofit, поэтому никаких дополнительных зависимостей для его использования нам в проект включать не надо.
Для того, чтобы доставать какие-то данные из JSON-ответа, нам нужно создать класс, описывающий эти данные. Мы уже создали класс RouteResponse, осталось наполнить его каким-то содержимым. Общая структура ответа от сервера службы маршрутов Google такова:
Как видим, в ответе нам приходит массив маршрутов Routes, который содержит массив отрезков Legs, состоящий из шагов Steps, составляющих отрезок маршрута, и информации об отрезке. В ранних примерах маршруты строились на основе информации о каждом шаге отрезка, однако уже в объекте Route содержится объект Overview_polyline — это объект с массивом закодированных элементов points, которые представляют приблизительный (сглаженный) путь результирующего маршрута. В большинстве случаев этого сглаженного маршрута будет достаточно. Поэтому для рисования я буду использовать именно его.
На основе этой информации мы пишем наш класс модели для GSON:
Выполнив запрос и получив объект RouteResponse мы можем получить из него строку points. В своем исходном состоянии она нам мало что дает. Для того, чтобы добыть из нее какую-то информацию, нам нужно расшифровать ее. Здесь нам придет на помощь класс PolyUtil из библиотеки Google Maps Android API utility library. Чтобы им воспользоваться, нужно включить следующую зависимость в ваш проект:
PolyUtil содержит метод decode(), принимающий строку Points и возвращающий набор объектов LatLng, узлов нашего маршрута. Этого нам достаточно для того, чтобы нарисовать наш маршрут на карте.
Рисование маршрута на карте
В старых примерах для рисования маршрута использовался Overlay, мы же обойдемся классом Polyline — в этом случае нам не нужно создавать дополнительный класс, наследуемый от Overlay и объем кода, который нам необходимо написать, радикально сокращается. Polyline — это список точек на карте и линия, их соединяющая. Polyline затем можно добавить на карту:
Для начала мы создаем экземпляр класса PolylineOptions и устанавливаем толщину и цвет линии. Затем получаем экземпляр LatLngBuilder для построения ограничивающего прямоугольника, который будет использоваться для того, чтобы масштабировать карту. Дальше мы проходим по списку объектов LatLng, полученному в результате расшифровки ответа от API маршрутов Google и добавляем каждую точку на линию в и LatLngBuilder. Для первого и последнего объекта в списке, которые представляют собой координаты начальной и конечной точки соответственно, мы создаем маркеры и добавляем их на карту. После завершения перебора элементов списка мы добавляем построенную линию на карту вызовом метода addPolyline().
Затем нам нужно масштабировать карту таким образом, чтобы отобразить весь маршрут. Перемещение по карте выполняется при помощи метода moveCamera() класса Camera, который принимает на вход настройки камеры в объекте UpdateCamera. Объект CameraUpdate мы создаем вызовом метода newLatLngBoudns у класса UpdateCameraFactory. Мы пеередаем ему созданный нами объект LatLngBounds, который содержит все точки нашего маршрута и передаем ему ширину нашего экрана и добавляем отступ от краев. После этого мы вызываем метод для передвижения камеры. И всё, маршрут нарисован.
Независимо от того, планируете ли Вы провести день в городе или хотите организовать поездку по стране, Google Карты позволяют добавить до девяти остановок, исключая отправную точку, когда Вы строите маршрут как на сайте, так и в приложении. Вот как это сделать.
Добавление нескольких остановок с помощью веб-сайта
По умолчанию Карты будут использовать местоположение Вашего устройства для начальной точки. Если Вы хотите, чтобы это было другое место, введите его.
Затем введите местоположение Вашего первого пункта назначения в предоставленное поле и нажмите «Enter». Кроме того, Вы можете щелкнуть любое местоположение на карте, чтобы получить те же результаты.
Удостоверьтесь, что у Вас включен вариант на автомобиле или пешком, так как Карты позволяют делать несколько мест назначения с этими двумя режимами.
Чтобы добавить другой пункт назначения, все, что Вам нужно сделать, это нажать «+» или пробел ниже Вашего первого пункта назначения, а затем начать вводить новое местоположение. Вы можете повторить это, чтобы добавить до девяти остановок. Если у Вас больше остановок, чем разрешено, Вам может понадобиться сделать другую карту с того места, где Вы остановились.
Если в какой-то момент Вы решите, что хотите изменить порядок своих целей, просто перетащите любое место вверх или вниз по списку, используя круги слева.
Добавление нескольких остановок с помощью мобильного приложения
Вы можете использовать мобильное приложение Google Карты (бесплатно для iOS или Android ), чтобы создать карту с несколькими пунктами назначения.
Запустите приложение Google Maps на мобильном устройстве, а затем нажмите синюю кнопку «В путь» в правом нижнем углу экрана.
По умолчанию Карты используют местоположение Вашего устройства для начальной точки. Если Вы хотите, чтобы это было другое место, введите его.
Начните вводить в свой первый пункт назначения или коснитесь местоположения на карте ниже, чтобы начать свое путешествие.
Затем откройте меню (три точки в правом верхнем углу), а затем нажмите команду «Добавить остановку».
Возможность прокладки наиболее оптимального маршрута с точки зрения временных затрат Лёгкое задание точек отправления и назначения Возможность построения маршрута по нескольким точкам Возможность повторного использования и сохранения получившегося маршрута
Список адресов (каждый адрес начинается с новой строки)
Первый адрес будет использоваться как начальная точка, второй как конечная, остальные адреса как промежуточные точки (порядок не сохраняется).
очень нужна ваша помощь!
здравствуй, уважаемый пользователь сервиса построения маршрутов. меня зовут юсупов дмитрий и я постараюсь быть кратким.
лично для меня как разработчика доход с данного сервиса не существенен, меня охватывает печаль, что придется закрыть сервис, который нужен и полезен людям, я это точно знаю мне пишут много писем, отдельное спасибо этим людям. заранее огромное спасибо за участие.
с уважением, Юсупов Дмитрий.
ПОЖАЛУЙСТА, ОТКЛЮЧИТЕ БЛОКИРОВЩИК РЕКЛАМЫ!
Доходы от рекламы позволяют сайту существовать и развиваться, блокируя рекламу, вы препятствуете его развитию. Благодарим за понимание.
Данная программа работает как с Android устройствами, так и с продукцией компании Apple.
После установки приложения, изучаем краткое руководство и приступаем к работе.
Рассмотрим один из примеров оптимизации маршрута.
Возьмем к примеру 8 различных адресов:
- Филевский бульвар д.8
- Фабрициуса д.3
- Ленинградское шоссе д.16
- Сходненский тупик д.13
- Кулакова д.20
- Большая Грузинская д.32
- 3-я Песчаная д.2
- Проспект Маршала Жукова д.22
Вносим данные адреса в маршрут и нажимаем кнопку «Оптимизировать»
Приложение с учетом пробок распланирует Ваш маршрут по более быстрому и свободному пути!
Карта маршрута пронумерует все точки по очередности.
Чтобы перенести маршрут на любой из установленных на устройстве навигатор, необходимо нажать на первую точку и выбрать «Проложить».
Ваш маршрут построен, доброго Вам пути.
Яндекс.Такси с новым тарифом «Доставка» в Москве
Яндекс.Услуги
Оптимизатор маршрутов Circuit
Построение маршрута в Гугл картах
Как правильно выбрать выход из метро.
Навигатор до подъезда
12 комментариев к “ Оптимизация маршрута. Road Warrior ”
Интересное приложение, жаль только 8 мест только можно внести в маршрут. Оптимизация маршрута в данной программе конечно очень удобное, и сохраняет мне каждый день по 2-3 часа рабочего времени!
Думал в регионах не будет работать. Крутая программа
Обратите внимание.
Реально полезная штука.
HАРОД ЭТО ПPОCТО БОMБА.
Спасибо за такую инфу
Привет всем участникам! классный у вас сайт!
Привет. Заинтересовала ваша программа. Хотелось бы узнать, есть ли возможность вбивать адреса , например с Excel файла, чтобы не вносить каждый адрес в отдельности? И какое максимальное количество адресов можно внести в платной версии? И сколько стоит платная версия? За ранее спасибо за информацию.
Спасобо большое за информацию. Еще такой вопрос, где можно найти инструкцию, как загрузить адреса из Excel, а то не могу разобраться((((
Только в PRO версии вы можете подгружать адреса из внешних источников.
В данный момент в Гугл Плей пишет, что программа не доступна в нашей стране?
Не знаете в чем может быть проблема?
Описание для Планировщик маршрутов GPS-карт
Вы никогда не разочаруетесь при использовании потрясающих и уникальных функций навигации в «Плане Маршрут карты GPS». Он чрезвычайно прост в использовании с красивым интерфейсом и плавным пользовательским управлением. Наряду с навигацией в приложении вы также можете найти места в разных местах вокруг вас. Всякий раз, когда вы ищете маршруты между двумя местами, вы можете использовать это идеальное приложение планирования маршрута карты. С помощью «Плана маршрутизации карт GPS» навигация очень удобна во время вождения или во время ходьбы. Это дает вам четкие указания и инструкции по дорожным дорожкам во время вождения. Навигационные маршруты в приложении регулярно обновляются, поэтому вы получаете наиболее точные маршруты навигации. Больше не спрашивайте людей о направлениях дороги или картах, пока вы путешествуете.
Это уникальное навигационное приложение должно быть для всех любителей путешествий, которые любят путешествовать по разным местам. Если вы путешествовали в другой город, и вы не знаете направления, вы должны загрузить это навигационное приложение прямо сейчас. Это приложение для GPS-навигации доступно бесплатно. И так, чего же ты ждешь? Загрузите это уникальное приложение для навигации, чтобы решить все ваши проблемы с навигацией и направлением. Вы также можете открыть новые места во время навигации.
Мы постоянно работаем над тем, чтобы сделать это приложение GPS Map Route Planner лучшим и полезным для вас. Пожалуйста, не стесняйтесь, пишите нам по любым вопросам / предложениям / проблемам. Если вы пользовались какой-либо особенностью приложения «Планировщик маршрутов GPS-карт», закажите нас в игровом магазине и поделитесь своими друзьями.
Читайте также: