Карты Google для Android Automotive Intents

С помощью намерений Android можно запустить навигацию в Google Картах для Android Automotive.

Обзор

На этой странице описаны объекты Intent, которые можно использовать в Google Картах для Android Automotive. Подробную документацию для разработчиков Android см. в следующих источниках:

Запросы намерений

Чтобы запустить Google Maps для Android Automotive с намерением, необходимо сначала создать объект Intent , указав его действие, URI и пакет.

  • Действие. Все намерения Google Карт называются действием «Просмотр» — ACTION_VIEW .

  • URI. Намерения Google Карт используют строки в кодировке URI , которые определяют выбранное действие, а также некоторые данные, с которыми это действие выполняется.

  • Пакет. Вызов setPackage("com.google.android.apps.maps") гарантирует, что приложение Google Карты для Android обработает Intent. Если пакет не задан, система сама определяет, какие приложения могут обработать Intent. Если доступно несколько приложений, вам может быть предложено выбрать, какое из них вы хотите использовать.

После создания Intent вы можете запросить у системы запуск соответствующего приложения несколькими способами. Распространенный способ — передать Intent методу startActivity() . Система запустит необходимое приложение, в данном случае Google Maps, и запустит соответствующую Activity .

// Create a Uri from an intent string. Use the result to create an Intent.
Uri mapIntentUri =
Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia");
// Create an Intent from mapIntentUri. Set the action to ACTION_VIEW
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
// Make the Intent explicit by setting the Google Maps package
mapIntent.setPackage("com.google.android.apps.maps");
// Attempt to start an activity that can handle the Intent
startActivity(mapIntent);

Если система не может определить приложение, способное ответить на намерение, ваше приложение может аварийно завершить работу. Поэтому перед тем, как отображать одно из этих намерений пользователю, убедитесь, что приложение-получатель установлено.

Чтобы убедиться, что приложение готово принять намерение, вызовите метод resolveActivity() для объекта Intent . Если результат не равен NULL, существует как минимум одно приложение, способное обработать намерение, и можно безопасно вызвать startActivity() . Если результат равен NULL, не следует использовать намерение и, по возможности, отключить функцию, вызывающую его.

if (mapIntent.resolveActivity(getPackageManager()) != null) {
...
}

Например, чтобы запустить пошаговую навигацию к зоопарку Таронга в Сиднее, вы можете использовать следующий код:

Uri mapIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
if (mapIntent.resolveActivity(getPackageManager()) != null) {
startActivity(mapIntent);
}

Строки запроса, закодированные в URI

Все строки, передаваемые в намерения Google Карт, должны быть закодированы в формате URI. Например, строка «1st & Pike, Seattle» должна быть преобразована 1st%20%26%20Pike%2C%20Seattle . Пробелы в строке можно кодировать с помощью %20 или заменять знаком плюс (+).

Вы можете использовать метод android.net.Uri encode() для кодирования строк. Например:

Uri mapIntentUri = Uri.parse("google.navigation:q=" + Uri.encode("1st & Pike, Seattle"));

Показать карту

Используйте намерение geo: для отображения карты в указанном месте и с заданным уровнем масштабирования. Например:

geo:latitude,longitude?z=zoom

Параметры

  • latitude и longitude задают центральную точку карты.

  • z опционально задаёт начальный уровень масштабирования карты. Допустимые значения: от 0 (весь мир) до 21 (отдельные здания). Верхний предел может варьироваться в зависимости от доступных картографических данных в выбранном месте.

Пример

// Creates an intent that will load a map of San Francisco
Uri gmmIntentUri = Uri.parse("geo:37.7749,-122.4194");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Поиск местоположения

Используйте это намерение для отображения поисковых запросов в указанной области просмотра:

geo:latitude,longitude?q=query
geo:0,0?q=my+street+address

Параметры

Помимо параметров, используемых для отображения карты, Поиск поддерживает этот параметр:

  • q определяет места, которые нужно выделить на карте. Параметр q обязателен для всех поисковых запросов. Он принимает местоположение как в виде названия места, так и адреса. Строка должна быть экранирована URL-адресами, поэтому адрес, например, «City Hall, New York, NY», следует преобразовать в City+Hall%2CNew+York%2CNY .

