Часто задаваемые вопросы
Информация о товаре
- Как показывать уведомление об Условиях использования Navigation SDK?
- Какие языки поддерживают голосовые подсказки?
- Сохраняется ли направление, когда водитель выходит из режима навигации?
- Доступны ли ломаные линии при построении или изменении маршрута?
- Нужно ли пользователям приложения устанавливать мобильное приложение "Google Карты"?
- Может ли Navigation SDK находить парковки рядом с ресторанами и другими местами?
- Показывает ли Navigation SDK направление движения в полосах при приближении к повороту?
Проблемы
- В Xcode 12 сборка приложений для симулятора выполняется некорректно. Как это исправить?
GMSMapViewне загружается.
Сеть
Данные
- Можно ли получить информацию обо всех остановках/пунктах назначения в поездке до начала маршрута?
- Доступны ли пошаговые инструкции в начале маршрута?
- Как расчетное время прибытия (ETA) сообщается пользователям приложения?
- Можно ли использовать элемент
RoadSnappedLocationProvider, чтобы получить текущее привязанное местоположение водителя, если навигация не выполняется в активном режиме? - Поддерживает ли Navigation SDK геозоны?
- Можно ли отключить уведомления, когда приложение "Навигация" работает в фоновом режиме?
Кастомизация интерфейса
- Можно ли выделить лучший вариант маршрута цветом?
- Может ли Navigation SDK показывать расчетное время прибытия в конечный пункт назначения?
- Как скрыть обновления расчетного времени прибытия?
- Какие настройки интерфейса доступны для карточек верхнего и нижнего колонтитулов?
Составление маршрутов
- Можно ли указать водителю определенный маршрут или удалить альтернативные маршруты?
- Можно ли показать водителю другой ярлык для пункта назначения, а не тот, который используется по умолчанию?
- Можно ли использовать Navigation SDK, чтобы отслеживать отклонения от заданного маршрута?
- Может ли водитель выйти из режима навигации, не завершив маршрут?
- Поддерживает ли Navigation SDK прокладку маршрутов и навигацию для грузовиков и больших автомобилей?
Симулятор
Рабочие процессы
- Как убрать уведомление после закрытия действия, содержащего фрагмент навигации? (только для Android)
Сервисы мобильности
- Чем отличается использование Navigation SDK для клиентов Mobility Services?
- Как узнать, являюсь ли я клиентом Mobility Services?
- Как оплачивается Navigation SDK для клиентов Mobility Services?
- Какие 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 не загружается:
- Убедитесь, что NavSDK включен в Cloud Console.
- Если Navigation SDK установлен, но в проекте не используются его API, удалите его из двоичного файла.
Сеть
- Как Navigation SDK работает при плохом подключении к интернету?
- Navigation SDK предварительно кеширует маршрут для каждой поездки. В кеш загружается информация о маршруте на 15–20 минут, а также альтернативные маршруты на случай, если водитель отклонится от основного. Navigation SDK определяет приблизительное местоположение с помощью GPS и датчиков устройства.
- Есть ли офлайн-режим?
- Нет, в Navigation SDK пока нет офлайн-режима. Однако SDK предоставляет предварительно кешированную информацию о поездке.
Данные
- Можно ли получить список всех остановок/пунктов назначения в поездке до начала маршрута?
-
Да. Чтобы получить маршрут на устройстве Android, отправьте вызов
Navigator.getRouteSegments().В iOS вызовите
GMSNavigator.routeLegs(read). - Доступны ли пошаговые подсказки в начале маршрута?
- Да. Navigation 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. - Отображать расчетное время прибытия в конечный пункт назначения.
- Получите время и расстояние для всех промежуточных точек, используя
- Как скрыть обновления расчетного времени прибытия?
-
Отключить карточки с информацией о времени прибытия можно следующими способами:
- На устройстве 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, которое повторно вызывает Activity, когда пользователь приложения нажимает на уведомление.
Сервисы мобильности
Сервисы мобильности платформы Google Карт – это набор API и SDK, которые помогают компаниям, занимающимся транспортом и логистикой, решать свои задачи. Клиенты Mobility Services обычно используют Navigation SDK в сочетании с сопутствующими сервисами для оптимизации маршрутов, диспетчеризации, отслеживания задач, аналитики автопарка и т. д. Для клиентов, использующих сервисы мобильности, стоимость Navigation SDK рассчитывается иначе. Дополнительную информацию можно найти в документации по Mobility Services.
Продукты Mobility доступны только некоторым клиентам. За дополнительной информацией обратитесь к своему представителю отдела продаж Google.
ReportBillableEvent. Метод ReportBillableEvent должны вызывать только клиенты Mobility Services.
В Navigation SDK есть несколько API, предназначенных только для клиентов сервисов мобильности, которым Google выставляет счета за каждую транзакцию. Если вы не являетесь клиентом Mobility Services, следующие методы не будут работать:
Да, клиенты Mobility Services могут использовать как версии Navigation SDK для Mobility Services, так и обычные версии. Однако в одном приложении можно использовать только один тип реализации. Вам также потребуется создать новый проект Google Cloud, платежный аккаунт и ключ API, отдельные от тех, которые вы используете с реализацией Mobility Services. Подробнее о настройке Navigation SDK…
Чтобы узнать больше о том, как использовать Navigation SDK без сервисов Mobility Services, в том числе как перенести приложение с одного типа реализации на другой, обратитесь к специалисту Google по работе с аккаунтом.
Примечание. Если вы не являетесь клиентом сервисов мобильности и хотите узнать больше о наборе API и SDK для этих сервисов, обратитесь в отдел продаж платформы Google Карт.