Часто задаваемые вопросы
Подробная информация о товаре
- Как следует отображать уведомление об условиях использования Navigation SDK?
- Какие языки поддерживает голосовое сопровождение?
- Сохраняется ли положение подшипника после выхода водителя из навигационного режима?
- Доступны ли полилинии при начале или изменении маршрута?
- Нужно ли пользователям приложения устанавливать мобильное приложение Google Maps?
- Может ли навигационный SDK определять парковочные места рядом с ресторанами и другими объектами?
- Отображает ли SDK навигации направление движения в полосах при приближении к повороту?
Проблемы
- В Xcode 12 приложения некорректно компилируются для симулятора. Как это исправить?
-
GMSMapViewне загружается.
Сеть
Данные
- Могу ли я получить список всех остановок/пунктов назначения в маршруте до его начала?
- Доступна ли пошаговая инструкция по прокладке маршрута в начале пути?
- Как пользователям приложения сообщается расчетное время прибытия (ETA)?
- Можно ли использовать
RoadSnappedLocationProviderдля получения текущего местоположения водителя на снимке, если навигация не находится в фоновом режиме? - Поддерживает ли SDK для навигации геозонирование?
- Можно ли отключить уведомления, когда приложение «Навигация» работает в фоновом режиме?
Настройка пользовательского интерфейса
- Можно ли выделить цветом оптимальный вариант маршрута?
- Может ли навигационный SDK отображать расчетное время прибытия в конечный пункт назначения?
- Как скрыть информацию о предполагаемом времени прибытия?
- Какие параметры настройки пользовательского интерфейса доступны для карточек в заголовке и нижнем колонтитуле?
Маршрутизация
- Могу ли я указать водителю конкретный маршрут или удалить альтернативные маршруты?
- Могу ли я указать водителю другое обозначение пункта назначения, отличное от стандартного?
- Можно ли использовать Navigation SDK для отслеживания отклонений от заданного маршрута?
- Может ли водитель выйти из навигации, не завершив маршрут?
Симулятор
Рабочие процессы
Услуги мобильности
- Чем отличается использование Navigation SDK для клиентов, пользующихся услугами мобильной связи?
- Как я могу узнать, являюсь ли я клиентом службы мобильной связи?
- Как осуществляется оплата SDK навигации для клиентов мобильных сервисов?
- Какие 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.
- Нет, в настоящее время SDK для навигации не предоставляет эту функциональность.
- Да. Информация о направлении движения доступна и отображается по умолчанию.
Проблемы
- В Xcode 12 приложения некорректно компилируются для симулятора. Как это исправить?
Чтобы исправить эту проблему, откройте настройки сборки вашего проекта Xcode и добавьте
arm64в списокExcluded Architecturesтолько для сборок "симулятора iOS".Для получения более подробной информации см. следующую ветку обсуждения на StackOverflow .
- GMSMapView не загружается.
Если GMSMapView не загружается:
- Убедитесь, что NavSDK включен в Cloud Console.
- Если Nav SDK установлен, но ваш проект не использует API Nav SDK, удалите его из исполняемого файла.
Сеть
- Как SDK навигации обрабатывает плохое соединение?
- Навигационный SDK предварительно загружает маршрут для каждой поездки. Предварительно загруженная информация включает данные о маршруте на 15-20 минут, а также альтернативные маршруты на случай, если водитель отклонится от основного маршрута. Навигационный SDK определяет приблизительное местоположение, используя GPS-приемник и датчики устройства.
- Доступен ли автономный режим?
- Нет, в настоящее время SDK для навигации не предлагает автономный режим; однако SDK предоставляет предварительно кэшированную информацию о маршруте.
Данные
- Могу ли я получить список всех остановок/пунктов назначения в маршруте до его начала?
Да. В Android для получения маршрута необходимо вызвать метод
Navigator.getRouteSegments().В iOS вызовите
GMSNavigator.routeLegs(read).- Доступна ли пошаговая инструкция по прокладке маршрута в начале пути?
- Да. SDK навигации предоставляет список сегментов маршрута. Кроме того, водитель может пролистывать карточку с указаниями в заголовке, чтобы увидеть каждый маневр.
- Как информация о предполагаемом времени прибытия (ETA) доводится до пользователей приложения?
В Android для предоставления пользователям приложения информации о предполагаемом времени прибытия выполните следующие действия:
- Получите время и расстояние для всех путевых точек, используя
Navigator.getTimeAndDistanceList(). - Передайте эту информацию в клиентское приложение так же, как и информацию о предполагаемом времени прибытия водителя.
В iOS выполните следующие действия, чтобы предоставить пользователям приложения информацию о предполагаемом времени прибытия:
- Получите сегменты маршрута, используя
Navigator.getRouteSegments(). - Вызывайте метод
GMSNavigator.timeToNextDestinationдля каждого участка пути. - Передайте информацию о времени в клиентское приложение так же, как и информацию о расчетном времени прибытия водителя.
- Получите время и расстояние для всех путевых точек, используя
- Можно ли использовать
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 можно следующими способами:
- В Android используйте
navigationView.setEtaCardEnabled(false). - В iOS используйте
GMSMapView.settings.navigationFooterEnabled=NO.
- В Android используйте
В Android для установки цвета фона используется
StylingOptions. Чтобы скрыть или показать заголовок и нижний колонтитул, используйте функции-членыsetHeaderEnabledиsetFooterEnabledклассаNavigationFragment.В iOS для установки цвета фона используйте
GMSMapView.settings.navigationHeaderPrimaryBackgroundColor. Чтобы скрыть или показать заголовок и нижний колонтитул, используйте свойстваnavigationFooterEnabledиnavigationHeaderEnabledклассаGMSUISettings.
Маршрутизация
- Могу ли я указать водителю конкретный маршрут или удалить альтернативные маршруты?
- Нет. По умолчанию предоставляется несколько маршрутов, и самый быстрый маршрут имеет приоритет. Вы можете повлиять на маршрут по умолчанию, добавив в свой запрос параметры, например, «избегать автомагистралей и платных дорог». Добавление путевых точек также влияет на маршрут.
- Могу ли я отображать пользователю приложения другую метку для пункта назначения, отличную от стандартного местоположения?
Да. В Android создайте
Markerс пользовательским заголовком для пункта назначения и координатами широты/долготы. 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 Maps Platform Mobility Services предлагают набор API и SDK для поддержки корпоративных потребностей транспортных и логистических компаний. Для клиентов Mobility Services SDK навигации обычно используется в сочетании с другими сервисами для оптимизации маршрутов, диспетчеризации, отслеживания задач, анализа автопарка и многого другого. Стоимость SDK навигации также отличается для клиентов Mobility Services. Для получения дополнительной информации см. документацию Mobility Services .
Средства передвижения доступны только избранным клиентам. Для получения дополнительной информации свяжитесь со своим торговым представителем.
ReportBillableEvent в своем коде. Вызывать метод ReportBillableEvent должны только клиенты Mobility Services.В SDK навигации есть несколько API, предназначенных только для использования клиентами Mobility Services , которым Google выставляет счета за каждую транзакцию. Если вы не являетесь клиентом Mobility Services, следующие методы не выполняют никаких действий:
Да, клиенты Mobility Services могут использовать как реализации Navigation SDK, относящиеся к Mobility Services, так и реализации, не относящиеся к Mobility Services. Однако в приложении одновременно можно использовать только один тип реализации. Также необходимо создать новый проект Google Cloud, учетную запись для выставления счетов и ключ API, отличные от тех, которые вы используете с реализацией Mobility Services. Для получения дополнительной информации см. обзор настройки Navigation SDK .
Для получения дополнительной информации об использовании реализации Navigation SDK, не относящейся к сервисам мобильной связи, включая миграцию приложения с одного типа реализации на другой, обратитесь к представителю вашей учетной записи Google.
Примечание: Если вы не являетесь клиентом Mobility Services и хотите узнать больше о наборе API и SDK Mobility Services, свяжитесь со службой продаж Google Maps Platform .