Результаты поиска смещения с координатами

При поиске конкретного местоположения широта и долгота не являются обязательными, если они включены в параметр q . Однако, если вы не знаете точный адрес или запрос неоднозначен, вы можете попытаться сместить результаты поиска, указав координаты. Например, поиск адреса по запросу «Главная улица» может вернуть слишком много результатов:

// Searching for "101 Main Street" with no lat/long might return too many results
Uri gmmIntentUri = Uri.parse("geo:0,0?q=101+main+street");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Добавление широты и долготы к URI намерения смещает результаты в сторону определенной области:

// Searches for "101 Main Street" near San Francisco
Uri gmmIntentUri = Uri.parse("geo:37.7749,-122.4194?q=101+main+street");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Поиск по маршруту

Если во время навигации отправляется поисковый запрос geo:latitude,longitude?q=query , он запускает поиск по маршруту, а широта и долгота игнорируются.

Поиск по предопределенным категориям

Для поддержки интеграции с транспортным средством Google Maps в автомобиле поддерживает намерение, которое отображает следующие предопределенные категории:

Категория Кодирование категории намерений
Автозаправочная станция gas_station
Ресторан restaurant
Кафе cafe
Стоянка parking
Станция зарядки электромобилей electric_vehicle_charging_station

Намерение категории имеет вид geo:lat,lng?c=category .

Используйте c=<pre-defined category> независимо от региональных настроек пользователя. Google Maps отображает релевантные результаты в соответствии с региональными настройками этой категории. Например:

// Search for gas stations nearby
Uri gmmIntentUri = Uri.parse("geo:0,0?c=gas_station");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Другой категориальный поиск

Если вы укажете общий поисковый запрос (например, «рестораны» или «кофейни») в регионе пользователя, Google Карты для Android Automotive найдут компании, соответствующие этому критерию. Если в намерении geo: указаны конкретная широта и долгота, поиск будет сосредоточен вокруг этого местоположения. Если местоположение не указано (например, geo:0,0 ), Google Карты попытаются найти компании поблизости. Например:

// Search for restaurants nearby
Uri gmmIntentUri = Uri.parse("geo:0,0?q=restaurants");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Вы можете дополнительно скорректировать результаты поиска, указав параметр масштабирования вместе со строкой запроса. В следующем примере, если добавить значение масштабирования 10 , будет выполнена попытка найти рестораны на уровне города, а не поблизости:

Uri gmmIntentUri = Uri.parse("geo:37.7749,-122.4194?z=10&q=restaurants");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Запустить пошаговую навигацию

Документацию по запуску пошаговой навигации на других устройствах Android см. в разделе Запуск пошаговой навигации в Google Maps Intents для Android .

Используйте это намерение для запуска навигации в Google Картах с пошаговыми инструкциями по одному или нескольким указанным адресам или координатам. Маршруты всегда указываются из текущего местоположения пользователя.

google.navigation:q=a+street+address
google.navigation:q=latitude,longitude
google.navigation:place=placename

Параметры

Чтобы запустить навигацию, используйте place или q с waypoints (необязательно). Чтобы отметить путевую точку как зарядную станцию ​​(опционально), см. раздел Отправка плана поездки на электромобиле в Google Карты .

  • q задаёт конечную точку для навигационного поиска. Это может быть широта и долгота или адрес в формате запроса. Если строка запроса возвращает более одного результата, будет выбран первый результат.

  • place устанавливает конечную точку на дом или работу. Укажите Home для навигации к дому пользователя и Work для навигации к рабочему месту.

  • avoid задает объекты, которые маршрут должен избегать. avoid не является обязательным и может принимать одно или несколько из следующих значений:

    • t для оплаты дорожных сборов
    • h для автомагистралей
    • f для паромов
  • waypoints указывает одну или несколько промежуточных точек для маршрута к конечному пункту назначения, указанному параметром q . Вы можете указать несколько промежуточных точек, разделяя их символом вертикальной черты ( | ), например, Berlin,Germany|Paris,France . Вы можете использовать любое необходимое количество промежуточных точек. Точки будут добавлены к маршруту в том же порядке, в котором они перечислены в URL. Каждая промежуточная точка может быть адресом или координатами широты и долготы, разделенными запятыми; при этом адреса и координаты широты и долготы могут быть в одном и том же намерении. Строки должны быть экранированы URL-адресами , поэтому промежуточные точки типа "Berlin,Germany|Paris,France" следует преобразовать в Berlin%2CGermany%7CParis%2CFrance .

