Часто задаваемые вопросы
Подробная информация о продукте
- Как следует отображать уведомление об условиях обслуживания 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 Карт .