Часто задаваемые вопросы

Подробная информация о товаре

Проблемы

Сеть

Данные

Настройка пользовательского интерфейса

Маршрутизация

Симулятор

Рабочие процессы

Услуги мобильности

Подробная информация о товаре

Ваше приложение должно содержать диалоговое окно с уведомлением об условиях использования Navigation SDK, которое каждый водитель должен принять. Это диалоговое окно предоставляет водителю возможность согласиться с условиями использования. Текстовый файл с условиями предоставляется вместе с Navigation SDK.
В Android для отображения диалогового окна с условиями используйте метод NavigationApi.showTermsAndConditionsDialog .
В iOS вызовите GMSNavigationServices.showTermsAndConditionsDialogIfNeededWithCompanyName .
Все языки, поддерживаемые Google Maps Mobile, автоматически доступны для Navigation SDK. На устройстве установлен системный язык по умолчанию, и приложение не может изменить эту настройку; однако приложение имеет доступ к более чем 70 языкам.

Да. В Android после запуска LocationListener продолжает работать в фоновом режиме. Ваше приложение продолжает привязывать местоположение и поддерживать азимут.

В iOS для продолжения получения обновлений местоположения (позиционирования и азимута) в фоновом режиме необходимо реализовать привязку к дороге и установить allowsBackgroundLocationUpdates в YES .

Да. При создании или изменении маршрута RouteChangeListener предоставляет полилинии.

Нет, для работы Navigation SDK не требуется установленное на устройстве приложение Google Maps Mobile.
Нет, в настоящее время SDK для навигации не предоставляет эту функциональность.
Да. Информация о направлении движения доступна и отображается по умолчанию.

Проблемы

В Xcode 12 приложения некорректно компилируются для симулятора. Как это исправить?

Чтобы исправить эту проблему, откройте настройки сборки вашего проекта Xcode и добавьте arm64 в список Excluded Architectures только для сборок "симулятора iOS".

Для получения более подробной информации см. следующую ветку обсуждения на StackOverflow .

GMSMapView не загружается.

Если GMSMapView не загружается:

  • Убедитесь, что NavSDK включен в Cloud Console.
  • Если Nav SDK установлен, но ваш проект не использует API Nav SDK, удалите его из исполняемого файла.

Сеть

Как SDK навигации обрабатывает плохое соединение?
Навигационный SDK предварительно загружает маршрут для каждой поездки. Предварительно загруженная информация включает данные о маршруте на 15-20 минут, а также альтернативные маршруты на случай, если водитель отклонится от основного маршрута. Навигационный SDK определяет приблизительное местоположение, используя GPS-приемник и датчики устройства.
Доступен ли автономный режим?
Нет, в настоящее время SDK для навигации не предлагает автономный режим; однако SDK предоставляет предварительно кэшированную информацию о маршруте.

Данные

Могу ли я получить список всех остановок/пунктов назначения в маршруте до его начала?

Да. В Android для получения маршрута необходимо вызвать метод Navigator.getRouteSegments() .

В iOS вызовите GMSNavigator.routeLegs(read) .

Доступна ли пошаговая инструкция по прокладке маршрута в начале пути?
Да. SDK навигации предоставляет список сегментов маршрута. Кроме того, водитель может пролистывать карточку с указаниями в заголовке, чтобы увидеть каждый маневр.
Как информация о предполагаемом времени прибытия (ETA) доводится до пользователей приложения?

В Android для предоставления пользователям приложения информации о предполагаемом времени прибытия выполните следующие действия:

  1. Получите время и расстояние для всех путевых точек, используя Navigator.getTimeAndDistanceList() .
  2. Передайте эту информацию в клиентское приложение так же, как и информацию о предполагаемом времени прибытия водителя.

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

  1. Получите сегменты маршрута, используя Navigator.getRouteSegments() .
  2. Вызывайте метод GMSNavigator.timeToNextDestination для каждого участка пути.
  3. Передайте информацию о времени в клиентское приложение так же, как и информацию о расчетном времени прибытия водителя.
Можно ли использовать RoadSnappedLocationProvider для получения текущего местоположения водителя на снимке, если навигация не находится в фоновом режиме?

Да. В Android компонент RoadSnappedLocationProvider по умолчанию работает в фоновом режиме.

В iOS для поддержания работы навигации в фоновом режиме необходимо реализовать обработчик событий для GMSRoadSnappedLocationProviderListener и установить свойство allowsBackgroundLocationUpdates в TRUE .

Поддерживает ли SDK для навигации геозонирование?

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