Примеры

Это намерение запросит пошаговую навигацию до зоопарка Таронга в Сиднее, Австралия:

Uri mapIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Если вы предпочитаете не платить за проезд и не пользоваться паромом, вы можете запросить маршрут, который позволит избежать следующих ситуаций:

Uri mapIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia&avoid=tf");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Или, если вы предпочитаете проложить маршрут до своего дома, используйте:

Uri mapIntentUri = Uri.parse("google.navigation:place=home");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Чтобы запустить пошаговую навигацию по следующим трем адресам по порядку, укажите зоопарк Таронга в качестве конечного пункта назначения q , а также Google Сидней и Сиднейский оперный театр в качестве путевых точек:

  1. Google Сидней

  2. Сиднейский оперный театр

  3. Зоопарк Таронга, Сидней, Австралия

Uri mapIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia&waypoints=Google+Sydney%7CSydney+Opera+House");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Аналогично q , вы можете указать любую путевую точку, указав широту и долготу через запятую вместо адреса. Например, чтобы запустить ту же навигацию, указав широту и долготу для Сиднейского оперного театра вместо адреса:

Uri mapIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia&waypoints=Google+Sydney%7C-33.856159,151.215256");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Отправьте план поездки на электромобиле в Google Maps

Используйте это многопунктовое навигационное намерение, чтобы указать некоторые пункты назначения в качестве остановок для зарядки электромобилей (ЭМ). Это намерение, расширяющее многопунктовое намерение , помогает водителям поддерживать достаточный уровень заряда аккумулятора электромобиля для достижения пунктов назначения, синхронизируя информацию об остановках для зарядки между приложениями для планирования поездок на электромобилях и Google Картами.

Для остановок для зарядки цели поездки:

  • Должен содержать имя и широту-долготу
  • Может опционально содержать выходную мощность, используемую для расчета времени зарядки.

Google использует название зарядной станции и её широту и долготу для поиска подходящего места для зарядки и отображения таких данных, как типы разъёмов, общие данные, скорость и доступность в режиме реального времени, поддерживаемые способы оплаты и точки интереса (POI). Например, маршруты проезда по открытым парковкам для завершающего этапа навигации, часы работы и рейтинги. Чтобы данные о зарядных станциях точно совпадали с данными Google, используйте определённое <brand name> например, ChargePoint .

Параметры

Следующие параметры позволяют указать подробную информацию о конечном пункте назначения и любых промежуточных точках, включая обозначенные как станции зарядки электромобилей.

Конечный пункт назначения

Чтобы установить зарядную станцию ​​в качестве конечного пункта назначения, используйте:

  • q : Должно содержать значение широты и долготы зарядной станции.
  • q_type : 1 указывает, что конечным пунктом назначения является зарядная станция.
  • q_name : Имя конечного пункта назначения. Обязательно, если q_type равен 1 .
  • q_power_output_kw : Двойное число, обозначающее выходную мощность зарядной станции в киловаттах. Необязательно.

Точки маршрута

Для путевых точек все параметры представляют собой параллельные массивы значений, разделённые вертикальной чертой ( | ), в том же порядке, что и путевые точки, за исключением конечного пункта назначения. Несовпадение количества элементов в параллельных массивах рассматривается как некорректное намерение.

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

  • waypoints : Список путевых точек, описанных в пошаговой навигации. Для путевых точек зарядных станций необходимо указать значение широты и долготы.

  • waypoint_types : Типы для каждой путевой точки, указанные в виде числа. 0 — любая остановка (значение по умолчанию), а 1 — зарядная станция.

  • waypoint_names : Названия путевых точек. Это поле обязательно для зарядных станций.

  • waypoint_power_outputs_kw : Двойное число для мощности зарядной станции в киловаттах. Для зарядных станций можно дополнительно указать значение выходной мощности в точке маршрута, которое будет использоваться в качестве резервного значения, если подходящая станция не найдена. Пустой слот означает, что значение не указано.

