Часто задаваемые вопросы
Информация о товаре
- Как должно показываться уведомление об Условиях использования Navigation SDK?
- Какие языки поддерживают голосовые подсказки?
- Сохраняется ли направление, когда водитель выходит из режима навигации?
- Доступны ли ломаные линии при начале или изменении маршрута?
- Нужно ли пользователям приложения устанавливать мобильное приложение "Google Карты"?
- Может ли Navigation SDK находить парковки рядом с ресторанами и другими пунктами назначения?
- Показывает ли Navigation SDK направление движения по полосам при приближении к повороту?
Проблемы
- В Xcode 12 сборка приложений для симулятора выполняется некорректно. Как это исправить?
GMSMapViewне загружается.
Сеть
Данные
- Можно ли получить все остановки и пункты назначения в поездке до начала маршрута?
- Доступны ли пошаговые инструкции в начале маршрута?
- Как расчетное время прибытия (ETA) передается пользователям приложения?
- Можно ли использовать
RoadSnappedLocationProvider, чтобы получить текущее привязанное местоположение водителя, если навигация не находится на переднем плане? - Поддерживает ли Navigation SDK геозоны?
- Можно ли отключить уведомления, когда приложение "Навигация" работает в фоновом режиме?
Кастомизация интерфейса
- Можно ли выделить цветом лучший маршрут?
- Может ли Navigation SDK показывать расчетное время прибытия в пункт назначения?
- Как скрыть уведомления о расчетном времени прибытия?
- Какие настройки интерфейса доступны для карточек верхнего и нижнего колонтитулов?
Составление маршрутов
- Можно ли предоставить водителю определенный маршрут или удалить альтернативные маршруты?
- Можно ли показывать водителю не стандартное название пункта назначения, а другое?
- Можно ли использовать Navigation SDK, чтобы отслеживать отклонения от заданного маршрута?
- Может ли водитель выйти из навигации, не завершив маршрут?
- Поддерживает ли Navigation SDK прокладку маршрутов и навигацию для грузовиков и других крупных транспортных средств?
Симулятор
Рабочие процессы
Сервисы мобильности
- Чем отличается использование Navigation SDK для клиентов сервисов для транспортных компаний?
- Как узнать, являюсь ли я клиентом Mobility Services?
- Как оплачивается Navigation SDK для клиентов сервисов для транспортных компаний?
- Какие API Navigation SDK предназначены только для клиентов Mobility Services?
- Если я клиент Mobility Services, могу ли я также использовать реализацию Navigation SDK, не связанную с Mobility Services?
Информация о товаре
- В приложении должно быть реализовано диалоговое окно с Условиями использования Navigation SDK, которые должен принять каждый водитель. В этом диалоговом окне водитель может принять Условия использования. Текстовый файл с условиями поставляется вместе с Navigation SDK.
- В Android используйте метод
NavigationApi.showTermsAndConditionsDialog, чтобы показать диалоговое окно с условиями. - В iOS вызовите
GMSNavigationServices.showTermsAndConditionsDialogIfNeededWithCompanyName. - Все языки, поддерживаемые мобильной версией Google Карт, автоматически доступны в Navigation SDK. Устройство имеет системный язык по умолчанию, и приложение не может изменить эту настройку. Однако у приложения есть доступ к более чем 70 языкам.
-
Да. На устройствах Android после запуска
LocationListenerпродолжает работать в фоновом режиме. Приложение продолжает привязывать местоположение к дороге и сохраняет направление движения.Чтобы в iOS продолжать получать уведомления о местоположении и направлении движения в фоновом режиме, реализуйте привязку к дороге и задайте для
allowsBackgroundLocationUpdatesзначениеYES. -
Да. При создании или изменении маршрута
RouteChangeListenerпредоставляет ломаные линии. - Нет, Navigation SDK не требует установки Google Карт на мобильном устройстве.
- Нет, в настоящее время Navigation SDK не предоставляет такую возможность.
- Да. Направление движения доступно и показывается по умолчанию.
Проблемы
- В Xcode 12 сборка приложений для симулятора выполняется некорректно. Как это исправить?
-
Чтобы устранить проблему, откройте настройки сборки для проекта Xcode и добавьте
arm64вExcluded Architecturesтолько для сборок "Симулятор iOS".Дополнительную информацию можно найти в этом обсуждении на StackOverflow.
- GMSMapView не загружается.
-
Если GMSMapView не загружается:
- Убедитесь, что в Cloud Console включен Navigation SDK.
- Если Navigation SDK установлен, но в проекте не используются его API, удалите его из двоичного файла.
Сеть
- Как Navigation SDK справляется с плохим подключением?
- Navigation SDK предварительно кеширует маршрут для каждой поездки. Предварительно кэшированная информация включает данные о маршруте на 15–20 минут и альтернативные маршруты на случай, если водитель отклонится от маршрута. Navigation SDK приблизительно определяет местоположение, используя GPS и датчики устройства.
- Есть ли офлайн-режим?
- Нет, в Navigation SDK пока нет офлайн-режима, но SDK предоставляет предварительно кешированную информацию о поездке.
Данные
- Можно ли получить все остановки и пункты назначения в поездке до начала маршрута?
-
Да. Чтобы получить пошаговые инструкции для маршрута в Android, вызовите
Navigator.getRouteSegments().В iOS вызовите
GMSNavigator.routeLegs(read). - Доступны ли пошаговые инструкции в начале маршрута?
- Да. Navigation SDK предоставляет список сегментов маршрута. Кроме того, водитель может пролистать карточку с маршрутом в заголовке, чтобы посмотреть каждый маневр.
- Как пользователи приложения узнают расчетное время прибытия?
-
Чтобы предоставить пользователям приложения информацию о расчетном времени прибытия, выполните следующие действия:
- Получите время и расстояние для всех путевых точек с помощью
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. - Показывать расчетное время прибытия в конечный пункт назначения.
- Получите время и расстояние для всех путевых точек с помощью
- Как скрыть обновления расчетного времени прибытия?
-
Отключить карточки с информацией о времени прибытия можно следующими способами:
- В 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. - Поддерживает ли Navigation SDK прокладку маршрутов и навигацию для грузовиков и других крупных транспортных средств?
-
Да. При прокладке маршрутов для крупногабаритного транспорта вы можете передавать в Navigation SDK токены маршрутов для грузовиков, сгенерированные Routes API или Route Optimization API. SDK обеспечивает пошаговую навигацию с выносками маршрута (ограничения по высоте, весу, опасным материалам и грузовикам) и поддерживает физический профиль транспортного средства во время динамического изменения маршрута. Подробнее о навигации по маршрутам для крупногабаритного транспорта…
Симулятор
- Поддерживает ли симулятор изменения маршрута?
-
Да. В Android вызовите
simulateLocationsAlongNewRoute, чтобы смоделировать поездку, включающую изменение маршрута. МетодsimulateLocationsAlongExistingRouteигнорирует изменения существующего маршрута.В iOS используйте
GMSLocationSimulator.simulateAlongNewRouteToDestinations, чтобы смоделировать поездку, включающую изменение маршрута. Если вы не ожидаете изменений маршрута, можно использоватьGMSLocationSimulator.simulateLocationsAlongExistingRouteилиGMSLocationSimulator.simulateAlongNewRouteToDestinations.
Рабочие процессы
- Как убрать уведомление после закрытия действия, содержащего фрагмент навигации?
-
Уведомление о навигации остается видимым во время навигации, когда действие закрыто. Когда автомобиль прибывает в пункт назначения, навигация прекращается, а уведомление исчезает.
Чтобы обрабатывать клики по уведомлению, используйте
Navigator.startGuidance(intent resumeIntent).resume intentактивируется, когда пользователь нажимает на уведомление. ОбычноNavigator.startguidance(getIntent())вызывается из основного Activity, которое повторно вызывается, когда пользователь приложения нажимает на уведомление.
Сервисы мобильности
Сервисы платформы Google Карт для мобильности – это набор API и SDK, которые помогают транспортным и логистическим компаниям решать бизнес-задачи. Клиенты Mobility Services обычно используют Navigation SDK в сочетании с сопутствующими сервисами для оптимизации маршрутов, диспетчеризации, отслеживания задач, аналитики автопарка и т. д. Для клиентов Mobility Services также по-другому рассчитывается стоимость Navigation SDK. Подробную информацию можно найти в документации по Mobility Services.
Продукты Mobility доступны только некоторым клиентам. За дополнительной информацией обратитесь к своему представителю отдела продаж Google.
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 без Mobility Services, в том числе о переносе приложения с одного типа реализации на другой, обратитесь к специалисту Google по работе с аккаунтом.
Примечание. Если вы не являетесь клиентом Mobility Services и хотите узнать больше о наборе API и SDK Mobility Services, обратитесь в отдел продаж платформы Google Карт.