Эту функциональность можно приблизительно воспроизвести с помощью remainingTimeOrdistanceChangeListener .

  1. Установите пороговое значение, чтобы определить частоту обратных вызовов.
  2. Проверьте оставшееся расстояние до пункта назначения.

Например, если вы установите пороговое значение в 100 м, вы получите обратный вызов, когда расстояние до пункта назначения изменится на 100 м. По мере уменьшения расстояния вы можете изменить это пороговое значение на меньшее и получать обратные вызовы чаще. Затем проверьте оставшееся расстояние, чтобы определить, достаточно ли вы близки к месту посадки/высадки.

В iOS реализуйте обработчик событий GMSNavigatorListener.didUpdateRemainingDistance для управления расстоянием между уведомлениями.

Можно ли отключить уведомления, когда приложение «Навигация» работает в фоновом режиме?

Да. В Android для управления уведомлениями используйте Navigator.setHeadsUpNotificationEnabled . Этот метод имеет логический аргумент. FALSE отключает уведомления; TRUE включает уведомления.

В iOS фоновые уведомления для местоположений, зафиксированных на дороге, можно отключить, установив параметр GMSRoadSnappedLocationProvider.allowsBackgroundLocationUpdates в значение NO.

Чтобы отключить фоновую обработку для других уведомлений о местоположении, вызовите GMSNavigator.sendsBackgroundNotifications(NO) .

Настройка пользовательского интерфейса

Можно ли выделить цветом оптимальный вариант маршрута?
Нет. Цветовое кодирование конкретного варианта маршрута в настоящее время не поддерживается.
Может ли навигационный SDK отображать расчетное время прибытия в конечный пункт назначения?

Да. В Android используйте следующие методы:

  1. Получите время и расстояние для всех путевых точек, используя Navigator.getTimeAndDistanceList() .
  2. Скройте расчетное время прибытия текущей точки маршрута, используя NavigationFragment.setEtaCardEnabled(false) .
  3. Отобразить расчетное время прибытия в конечный пункт назначения.

В iOS используйте следующее:

  1. Вызовите GMSNavigator.routeLegs(read) .
  2. На последнем отрезке пути позвоните по номеру GMSNavigator.timeToNextDestination .
  3. Скройте расчетное время прибытия текущей точки маршрута, заменив значение MSMapView.settings.navigationFooterEnabled=NO на FALSE.
  4. Отобразить расчетное время прибытия в конечный пункт назначения.
Как скрыть информацию о предполагаемом времени прибытия?

Отключить карты ETA можно следующими способами:

  • В Android используйте navigationView.setEtaCardEnabled(false) .
  • В iOS используйте GMSMapView.settings.navigationFooterEnabled=NO .
Какие параметры настройки пользовательского интерфейса доступны для карточек в заголовке и нижнем колонтитуле?

В Android для установки цвета фона используется StylingOptions . Чтобы скрыть или показать заголовок и нижний колонтитул, используйте функции-члены setHeaderEnabled и setFooterEnabled класса NavigationFragment .

В iOS для установки цвета фона используйте GMSMapView.settings.navigationHeaderPrimaryBackgroundColor . Чтобы скрыть или показать заголовок и нижний колонтитул, используйте свойства navigationFooterEnabled и navigationHeaderEnabled класса GMSUISettings .

Маршрутизация

Могу ли я указать водителю конкретный маршрут или удалить альтернативные маршруты?
Нет. По умолчанию предоставляется несколько маршрутов, и самый быстрый маршрут имеет приоритет. Вы можете повлиять на маршрут по умолчанию, добавив в свой запрос параметры, например, «избегать автомагистралей и платных дорог». Добавление путевых точек также влияет на маршрут.
Могу ли я отображать пользователю приложения другую метку для пункта назначения, отличную от стандартного местоположения?

Да. В Android создайте Marker с пользовательским заголовком для пункта назначения и координатами широты/долготы. SDK навигации отобразит пользовательский заголовок и координаты на NavigationMap .

В iOS вы создаете и отображаете объект GMSMarker для целевого объекта.

Можно ли использовать Navigation SDK для отслеживания отклонений от заданного маршрута?

Да. В Android используйте Navigator.setRouteChangedListener , чтобы получать уведомления об изменении маршрута или рекомендации нового маршрута:

  1. Зарегистрируйте слушатель, который проверяет положение устройства вдоль маршрута с помощью метода Navigator.setRouteChangedListener .
  2. Добавьте код в обработчик события обратного вызова onRouteChanged :
    • Отправьте пользователю приложения сообщение с обновленной информацией о предполагаемом времени прибытия и расстоянии.
    • Отслеживайте местоположение устройства.
    • [необязательно] Добавьте другие функции, необходимые вашему приложению для обработки ситуаций, когда водитель отклоняется от заданного маршрута.

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

  1. В контроллере представления карты реализуйте протоколы GMSNavigatorListener и GMSRoadSnappedLocationProviderListener .
  2. Реализуйте метод GMSNavigatorListener.navigatorDidChangeRoute .
  3. Для доступа к новому маршруту используйте свойства routeLegs и currentRouteLeg объекта GMSNavigator .
