Часто задаваемые вопросы
Подробности о продукте
- Как следует отображать уведомление об условиях обслуживания Navigation SDK?
- Какие языки поддерживает голосовое сопровождение?
- Сохраняется ли пеленг, когда водитель выходит из режима навигации?
- Доступны ли полилинии при начале или изменении маршрута?
- Необходимо ли пользователям приложения устанавливать мобильное приложение Google Maps?
- Может ли навигационный SDK определять парковки возле ресторанов и других мест назначения?
- Показывает ли навигационный SDK направление движения по полосам при приближении к точке поворота?
Проблемы
- В Xcode 12 приложения не собираются правильно для симулятора. Как это исправить?
-
GMSMapView
не загружается.
Сеть
Данные
- Могу ли я получить все остановки/пункты назначения в поездке перед началом маршрута?
- Доступна ли пошаговая навигационная подсказка в начале маршрута?
- Каким образом предполагаемое время прибытия (ETA) сообщается пользователям приложения?
- Можно ли использовать
RoadSnappedLocationProvider
для получения текущего зафиксированного местоположения водителя, если навигация не находится на переднем плане? - Поддерживает ли Navigation SDK геозонирование?
- Можно ли отключить уведомления, когда приложение «Навигация» работает в фоновом режиме?
Настройка пользовательского интерфейса
- Могу ли я выделить цветом наилучший вариант маршрута?
- Может ли навигационный SDK показывать расчетное время прибытия в конечный пункт назначения?
- Как скрыть обновления расчетного времени прибытия?
- Какие настройки пользовательского интерфейса доступны для карточек верхнего и нижнего колонтитула?
Маршрутизация
- Могу ли я предоставить водителю определенный маршрут или удалить альтернативные маршруты?
- Могу ли я показать водителю метку пункта назначения, отличную от метки пункта назначения по умолчанию?
- Могу ли я использовать Navigation SDK для отслеживания отклонений от заданного пути?
- Может ли водитель выйти из навигации, не завершив маршрут?
Симулятор
Рабочие процессы
Мобильные услуги
- Чем отличается использование Navigation SDK для клиентов Mobility Services?
- Как узнать, являюсь ли я клиентом Mobility Services?
- Как осуществляется оплата навигационного SDK для клиентов Mobility Services?
- Какие API-интерфейсы навигационного SDK должны использоваться только клиентами Mobility Services?
- Если я являюсь клиентом Mobility Services, могу ли я также использовать реализацию Navigation SDK, не относящуюся к Mobility Services?
Подробности о продукте
- Ваше приложение должно реализовать диалоговое окно с уведомлением об условиях обслуживания Navigation SDK, которое должен принять каждый водитель. Это диалоговое окно дает водителю возможность согласиться с Условиями обслуживания. Текстовый файл условий предоставляется вместе с Navigation SDK.
- В Android используйте метод
NavigationApi.showTermsAndConditionsDialog
для отображения диалогового окна, содержащего термины.- В iOS вызовите
GMSNavigationServices.showTermsAndConditionsDialogIfNeededWithCompanyName
. - В Android используйте метод
- Любые языки, поддерживаемые Google Maps Mobile, автоматически доступны для Navigation SDK. Устройство имеет системный язык по умолчанию, и приложение не может изменить эту настройку; однако приложение имеет доступ к более чем 70 языкам.
Да. В Android после запуска
LocationListener
продолжает работать в фоновом режиме. Ваше приложение продолжает фиксировать местоположение и сохраняет направление.В iOS, чтобы продолжить получать обновления местоположения и азимута в фоновом режиме, реализуйте привязку к дороге и установите
allowsBackgroundLocationUpdates
вYES
.Да. Когда маршрут создается или изменяется,
RouteChangeListener
предоставляет полилинии.- Нет, Navigation SDK не требует установки Google Maps Mobile на устройстве.
- Нет, на данный момент Navigation SDK не предоставляет такую функциональность.
- Да. Направление движения доступно и отображается по умолчанию.
Проблемы
- В Xcode 12 приложения не собираются правильно для симулятора. Как это исправить?
Чтобы устранить эту проблему, откройте настройки сборки проекта Xcode и добавьте
arm64
в списокExcluded Architectures
только для сборок «iOS Simulator».Более подробную информацию можно найти в следующей ветке StackOverflow .
- GMSMapView не загружается.
Если GMSMapView не загружается:
- Проверьте, включен ли NavSDK в Cloud Console.
- Если Nav SDK установлен, но ваш проект не использует API Nav SDK, удалите его из вашего двоичного файла.
Сеть
- Как Navigation SDK справляется с плохим подключением?
- Navigation SDK предварительно кэширует маршрут для каждой поездки. Предварительно кэшированная информация включает информацию о маршруте на 15-20 минут и альтернативные маршруты на случай, если водитель отклонится от маршрута. Navigation SDK приблизительно определяет местоположение с помощью GPS устройства и датчиков.
- Доступен ли автономный режим?
- Нет, на данный момент навигационный SDK не поддерживает автономный режим; однако SDK предоставляет предварительно кэшированную информацию о поездке.
Данные
- Могу ли я получить все остановки/пункты назначения в поездке перед началом маршрута?
Да. В Android, чтобы получить указания по маршруту, вызовите
Navigator.getRouteSegments()
.В iOS вызовите
GMSNavigator.routeLegs(read)
.- Доступна ли пошаговая навигационная подсказка в начале маршрута?
- Да. Навигационный SDK предоставляет список сегментов маршрута. Кроме того, водитель может пролистать карточку маршрута в заголовке, чтобы увидеть каждый маневр.
- Каким образом пользователям приложения сообщается расчетное время прибытия?
В Android выполните следующие действия, чтобы предоставить пользователям приложения информацию о расчетном времени прибытия:
- Получите время и расстояние для всех точек маршрута с помощью
Navigator.getTimeAndDistanceList()
. - Перешлите эту информацию в клиентское приложение так же, как вы это делаете сейчас для определения расчетного времени прибытия водителя.
В iOS выполните следующие действия, чтобы предоставить пользователям приложения информацию о расчетном времени прибытия:
- Получите сведения об этапах путешествия с помощью
Navigator.getRouteSegments()
. - Вызовите
GMSNavigator.timeToNextDestination
для каждого этапа путешествия. - Передавайте информацию о времени в клиентское приложение так же, как вы это делаете сейчас для расчета времени прибытия водителя.
- Получите время и расстояние для всех точек маршрута с помощью
- Можно ли использовать
RoadSnappedLocationProvider
для получения текущего зафиксированного местоположения водителя, если навигация не находится на переднем плане? Да. В Android
RoadSnappedLocationProvider
по умолчанию работает в фоновом режиме.В iOS, чтобы навигация работала в фоновом режиме, реализуйте прослушиватель для
GMSRoadSnappedLocationProviderListener
и установите свойствоallowsBackgroundLocationUpdates
вTRUE
.- Поддерживает ли Navigation SDK геозонирование?
Нет. В контексте навигации
remainingTimeOrdistanceChangeListener
имеет преимущество перед простой геозоной. Геозона может не учитывать геометрию дороги и может не быть центрирована на точной точке, к которой движется водитель.Эту функциональность можно приблизить с помощью
remainingTimeOrdistanceChangeListener
.- Установите пороговое значение для определения частоты обратных вызовов.
- Проверьте оставшееся расстояние до пункта назначения.
Например, если вы установите порог на 100 м, вы получите обратный вызов, когда расстояние до пункта назначения изменится на 100 м. По мере уменьшения расстояния вы можете обновить этот порог до меньшего значения и получать более частые обратные вызовы. Затем проверьте оставшееся расстояние, чтобы определить, достаточно ли вы близки к месту посадки/высадки.
В iOS реализуйте прослушиватель
GMSNavigatorListener.didUpdateRemainingDistance
для управления расстоянием между уведомлениями.- Можно ли отключить уведомления, когда приложение «Навигация» работает в фоновом режиме?
Да. В Android используйте
Navigator.setHeadsUpNotificationEnabled
для управления уведомлениями. Этот метод имеет логический аргумент.FALSE
отключает уведомления;TRUE
включает уведомления.В iOS отключите фоновые уведомления для привязанных к дороге местоположений, установив для параметра
GMSRoadSnappedLocationProvider.allowsBackgroundLocationUpdates
значение NO.Чтобы отключить фоновую обработку других уведомлений о местоположении, вызовите
GMSNavigator.sendsBackgroundNotifications(NO)
.
Настройка пользовательского интерфейса
- Могу ли я выделить цветом наилучший вариант маршрута?
- Нет. Цветовое кодирование определенного варианта маршрута в настоящее время не поддерживается.
- Может ли навигационный SDK показывать расчетное время прибытия в конечный пункт назначения?
Да. В Android используйте следующие методы:
- Получите время и расстояние для всех точек маршрута с помощью
Navigator.getTimeAndDistanceList()
. - Скройте расчетное время прибытия текущей точки маршрута с помощью
NavigationFragment.setEtaCardEnabled(false)
. - Определите расчетное время прибытия в конечный пункт назначения.
В iOS используйте следующее:
- Вызовите
GMSNavigator.routeLegs(read)
. - На последнем этапе вызовите
GMSNavigator.timeToNextDestination
. - Скройте расчетное время прибытия текущей точки маршрута, используя
MSMapView.settings.navigationFooterEnabled=NO
в FALSE. - Определите расчетное время прибытия в конечный пункт назначения.
- Получите время и расстояние для всех точек маршрута с помощью
- Как скрыть обновления расчетного времени прибытия?
Вы можете отключить карты ETA следующими способами:
- В Android используйте
navigationView.setEtaCardEnabled(false)
. - В iOS используйте
GMSMapView.settings.navigationFooterEnabled=NO
.
- В Android используйте
В Android вы используете
StylingOptions
для установки стиля цвета фона. Чтобы скрыть или показать верхний и нижний колонтитулы, используйте функции-членыsetHeaderEnabled
иsetFooterEnabled
NavigationFragment
.В iOS используйте
GMSMapView.settings.navigationHeaderPrimaryBackgroundColor
для установки стиля цвета фона. Чтобы скрыть или отобразить верхний и нижний колонтитулы, используйте свойстваnavigationFooterEnabled
иnavigationHeaderEnabled
GMSUISettings
.
Маршрутизация
- Могу ли я предоставить водителю определенный маршрут или удалить альтернативные маршруты?
- Нет. По умолчанию предоставляется несколько маршрутов, и самый быстрый маршрут имеет приоритет. Вы можете повлиять на маршрут по умолчанию, добавив в запрос предпочтения, например «избегать автомагистралей и платных дорог». Добавление точек маршрута также влияет на маршрут.
- Могу ли я показать пользователю приложения другую метку для пункта назначения, нежели местоположение пункта назначения по умолчанию?
Да. В Android создайте
Marker
с пользовательским заголовком для пункта назначения и широтой/долготой. Navigation SDK отображает пользовательское название и координаты наNavigationMap
.В iOS вы создаете и отображаете
GMSMarker
для пункта назначения.- Могу ли я использовать Navigation SDK для отслеживания отклонений от заданного пути?
Да. В Android используйте
Navigator.setRouteChangedListener
для получения уведомлений об изменении маршрута или рекомендации нового маршрута:- Зарегистрируйте прослушиватель, который проверяет положение устройства вдоль маршрута с помощью метода
Navigator.setRouteChangedListener
. - Добавьте код в обработчик событий обратного вызова
onRouteChanged
:- Отправьте сообщение пользователю приложения с обновленной информацией о времени прибытия и расстоянии.
- Отслеживайте местоположение устройства.
- [необязательно] Добавьте другие функции, необходимые вашему приложению для обработки ситуаций, когда водитель отклонился от предписанного маршрута.
В iOS используйте
GMSNavigator
и его слушатели для получения уведомлений об изменении маршрута или рекомендации нового маршрута:- В контроллере представления карты реализуйте протокол
GMSNavigatorListener
и протоколGMSRoadSnappedLocationProviderListener
. - Реализуйте
GMSNavigatorListener.navigatorDidChangeRoute
. - Получите доступ к новому маршруту, используя свойства
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, когда пользователь приложения нажимает на уведомление.
Мобильные услуги
Google Maps Platform Mobility Services предлагает набор API и SDK для поддержки потребностей предприятий в сфере транспорта и логистики. Для клиентов Mobility Services Navigation SDK обычно используется в сочетании с сопутствующими услугами для оптимизации маршрутов, диспетчеризации, отслеживания задач, аналитики автопарка и т. д. Navigation SDK также оплачивается по-разному для клиентов Mobility Services. Для получения дополнительной информации см. документацию Mobility Services .
В настоящее время продукты Mobility доступны только для избранных клиентов. Свяжитесь с вашим торговым представителем для получения дополнительной информации.
ReportBillableEvent
в своем коде. Только клиенты Mobility Services должны вызывать метод ReportBillableEvent
.В Navigation SDK есть несколько API, которые предназначены только для использования клиентами Mobility Services , которым Google выставляет счета на основе транзакций. Если вы не являетесь клиентом Mobility Services, следующие методы являются пустыми операциями:
Да, клиенты Mobility Services могут использовать как Mobility Services, так и не-Mobility Services реализации Navigation SDK. Однако вы можете использовать только один тип реализации в приложении одновременно. Вам также необходимо создать новый проект Google Cloud, учетную запись для выставления счетов и ключ API, отдельные от тех, которые вы используете с вашей реализацией Mobility Services. Для получения дополнительной информации см. Обзор настройки Navigation SDK .
Для получения дополнительной информации об использовании реализации Navigation SDK, не относящейся к мобильным службам, включая миграцию приложения из одного типа реализации в другой, обратитесь к своему представителю Google по работе с клиентами.
Примечание: Если вы в настоящее время не являетесь клиентом Mobility Services и хотите узнать больше о коллекции API и SDK Mobility Services, свяжитесь с отделом продаж платформы Google Карт .