Часто задаваемые вопросы
Подробная информация о продукте
- Как следует отображать уведомление об условиях обслуживания Navigation SDK?
- Какие языки поддерживает голосовое управление?
- Сохраняется ли пеленг, когда водитель выходит из режима навигации?
- Доступны ли полилинии при запуске или изменении маршрута?
- Нужно ли пользователям приложения устанавливать мобильное приложение Google Maps?
- Может ли Navigation SDK определить парковочные места возле ресторанов и других мест назначения?
- Показывает ли Navigation SDK направление движения по полосам при приближении к точке поворота?
Проблемы
- В Xcode 12 приложения некорректно собираются для симулятора. Как это исправить?
-
GMSMapView
не загружается.
Сеть
Данные
- Могу ли я получить все остановки/пункты назначения в поездке перед началом маршрута?
- Доступна ли пошаговая инструкция по маршруту в начале маршрута?
- Каким образом пользователям приложения сообщается расчетное время прибытия (ETA)?
- Можно ли использовать
RoadSnappedLocationProvider
для получения текущего зафиксированного местоположения водителя, если навигация не находится на переднем плане? - Поддерживает ли Navigation SDK геозонирование?
- Можно ли отключить уведомления, когда приложение «Навигация» работает в фоновом режиме?
Настройка пользовательского интерфейса
- Могу ли я выделить цветом наилучший вариант маршрута?
- Может ли Navigation SDK показывать расчетное время прибытия в конечный пункт назначения?
- Как скрыть обновления расчетного времени прибытия?
- Какие настройки пользовательского интерфейса доступны для карточек верхнего и нижнего колонтитула?
Маршрутизация
- Могу ли я предоставить водителю конкретный маршрут или удалить альтернативные маршруты?
- Могу ли я показать водителю метку пункта назначения, отличную от пункта назначения по умолчанию?
- Можно ли использовать Navigation SDK для отслеживания отклонений от заданного пути?
- Может ли водитель выйти из навигации, не завершив маршрут?
Симулятор
Рабочие процессы
Мобильные услуги
- Чем отличается использование Navigation SDK для клиентов Mobility Services?
- Как узнать, являюсь ли я клиентом Mobility Services?
- Как осуществляется оплата навигационного SDK для клиентов Mobility Services?
- Какие API-интерфейсы навигационного SDK должны использоваться только клиентами мобильных сервисов?
- Если я являюсь клиентом Mobility Services, могу ли я использовать реализацию Navigation SDK, не относящуюся к Mobility Services?
Подробная информация о продукте
- В вашем приложении должен быть реализован диалог с уведомлением об условиях использования 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 на устройство.
- Нет, на данный момент Navigation SDK не предоставляет такую функциональность.
- Да. Направление движения доступно и отображается по умолчанию.
Проблемы
- В Xcode 12 приложения некорректно собираются для симулятора. Как это исправить?
Чтобы устранить эту проблему, откройте настройки сборки проекта Xcode и добавьте
arm64
в списокExcluded Architectures
только для сборок «iOS Simulator».Более подробную информацию можно найти в следующей ветке StackOverflow .
- GMSMapView не загружается.
Если GMSMapView не загружается:
- Проверьте, включен ли NavSDK в Cloud Console.
- Если Nav SDK установлен, но ваш проект не использует API Nav SDK, удалите его из вашего исполняемого файла.
Сеть
- Как Navigation SDK справляется с плохим подключением?
- Навигационный SDK предварительно кэширует маршрут для каждой поездки. Кэшированная информация включает информацию о маршруте на 15–20 минут и альтернативные варианты на случай отклонения водителя от маршрута. Навигационный SDK приблизительно определяет местоположение, используя GPS-данные устройства и датчики.
- Доступен ли автономный режим?
- Нет, на данный момент Navigation 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)
.
Настройка пользовательского интерфейса
- Могу ли я выделить цветом наилучший вариант маршрута?
- Нет. Цветовая кодировка определенного варианта маршрута в настоящее время не поддерживается.
- Может ли Navigation 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 Карт предлагают набор API и SDK для поддержки транспортных и логистических компаний. Клиенты сервисов мобильности обычно используют навигационный SDK в сочетании с другими сервисами для оптимизации маршрутов, диспетчеризации, отслеживания задач, аналитики автопарка и другими. Кроме того, для клиентов сервисов мобильности тарифицируется по-разному . Подробнее см. в документации по сервисам мобильности .
Средства обеспечения мобильности доступны только избранным клиентам. Для получения дополнительной информации обратитесь к своему торговому представителю.
ReportBillableEvent
в своём коде. Метод ReportBillableEvent
следует вызывать только клиентам Mobility Services.В Navigation SDK есть несколько API, предназначенных только для клиентов Mobility Services , которым Google выставляет счета за каждую транзакцию. Если вы не являетесь клиентом Mobility Services, следующие методы не являются обязательными:
Да, клиенты Mobility Services могут использовать как реализации Navigation SDK, относящиеся к Mobility Services, так и не относящиеся к ним. Однако одновременно в приложении можно использовать только один тип реализации. Вам также необходимо создать новый проект Google Cloud, платёжную учётную запись и ключ API, отдельные от тех, которые вы используете для своей реализации Mobility Services. Подробнее см. в обзоре настройки Navigation SDK .
Для получения дополнительной информации об использовании реализации Navigation SDK, не связанной с мобильными службами, включая миграцию приложения из одного типа реализации в другой, обратитесь к своему представителю Google по работе с клиентами.
Примечание: Если вы не являетесь клиентом Mobility Services и хотите узнать больше о коллекции API и SDK Mobility Services, обратитесь в отдел продаж платформы Google Карт .