Может ли водитель выйти из навигации, не завершив маршрут?

Да. В Android для остановки навигации вызовите метод Navigator.stopGuidance() .

В iOS вызовите GMSNavigator.clearDestinations .

Симулятор

Поддерживает ли симулятор изменение маршрута?

Да. В Android вызовите метод simulateLocationsAlongNewRoute , чтобы смоделировать поездку, включающую изменение маршрута. Метод simulateLocationsAlongExistingRoute игнорирует изменения существующего маршрута.

В iOS для имитации поездки с изменением маршрута используйте GMSLocationSimulator.simulateAlongNewRouteToDestinations . Если изменений маршрута не ожидается, можно использовать GMSLocationSimulator.simulateLocationsAlongExistingRoute или GMSLocationSimulator.simulateAlongNewRouteToDestinations .

Рабочие процессы

Как закрыть уведомление после закрытия активности, содержащей фрагмент навигации?

Уведомление о навигации остается видимым во время навигации, даже когда действие завершено. Когда транспортное средство прибывает в пункт назначения, навигация останавливается, и уведомление исчезает.

Для обработки кликов по уведомлению используйте Navigator.startGuidance(intent resumeIntent) . resume intent срабатывает, когда пользователь приложения кликает по уведомлению. Как правило, Navigator.startguidance(getIntent()) вызывается из главного Activity, которое повторно вызывает Activity, когда пользователь приложения кликает по уведомлению.

Услуги мобильности

Чем отличается использование Navigation SDK для клиентов, пользующихся услугами мобильной связи?

Сервисы Google Maps Platform Mobility Services предлагают набор API и SDK для поддержки корпоративных потребностей транспортных и логистических компаний. Для клиентов Mobility Services SDK навигации обычно используется в сочетании с другими сервисами для оптимизации маршрутов, диспетчеризации, отслеживания задач, анализа автопарка и многого другого. Стоимость SDK навигации также отличается для клиентов Mobility Services. Для получения дополнительной информации см. документацию Mobility Services .

Средства передвижения доступны только избранным клиентам. Для получения дополнительной информации свяжитесь со своим торговым представителем.

Как я могу узнать, являюсь ли я клиентом службы мобильной связи?
Если вы не уверены, используете ли вы Navigation SDK как клиент Mobility Services, найдите вызов метода ReportBillableEvent в своем коде. Вызывать метод ReportBillableEvent должны только клиенты Mobility Services.

Как осуществляется оплата SDK навигации для клиентов мобильных сервисов?
Для клиентов, использующих сервисы мобильной связи, выставление счетов и ценообразование для навигационного SDK зависят от вашего соглашения об оказании услуг с платформой Google Maps. Информацию о проверке корректности выставления счетов за использование сервисов мобильной связи см. в разделе «Проверка выставления счетов» . Для получения дополнительной информации о выставлении счетов за сервисы мобильной связи обратитесь к своему торговому представителю.

Какие API навигационного SDK следует использовать только клиентам мобильных сервисов?

В SDK навигации есть несколько API, предназначенных только для использования клиентами Mobility Services , которым Google выставляет счета за каждую транзакцию. Если вы не являетесь клиентом Mobility Services, следующие методы не выполняют никаких действий:

Если я являюсь клиентом Mobility Services, могу ли я также использовать реализацию Navigation SDK, не относящуюся к Mobility Services?

Да, клиенты Mobility Services могут использовать как реализации Navigation SDK, относящиеся к Mobility Services, так и реализации, не относящиеся к Mobility Services. Однако в приложении одновременно можно использовать только один тип реализации. Также необходимо создать новый проект Google Cloud, учетную запись для выставления счетов и ключ API, отличные от тех, которые вы используете с реализацией Mobility Services. Для получения дополнительной информации см. обзор настройки Navigation SDK .

Для получения дополнительной информации об использовании реализации Navigation SDK, не относящейся к сервисам мобильной связи, включая миграцию приложения с одного типа реализации на другой, обратитесь к представителю вашей учетной записи Google.

Примечание: Если вы не являетесь клиентом Mobility Services и хотите узнать больше о наборе API и SDK Mobility Services, свяжитесь со службой продаж Google Maps Platform .