Perguntas frequentes
Detalhes do produto
- Como o aviso dos Termos de Serviço do SDK do Navigation precisa ser exibido?
- Quais idiomas são compatíveis com as orientações por voz?
- A orientação é mantida quando o motorista sai do modo de navegação?
- As polilinhas estão disponíveis ao iniciar ou mudar um trajeto?
- Os usuários do app precisam ter o Google Maps para dispositivos móveis instalado?
- O SDK do Navigation pode identificar estacionamentos perto de restaurantes e outros destinos?
- O SDK do Navigation mostra a direção do trânsito nas faixas ao se aproximar de um ponto de conversão?
Problemas
- No Xcode 12, os apps não são compilados corretamente para o simulador. Como posso resolver isso?
GMSMapViewnão carrega.
Rede
Dados
- Posso recuperar todas as paradas/destinos de uma viagem antes de iniciar o trajeto?
- A navegação guiada está disponível no início de um trajeto?
- Como o horário previsto de chegada (HEC) é comunicado aos usuários do app?
- O
RoadSnappedLocationProviderpode ser usado para obter o local atual do motorista se a navegação não estiver em primeiro plano? - O SDK do Navigation é compatível com fronteiras geográficas virtuais?
- Posso desativar as notificações quando o app de navegação estiver em segundo plano?
Personalização da interface
- Posso usar cores para identificar a melhor opção de trajeto?
- O SDK Navigation pode mostrar o HEC do destino final?
- Como faço para ocultar as atualizações de HEC?
- Quais personalizações de interface estão disponíveis para os cards de cabeçalho e rodapé?
Roteamento
- Posso fornecer um trajeto específico para um motorista ou remover trajetos alternativos?
- Posso mostrar ao motorista um rótulo diferente para o destino em vez do local de destino padrão?
- Posso usar o SDK do Navigation para rastrear desvios de um caminho definido?
- O motorista pode sair da navegação sem concluir o trajeto?
- O SDK do Navigation é compatível com rotas e navegação para caminhões e veículos grandes?
Simulador
Fluxos de trabalho
Serviços de mobilidade
- Qual é a diferença no uso do SDK do Navigation para clientes dos Serviços de Mobilidade?
- Como saber se sou cliente dos Serviços de Mobilidade?
- Como o SDK do Navigation é faturado para clientes dos Serviços de Mobilidade?
- Quais APIs do SDK de navegação devem ser usadas apenas por clientes dos Serviços de Mobilidade?
- Se eu for cliente dos Serviços de Mobilidade, também posso usar uma implementação do SDK do Navigation que não seja dos Serviços de Mobilidade?
Detalhes do produto
- Seu app precisa implementar uma caixa de diálogo com o aviso dos Termos de Serviço do SDK do Navigation que cada motorista precisa aceitar. Essa caixa de diálogo dá ao motorista a oportunidade de concordar com os Termos de Serviço. Um arquivo de texto com os termos é fornecido com o SDK do Navigation.
- No Android, use o método
NavigationApi.showTermsAndConditionsDialogpara exibir a caixa de diálogo com os termos. - No iOS, chame
GMSNavigationServices.showTermsAndConditionsDialogIfNeededWithCompanyName. - Todos os idiomas aceitos pelo Google Maps para dispositivos móveis estão automaticamente disponíveis para o SDK de navegação. Um dispositivo tem um idioma padrão do sistema, e um app não pode mudar essa configuração. No entanto, o app tem acesso a mais de 70 idiomas.
-
Sim. No Android, depois de iniciado, o
LocationListenercontinua sendo executado em segundo plano. O app continua ajustando a posição à via e mantém a direção.No iOS, para continuar recebendo atualizações de posição e direção em segundo plano, implemente o ajuste à via e defina
allowsBackgroundLocationUpdatescomoYES. -
Sim. Quando uma rota é criada ou alterada, o
RouteChangeListenerfornece polilinhas. - Não, o SDK de navegação não exige que o Google Maps para dispositivos móveis esteja instalado no dispositivo.
- Não, o SDK do Navigation não oferece essa funcionalidade no momento.
- Sim. A direção do trânsito está disponível e é mostrada por padrão.
Problemas
- No Xcode 12, os apps não são compilados corretamente para o simulador. Como faço para resolver isso?
-
Para corrigir esse problema, abra as configurações de criação do seu projeto do Xcode e adicione
arm64aExcluded Architecturessomente para versões do "simulador de iOS".Se quiser mais informações, consulte a seguinte conversa do StackOverflow (em inglês).
- O GMSMapView não é carregado.
-
Se o GMSMapView não carregar:
- Verifique se o SDK de navegação está ativado no console do Cloud.
- Se o SDK de navegação estiver instalado, mas seu projeto não usar as APIs dele, remova-o do binário.
Rede
- Como o SDK do Navigation lida com conectividade ruim?
- O SDK do Navigation pré-armazena em cache o trajeto de cada viagem. As informações pré-armazenadas em cache incluem informações de trajeto para 15 a 20 minutos e alternativas de trajeto caso o motorista se desvie do trajeto. O SDK de navegação aproxima a posição usando o GPS e os sensores do dispositivo.
- Há um modo off-line disponível?
- Não, o SDK de navegação não oferece um modo off-line no momento. No entanto, ele fornece informações pré-armazenadas em cache para um trajeto.
Dados
- Posso recuperar todas as paradas/destinos de uma viagem antes de iniciar o trajeto?
-
Sim. No Android, para recuperar as rotas de um trajeto, chame
Navigator.getRouteSegments().No iOS, chame
GMSNavigator.routeLegs(read). - A navegação guiada está disponível no início de um trajeto?
- Sim. O SDK do Navigation fornece uma lista de trechos de trajeto. Além disso, o motorista pode deslizar o card de rotas no cabeçalho para ver cada manobra.
- Como o ETA é comunicado aos usuários do app?
-
No Android, siga estas etapas para fornecer informações de HEC aos usuários do app:
- Recupere o tempo e a distância de todos os waypoints usando
Navigator.getTimeAndDistanceList(). - Encaminhe essas informações para o aplicativo cliente, como você faz com o HEC do motorista.
No iOS, siga estas etapas para fornecer informações de HEC aos usuários do app:
- Recupere os trechos da viagem usando
Navigator.getRouteSegments(). - Chame
GMSNavigator.timeToNextDestinationpara cada trecho da viagem. - Encaminhe as informações de tempo para o aplicativo cliente, como você faz com o HEC do motorista.
- Recupere o tempo e a distância de todos os waypoints usando
-
O
RoadSnappedLocationProviderpode ser usado para obter o local atual do motorista se a navegação não estiver em primeiro plano? -
Sim. No Android, o
RoadSnappedLocationProvideré executado em segundo plano por padrão.No iOS, para manter a navegação em execução em segundo plano, implemente o listener para
GMSRoadSnappedLocationProviderListenere defina a propriedadeallowsBackgroundLocationUpdatescomoTRUE. - O SDK do Navigation é compatível com fronteiras geográficas virtuais?
-
Não. No contexto da navegação,
remainingTimeOrdistanceChangeListenertem uma vantagem sobre uma fronteira geográfica virtual. A fronteira geográfica virtual pode não considerar a geometria da via e não estar centralizada no ponto exato para onde o motorista está navegando.É possível aproximar essa funcionalidade usando
remainingTimeOrdistanceChangeListener.- Defina o limite para determinar a frequência dos callbacks.
- Verifique a distância restante até o destino.
Por exemplo, se você definir o limite como 100 m, vai receber um callback quando a distância até o destino mudar em 100 m. À medida que a distância diminui, é possível atualizar esse limite para um valor menor e receber callbacks mais frequentes. Em seguida, inspecione a distância restante para determinar se você está perto o suficiente do local de retirada/entrega.
No iOS, implemente o listener
GMSNavigatorListener.didUpdateRemainingDistancepara gerenciar a distância entre as notificações. - Posso desativar as notificações quando o app de navegação estiver em segundo plano?
-
Sim. No Android, use
Navigator.setHeadsUpNotificationEnabledpara controlar as notificações. Esse método tem um argumento booleano.FALSEdesativa as notificações;TRUEativa as notificações.No iOS, desative a notificação em segundo plano para locais ajustados à estrada definindo
GMSRoadSnappedLocationProvider.allowsBackgroundLocationUpdatescomo NO.Para desativar o processamento em segundo plano de outras notificações de local, chame
GMSNavigator.sendsBackgroundNotifications(NO).
Personalização da interface
- Posso usar cores para identificar a melhor opção de trajeto?
- Não. No momento, não é possível codificar por cores uma opção de trajeto específica.
- O SDK do Navigation pode mostrar o HEC para o destino final?
-
Sim. No Android, use os seguintes métodos:
- Recupere o tempo e a distância de todos os waypoints usando
Navigator.getTimeAndDistanceList(). - Oculte o HEC do waypoint atual usando
NavigationFragment.setEtaCardEnabled(false). - Renderizar o horário de chegada ao destino final.
No iOS, use o seguinte:
- Ligue para a
GMSNavigator.routeLegs(read). - Com o último trecho, chame
GMSNavigator.timeToNextDestination. - Oculte o HEC do waypoint atual definindo
MSMapView.settings.navigationFooterEnabled=NOcomo FALSE. - Renderizar o horário de chegada ao destino final.
- Recupere o tempo e a distância de todos os waypoints usando
- Como faço para ocultar as atualizações de HEC?
-
É possível desativar os cartões HEC com os seguintes métodos:
- No Android, use
navigationView.setEtaCardEnabled(false). - No iOS, use
GMSMapView.settings.navigationFooterEnabled=NO.
- No Android, use
-
No Android, use
StylingOptionspara definir o estilo da cor do plano de fundo. Para ocultar ou mostrar o cabeçalho e o rodapé, use as funções de membrosetHeaderEnabledesetFooterEnableddeNavigationFragment.No iOS, use
GMSMapView.settings.navigationHeaderPrimaryBackgroundColorpara definir o estilo da cor de fundo. Para ocultar ou mostrar o cabeçalho e o rodapé, use as propriedadesnavigationFooterEnabledenavigationHeaderEnableddeGMSUISettings.
Roteamento
- Posso fornecer um trajeto específico para um motorista ou remover trajetos alternativos?
- Não. Por padrão, várias rotas são fornecidas, e a mais rápida tem prioridade. Para influenciar o trajeto padrão, adicione preferências à solicitação, como "evitar rodovias e pedágios". Adicionar pontos de passagem também afeta o trajeto.
- Posso mostrar ao usuário do app um rótulo para o destino diferente do local de destino padrão?
-
Sim. No Android, crie um
Markercom um título personalizado para o destino e a latitude/longitude. O SDK do Navigation mostra o título personalizado e as coordenadas noNavigationMap.No iOS, você cria e exibe um
GMSMarkerpara o destino. - Posso usar o SDK do Navigation para rastrear desvios de um trajeto definido?
-
Sim. No Android, use
Navigator.setRouteChangedListenerpara receber notificações quando um trajeto mudar ou um novo for recomendado:- Registre um listener que verifique a posição do dispositivo ao longo do trajeto usando o método
Navigator.setRouteChangedListener. - Adicione o código ao manipulador de eventos de callback,
onRouteChanged:- Envie uma mensagem ao usuário do app com informações atualizadas sobre o HEC e a distância.
- Rastrear a localização do dispositivo.
- [opcional] Adicione outras funcionalidades necessárias para que o app lide com o motorista fora do trajeto prescrito.
No iOS, use o
GMSNavigatore os listeners dele para receber notificações quando um trajeto mudar ou um novo for recomendado:- No controlador de visualização do mapa, implemente os protocolos
GMSNavigatorListenereGMSRoadSnappedLocationProviderListener. - Implemente
GMSNavigatorListener.navigatorDidChangeRoute. - Acesse o novo trajeto usando as propriedades
routeLegsecurrentRouteLegdoGMSNavigator.
- Registre um listener que verifique a posição do dispositivo ao longo do trajeto usando o método
-
Sim. No Android, chame o método
Navigator.stopGuidance()para interromper a navegação.No iOS, chame
GMSNavigator.clearDestinations. - O SDK do Navigation é compatível com rotas e navegação para caminhões e veículos grandes?
-
Sim. Com o trajeto de veículos grandes (LVR, na sigla em inglês), é possível transmitir tokens de trajeto específicos para caminhões gerados pela API Routes ou API Route Optimization ao SDK do Navigation. O SDK oferece navegação guiada com avisos de trajeto (restrições de altura, peso, materiais perigosos e caminhões) e mantém o perfil físico do veículo durante o traçado de novos trajetos dinâmicos. Para mais detalhes, consulte Navegar em rotas para veículos grandes.
Simulador
- O simulador é compatível com mudanças de trajeto?
-
Sim. No Android, chame
simulateLocationsAlongNewRoutepara simular uma viagem que inclui uma mudança de trajeto. O métodosimulateLocationsAlongExistingRouteignora as mudanças na rota atual.No iOS, use
GMSLocationSimulator.simulateAlongNewRouteToDestinationspara simular uma jornada que inclui uma mudança de trajeto. Se você não prevê mudanças de rota, useGMSLocationSimulator.simulateLocationsAlongExistingRouteouGMSLocationSimulator.simulateAlongNewRouteToDestinations.
Fluxos de trabalho
- Como faço para dispensar a notificação depois de fechar uma atividade que contém um fragmento de navegação?
-
A notificação de navegação permanece visível durante a navegação, quando a atividade é fechada. Quando o veículo chega ao destino, a navegação é interrompida e a notificação desaparece.
Para processar cliques na notificação, use o
Navigator.startGuidance(intent resumeIntent). Oresume intenté acionado quando o usuário do app clica na notificação. Normalmente, oNavigator.startguidance(getIntent())é chamado na atividade principal, que chama a atividade novamente quando o usuário do app clica na notificação.
Serviços de mobilidade
Os Serviços de Mobilidade da Plataforma Google Maps oferecem um conjunto de APIs e SDKs para ajudar a atender às necessidades de empresas de transporte e logística. Para clientes dos Serviços de Mobilidade, o SDK do Navigation geralmente é usado em conjunto com serviços relacionados para otimização de rotas, despacho, planilha de controle de tarefas, análise de frotas e muito mais. O SDK do Navigation também é faturado de forma diferente para clientes dos Serviços de Mobilidade. Para mais informações, consulte a documentação dos Serviços de Mobilidade.
Os produtos de mobilidade estão disponíveis apenas para clientes selecionados. Entre em contato com seu representante de vendas para mais informações.
ReportBillableEvent no seu código. Somente os clientes dos Serviços de Mobilidade devem chamar o método ReportBillableEvent.
Há várias APIs no SDK de navegação que são destinadas apenas ao uso por clientes dos Serviços de mobilidade, que são cobrados pelo Google por transação. Se você não for um cliente dos Serviços de Mobilidade, os seguintes métodos serão no-ops:
Sim, os clientes dos Serviços de Mobilidade podem usar as implementações do SDK de Navegação com e sem os Serviços de Mobilidade. No entanto, só é possível usar um tipo de implementação em um app por vez. Você também precisa criar um novo projeto do Google Cloud, uma conta de faturamento e uma chave de API, separados daqueles que você usa com a implementação dos Serviços de Mobilidade. Para mais informações, consulte a visão geral da configuração do SDK do Navigation.
Para mais informações sobre como usar uma implementação do SDK de navegação que não seja dos Serviços de Mobilidade, incluindo a migração de um app de um tipo de implementação para outro, entre em contato com o representante da sua Conta do Google.
Observação: se você não é cliente dos Serviços de Mobilidade e quer saber mais sobre o conjunto de APIs e SDKs, entre em contato com a equipe de vendas da Plataforma Google Maps.