Поведение пользователя (UX)

Для поездок с несколькими пунктами назначения отображается экран обзора маршрута, но навигация не запускается автоматически.

При правильном форматировании намерения Google Карты отобразят экран обзора маршрута поездки. На экране будут отображены все промежуточные точки и конечный пункт назначения, а также рекомендации по оплате (при необходимости).

Для всех промежуточных точек или пунктов назначения, отмеченных как зарядная станция, Google Карты будут искать соответствующие места в базе данных Google. Чтобы обеспечить максимально точное отображение информации о зарядных станциях:

  • Если совпадение найдено, Google Maps использует данные Google для отображения зарядной станции в пользовательском интерфейсе (UI) и предоставляет рекомендации по зарядке на этой станции.

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

Примеры

В следующих примерах показано, как создавать намерения для различных сценариев планирования поездок на электромобиле, включая навигацию с использованием нескольких зарядных станций и обработку неизвестных значений выходной мощности.

Прокладывайте маршрут до конечного пункта назначения через несколько зарядных станций.

Следующий маршрут пролегает к конечному пункту назначения, Порт-Маккуори, Новый Южный Уэльс, через две зарядные станции, ChargePoint и Evie.

Направления по порядку:

  1. Зарядная станция ChargePoint (местоположение: -32.9599188,151.6240806, выходная мощность: 6,6 кВт)

  2. Зарядная станция Evie (местоположение: -31.9432539,152.4699808, выходная мощность: 350 кВт)

  3. Порт-Маккуори, Новый Южный Уэльс

Uri mapIntentUri =
    Uri.parse(
        "google.navigation:q=Port+Macquarie+NSW"
            + "&waypoints=-32.9599188%2C151.6240806%7C-31.9432539%2C152.4699808"
            + "&waypoint_types=1%7C1"
            + "&waypoint_names=ChargePoint+Charging+Station%7CEvie+Charging+Station"
            + "&waypoint_power_outputs_kw=6.6%7C350");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Неизвестная выходная мощность

Если значение выходной мощности неизвестно, оставьте соответствующий слот waypoint_power_outputs_kw пустым. Если все слоты пусты, указывать параметр waypoint_power_outputs_kw не нужно.

Направления по порядку:

  1. Зарядная станция ChargePoint (местоположение: -32.9599188,151.6240806, выходная мощность: неизвестна)

  2. Порт-Маккуори, Новый Южный Уэльс

Uri mapIntentUri =
    Uri.parse(
        "google.navigation:q=Port+Macquarie+NSW"
            + "&waypoints=-32.9599188%2C151.6240806"
            + "&waypoint_types=1"
            + "&waypoint_names=ChargePoint+Charging+Station");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Отметить конечный пункт назначения как зарядную станцию

Чтобы отметить конечный пункт назначения как зарядную станцию, укажите параметры q_type , q_name и q_power_output_kw .

Направления по порядку:

  1. Зоопарк Таронга, Сидней, Австралия

  2. Зарядная станция ChargePoint (местоположение: -32.9599188,151.6240806, выходная мощность: неизвестна)

  3. Зарядная станция Evie (местоположение: -31.9432539,152.4699808, выходная мощность: 350 кВт)

Uri mapIntentUri =
    Uri.parse(
        "google.navigation:q=-31.9432539,152.4699808&q_type=1&q_name=Evie+Charging+Station&q_power_output_kw=350"
            + "&waypoints=Taronga+Zoo%2C+Sydney+Australia%7C-32.9599188%2C151.6240806"
            + "&waypoint_types=0%7C1"
            + "&waypoint_names=%7CChargePoint+Charging+Station"
            + "&waypoint_power_outputs_kw=%7C");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Намерения действий

Доступны следующие намерения действий с интерфейсами:

