Часто задаваемые вопросы
Подробности о продукте
- Как должно отображаться уведомление об Условиях использования Navigation SDK?
- Какие языки поддерживаются голосовыми указаниями?
- Сохраняется ли пеленг при выходе водителя из режима навигации?
- Доступны ли полилинии при запуске или изменении маршрута?
- Должны ли пользователи приложения устанавливать Google Maps для мобильных устройств?
- Может ли навигационный SDK идентифицировать парковку возле ресторанов и других мест?
- Показывает ли Navigation SDK направление движения по полосам движения при приближении к поворотному моменту?
Проблемы
- В Xcode 12 приложения для симулятора создаются неправильно. Как я могу это исправить?
-
GMSMapView
не загружается.
Сеть
Данные
- Могу ли я получить все остановки/пункты назначения в поездке перед началом маршрута?
- Доступно ли пошаговое руководство по маршруту в начале маршрута?
- Как расчетное время прибытия (ETA) сообщается пользователям приложения?
- Можно ли использовать
RoadSnappedLocationProvider
для получения текущего местоположения водителя, если навигация не находится на переднем плане? - Поддерживает ли навигационный SDK геозону?
- Могу ли я отключить уведомления, когда приложение «Навигация» работает в фоновом режиме?
Настройка пользовательского интерфейса
- Могу ли я раскрасить лучший вариант маршрута?
- Может ли навигационный SDK отображать расчетное время прибытия для конечного пункта назначения?
- Как я могу скрыть обновления ETA?
- Какие настройки пользовательского интерфейса доступны для карточек верхнего и нижнего колонтитула?
Маршрутизация
- Могу ли я предоставить водителю конкретный маршрут или удалить альтернативные маршруты?
- Могу ли я показать водителю метку пункта назначения, отличную от пункта назначения по умолчанию?
- Могу ли я использовать Navigation SDK для отслеживания отклонений от заданного пути?
- Может ли водитель выйти из навигации, не пройдя маршрут?
Симулятор
Рабочие процессы
Мобильные услуги
- Чем отличается использование Navigation SDK для клиентов мобильных услуг?
- Как я могу узнать, являюсь ли я клиентом мобильных услуг?
- Как выставляется счет за навигационный SDK для клиентов мобильных служб?
- Какие API-интерфейсы Navigation SDK следует использовать только клиентам мобильных служб?
- Если я являюсь клиентом мобильных служб, могу ли я также использовать реализацию навигационного SDK, не связанную с мобильными службами?
Подробности о продукте
- В вашем приложении должно быть реализовано диалоговое окно с уведомлением об Условиях использования Navigation SDK, которое должен принять каждый драйвер. Это диалоговое окно дает водителю возможность согласиться с Условиями обслуживания. Текстовый файл условий предоставляется вместе с Navigation SDK.
- В Android используйте метод
NavigationApi.showTermsAndConditionsDialog
чтобы отобразить диалоговое окно, содержащее термины.- В iOS вызовите
GMSNavigationServices.showTermsAndConditionsDialogIfNeededWithCompanyName
. - В Android используйте метод
- Любые языки, поддерживаемые Google Maps Mobile, автоматически доступны для навигационного SDK. На устройстве установлен системный язык по умолчанию, и приложение не может изменить этот параметр; однако приложение имеет доступ к более чем 70 языкам.
Да. В Android после запуска
LocationListener
продолжает работать в фоновом режиме. Ваше приложение продолжает фиксировать положение дороги и поддерживать направление.В iOS, чтобы продолжать получать обновления местоположения и направления в фоновом режиме, реализуйте привязку дорог и установите для
allowsBackgroundLocationUpdates
значениеYES
.Да. Когда маршрут создается или изменяется,
RouteChangeListener
предоставляет полилинии.- Нет, для навигационного SDK не требуется установка Google Maps Mobile на устройстве.
- Нет, навигационный SDK в настоящее время не предоставляет эту функциональность.
- Да. Направление движения доступно и отображается по умолчанию.
Проблемы
- В Xcode 12 приложения для симулятора создаются неправильно. Как я могу это исправить?
Чтобы устранить эту проблему, откройте настройки сборки проекта Xcode и добавьте
arm64
в списокExcluded Architectures
только для сборок «iOS Simulator».Для получения дополнительной информации см. следующую ветку StackOverflow .
- GMSMapView не загружается.
Если GMSMapView не загружается:
- Убедитесь, что NavSDK включен в Cloud Console.
- Если Nav SDK установлен, но ваш проект не использует API-интерфейсы Nav SDK, удалите его из двоичного файла.
Сеть
- Как навигационный SDK справляется с плохой связью?
- Навигационный SDK предварительно кэширует маршрут для каждой поездки. Предварительно кэшированная информация включает в себя информацию о маршруте за 15-20 минут и альтернативы маршрута на случай отклонения водителя от маршрута. Навигационный SDK определяет местоположение с помощью GPS и датчиков устройства.
- Доступен ли автономный режим?
- Нет, в настоящее время Navigation SDK не поддерживает автономный режим; однако SDK предоставляет предварительно кэшированную информацию о путешествии.
Данные
- Могу ли я получить все остановки/пункты назначения в поездке перед началом маршрута?
Да. В Android, чтобы получить указания по маршруту, вызовите
Navigator.getRouteSegments()
.В iOS вызовите
GMSNavigator.routeLegs(read)
.- Доступно ли пошаговое руководство по маршруту в начале маршрута?
- Да. Навигационный SDK предоставляет список сегментов маршрута. Кроме того, водитель может пролистывать карту направлений в заголовке, чтобы увидеть каждый маневр.
- Как ETA сообщается пользователям приложения?
В Android выполните следующие действия, чтобы предоставить пользователям приложения информацию о расчетном времени прибытия:
- Получите время и расстояние для всех путевых точек, используя
Navigator.getTimeAndDistanceList()
. - Отправьте эту информацию клиентскому приложению так же, как вы сейчас делаете это для драйвера ETA.
В iOS выполните следующие действия, чтобы предоставить пользователям приложения информацию о расчетном времени прибытия:
- Получите этапы путешествия с помощью
Navigator.getRouteSegments()
. - Вызовите
GMSNavigator.timeToNextDestination
для каждого участка пути. - Пересылайте информацию о времени в клиентское приложение, как вы сейчас делаете это для драйвера ETA.
- Получите время и расстояние для всех путевых точек, используя
- Можно ли использовать
RoadSnappedLocationProvider
для получения текущего местоположения водителя, если навигация не находится на переднем плане? Да. В Android
RoadSnappedLocationProvider
по умолчанию работает в фоновом режиме.В iOS, чтобы навигация работала в фоновом режиме, реализуйте прослушиватель для
GMSRoadSnappedLocationProviderListener
и установите дляallowsBackgroundLocationUpdates
значениеTRUE
.- Поддерживает ли навигационный 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?
Вы можете отключить карты 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())
вызывается из основного действия, которое вызывает действие, когда пользователь приложения щелкает уведомление.
Мобильные услуги
Мобильные службы платформы Google Maps предлагают набор API и SDK, помогающих удовлетворить потребности предприятий в сфере транспорта и логистики. Для клиентов мобильных услуг навигационный SDK обычно используется вместе с соответствующими услугами для оптимизации маршрутов, диспетчеризации, отслеживания задач, анализа автопарка и многого другого. Для клиентов мобильных служб стоимость навигационного SDK также выставляется по-разному . Дополнительные сведения см. в документации по службам мобильности .
Мобильные продукты в настоящее время доступны только избранным клиентам. Свяжитесь с вашим торговым представителем для получения дополнительной информации.
ReportBillableEvent
. Только клиенты мобильных служб должны вызывать метод ReportBillableEvent
.В навигационном SDK есть несколько API, которые предназначены только для использования клиентами мобильных служб , которым Google выставляет счета за каждую транзакцию. Если вы не являетесь клиентом мобильных услуг, следующие методы бесполезны:
Да, клиенты мобильных служб могут использовать реализации Navigation SDK как для мобильных служб, так и для не-мобильных служб. Однако одновременно в приложении можно использовать только один тип реализации. Вам также необходимо создать новый проект Google Cloud, учетную запись для выставления счетов и ключ API отдельно от тех, которые вы используете при реализации мобильных сервисов. Дополнительную информацию см. в обзоре настройки Navigation SDK .
Для получения дополнительной информации об использовании реализации Navigation SDK, не связанной с мобильными службами, включая перенос приложения из одного типа реализации в другой, обратитесь к представителю своего аккаунта Google.
Примечание. Если вы в настоящее время не являетесь клиентом Mobility Services и хотите узнать больше о наборе API и SDK Mobility Services, обратитесь в отдел продаж платформы Google Maps .