- Как включить Навигатор на любом смартфоне Android
- Навигация и Навигатор
- А как в приложении Google Карты включить в режим Навигатор?
- Инструкция по включению Навигатора приложения Google Карты на смартфоне Samsung Galaxy
- Маршруты на картах Google в Android-приложении
- Получение маршрута
- Обработка полученного ответа
- Рисование маршрута на карте
Как включить Навигатор на любом смартфоне Android
Навигация и Навигатор
Это два термина, которые при полном совпадении корней этих слов имеют разное значение. Для владельца смартфона «Навигация» – это управление перемещением в пространстве, когда нужно из точки «А» добраться до точки «Б»: пешим ходом, на городском транспорте или в собственном автомобиле.
А «Навигатор« – это электронное устройство, которое помогает Навигации, то есть оно показывает положение хозяина телефона в пространстве во время следования по запланированному маршруту, подсказывая о предстоящих действиях, включая повороты, развороты и перестройка из ряда в ряд при многополосной дороге, предупреждая об ограничении в скорости и об установке Камеры для фиксаций нарушений ПДД.
Поэтому Навигатор, чтобы выполнить свои функции должен иметь:
— электронное вычислительное устройство (компьютер);
— модуль памяти для хранения информации;
— экран для отражения информации;
— звуковое оборудование для голосовых подсказок;
— приёмник сигналов спутниковой навигации (GPS, ГЛОНАСС и пр.);
— приёмник сигналов сетей сотовой, Wi-Fi или Bluetooth связи;
— программное обеспечение;
— набор цифровых карт местности.
Он должен также уметь выбирать оптимальный путь следования объекта в пространстве, с возможностью перестройки маршрута, в случае появления новых непредвиденных обстоятельств.
И, как оказалось, наш с вами уважаемый смартфон, всё это имеет и умеет.
Современный смартфон с ОС Android имеет Искусственный Интеллект (ИИ) умеющий думать и воспринимать изменяющиеся обстоятельства, приложение Google Карты (Google Maps) из стандартного набора программ, все необходимые электронные модули, экран, звуковой динамик с микрофоном и электронные карты, скачиваемые из Интернета.
Но если вы запустите приложение Google Карты, то, скорее всего, обратите внимание на то, что эта программная среда буквально перегружена информацией об окружающих Вас на местности объектах. Google Карты разработаны, прежде всего, как информационный сервис для ориентации на карте местности со всеми её объектами. И в случае необходимости Вы можете даже проложить маршрут до любой точки «Б», где следуя по указанным улицам, Вы точно не потеряетесь.
Нужно отметить, что Навигатор – это, прежде всего, специализированное устройство, которое имеет крепкий корпус и своё специальное программное обеспечение, который был разработан для различных условий эксплуатации: туристический, военный, морской, космический и прочие. Его задача обеспечить Вас всей полнотой информации, чтобы вы прошли свой маршрут от точки «А» до точки «Б» со всеми подсказками и описанием возможных трудностей. То есть задача Навигатора провести Вас самым оптимальным путём до конца маршрута.
Все признают, что корпорация Google смогла довести приложение Google Карты до совершенства и сегодня оно является одним из немногих удачных программ, которые могут переключиться в режим Навигатора, как для пешеходов, так и для водителей авто.
А как в приложении Google Карты включить в режим Навигатор?
Оказалось очень просто: для этого после формирования маршрута нужно нажать на кнопку «В путь», и приложение перейдёт в режим Навигатора, который с этого момента будет заботливо вести Вас по всему маршруту как самая заботливая няня.
Далее мы опишем этот процесс на примере редакционного смартфона Samsung A50 с ОС Android 11, где мы проложим автомобильный маршрут от нашего текущего местонахождения до Ж/д Вокзала.
Инструкция по включению Навигатора приложения Google Карты на смартфоне Samsung Galaxy
Обязательным условием работы любого Навигатора является постоянное подключение службы местонахождения, ещё именуемой геолокацией, локация или GPS.
Также, для доступа приложения Google Maps к новым участкам карты и к информации о загруженности на дорогах необходимо иметь постоянное подключение службы мобильной передачи данных.
Важное замечание: Для работы Навигатора обязательным условием является включение службы геолокация и мобильная передача данных.
1. Для проверки включения службы местоположения и мобильной передачи данных достаточно свайпом опустить шторку панели уведомлений и, в случае необходимости, с помощью кнопок быстрых настроек включить службы «Мобильные данные» и «Локация».
Скрин №1 – панель кнопок быстрых настроек: служба Локация включена.
2. Далее нужно запустить приложение Google Карты. Для этого на Основном экране нужно открыть папку Google.
Далее в папке Google нажать на значок приложения «Карты»
Скрин №2 – открыть папку Google. Скрин №3 – запустить приложение Google Карты, нажав на значок «Карты».
3. Находясь на основной странице Google Карты нужно проложить маршрут. Для этого нужно нажать на кнопку «Маршрут» в виде синего круга со «стрелочкой поворот направо».
4. Теперь необходимо определить две позиции маршрута:
— Откуда;
— Куда.
Так как мы прокладываем маршрут от точки текущего местонахождения, то в первой позиции «Откуда» оставляем значение «Мое местоположение» и новых данных вносить не надо.
Для того чтобы внести данные окончания маршрута нужно нажать на вторую строчку «Куда».
Скрин №5 – для внесения данных цели поездки нужно нажать на вторую строчку «Куда».
Конечную точку маршрута «Куда» можно внести двумя способами:
— указать точку на карте местности;
— набрать адрес: город, улица и номер дома.
Точка «Б» нашего маршрута – Ж/д вокзал. Поэтому в строчке «Куда» мы набираем текст: «жд вокзал ул. дружбы».
После этого приложение предложит варианты соответствующие нашему запросу. Он оказался один – «Железнодорожный вокзал, ул.Дружбы, г. ***». Нажимаем на эту строчку.
Скрин №6 – нажать на строчку «Куда» для ввода текста запроса. Скрин №7 – набрать текст «жд вокзал ул. дружбы». И из списка найденных вариантов выбрать «Железнодорожный вокзал, ул.Дружбы, г. ***».
5. После этого приложение проложит маршрут до вокзала и предложит уточнить способ перемещения:
— На автомобиле;
— Общественный транспорт;
— Пешком.
В первом случае – на автомобиле – два варианта маршрута – 16 минут и 18 минут.
Для просмотра маршрута на общественном транспорте нужно нажать на кнопку «Общественный транспорт».
Скрин №8 – 2 варианта маршрута на автомобиле. Для просмотра вариантов на общественном транспорте нужно нажать на кнопку «Общественный транспорт».
6. Программа подобрала минимум три варианта на местном транспорте:
— на трамвае – 44 минуты;
— пешком и на автобусе – 40 минут;
— на автобусе с пересадкой – 44 минуты.
Для просмотра маршрута пешего перехода нужно нажать на кнопку «Пешком».
Скрин №9 – три варианта маршрута на городском транспорте. Для перехода к маршруту пешком нажать на кнопку «Пешком».
7. Приложение подобрало два варианта пешего маршрута:
— 1 час 15 минут;
— 1 час 19 минут.
Для возвращения к автомобильному маршруту нужно нажать на кнопку «На автомобиле».
Скрин №10 – два варианта пешего маршрута. Нажать на кнопку «На автомобиле».
8. Мы остановились на первом варианте автомобильного маршрута «16 минут».
Для включения режима Навигатор нужно нажать на кнопку «В путь» внизу экрана.
Скрин №11 – выбрать вариант маршрута «16 минут». Для включения режима Навигатор нужно нажать на кнопку «В путь».
9. Теперь мы находимся в режиме Навигатор.
Перед нами карта маршрута с указанием ближайших поворотов. Примерное время в пути 18 минут.
В режиме Навигатор все команды по ходу движения сопровождаются голосовыми подсказками.
Начинается наш маршрут первыми тремя командами:
— направляйтесь на запад;
— поворот налево в сторону ул. Пушкинская;
— поворот направо на ул. Пушкинская.
Скрин № 12 – вид Навигатора в начале маршрута.
Счастливого пути!
Навигатор приложения Google Maps – знает своё дело и не подведёт в пути. Пользуйтесь на здоровье.
Источник
Маршруты на картах Google в Android-приложении
Недавно у меня возникла необходимость отображать маршрут между двумя точками на карте 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, который содержит все точки нашего маршрута и передаем ему ширину нашего экрана и добавляем отступ от краев. После этого мы вызываем метод для передвижения камеры. И всё, маршрут нарисован.
Источник