Действие Описание
geo.action:?act=mute Отключает все голосовые подсказки навигации.
geo.action:?act=unmute Включает голосовые подсказки навигации.
geo.action:?act=show_traffic Показывает линии движения на карте.
geo.action:?act=hide_traffic Скрывает линии движения на карте.
geo.action:?act=show_satellite Показывает спутниковые снимки на карте.
geo.action:?act=hide_satellite Скрывает спутниковые снимки на карте.
geo.action:?act=show_alternates Google Maps открывает экран альтернативных маршрутов (работает только во время навигации).
geo.action:?act=query_next_turn Google Maps озвучивает следующий поворот (работает только во время навигации).
geo.action:?act=distance_to_next_turn Google Maps озвучивает расстояние до следующего поворота (работает только во время навигации).
geo.action:?act=time_to_next_turn Google Maps озвучивает время до следующего поворота (работает только во время навигации).
geo.action:?act=distance_to_destination Google Maps озвучивает расстояние до пункта назначения (работает только во время навигации).
geo.action:?act=go_back Google Maps возвращается к предыдущему экрану пользовательского интерфейса.
geo.action:?act=query_current_road Google Maps отображает текущую дорогу.
geo.action:?act=query_destination Google Maps озвучивает пункт назначения.
geo.action:?act=traffic_report Google Maps озвучивает отчет о дорожном движении.
geo.action:?act=clear_search_results Google Maps закрывает экран результатов поиска (если он открыт).
geo.action:?act=apply_electric_vehicle_connector_filter Применяет фильтр по типу разъема для результатов поиска станций зарядки электромобилей.
geo.action:?act=remove_electric_vehicle_connector_filter Удаляет фильтр по типу разъема в результатах поиска станций зарядки электромобилей.
geo.action:?act=apply_electric_vehicle_payment_filter Применяет фильтр платежей к результатам поиска станций зарядки электромобилей.
geo.action:?act=remove_electric_vehicle_payment_filter Удаляет фильтр платежей из результатов поиска станций зарядки электромобилей.
geo.action:?act=apply_electric_vehicle_fast_charging_filter Применяет фильтр быстрой зарядки к результатам поиска станций зарядки электромобилей.
geo.action:?act=remove_electric_vehicle_fast_charging_filter Удаляет фильтр быстрой зарядки из результатов поиска станций зарядки электромобилей.
geo.action:?act=avoid_tolls Если пользователь использует навигацию, Google Maps избегает платных маршрутов. Это может привести к изменению маршрута, если текущий маршрут содержит платные дороги.
geo.action:?act=allow_tolls Если пользователь использует навигацию, разрешает Google Картам прокладывать платные маршруты. Это может привести к переадресации, если разрешение платных дорог приводит к появлению более подходящего маршрута.
geo.action:?act=avoid_ferries Если пользователь использует навигацию, Google Maps избегает маршрутов с паромами. Это может привести к изменению маршрута, если текущий активный маршрут содержит паромы.
geo.action:?act=allow_ferries Если пользователь использует навигацию, Google Maps разрешает маршруты с паромами. Это может привести к изменению маршрута, если разрешение паромов приводит к появлению более подходящего маршрута.
geo.action:?act=avoid_highways Если пользователь использует навигацию, сообщает Google Картам избегать маршрутов с автомагистралями. Это может привести к изменению маршрута, если текущий активный маршрут содержит автомагистрали.
geo.action:?act=allow_highways Если пользователь использует навигацию, Google Maps разрешает маршруты с автомагистралями. Это может привести к изменению маршрута, если разрешение автомагистралей приводит к появлению более подходящего маршрута.
geo.action:?act=eta Если пользователь пользуется навигацией, Google Maps озвучивает предполагаемое время прибытия в пункт назначения (например, 9:15 утра).
geo.action:?act=time_to_destination Если пользователь пользуется навигацией, Google Maps озвучивает ожидаемое время до пункта назначения (например, 15 минут).
geo.action:?act=exit_navigation Выход из навигации.
geo.action:?act=select_search_result&id=0 Если результаты поиска отображаются на экране (как показано на прилагаемом изображении), это действие запускает навигацию к n- му результату на основе предоставленного параметра ID. Обратите внимание, что индекс начинается с 0 (то есть geo.action:?act=select_search_result&id=0 выберет первый результат в списке).

Поиск Результаты отображаются на экране