Perguntas frequentes
Detalhes do produto
- Como o aviso de Termos de Serviço do SDK do Navigation deve ser mostrado?
- Com quais idiomas a orientação por voz é compatível?
- A direção é mantida quando o motorista sai do modo de navegação?
- As polilinhas estão disponíveis ao iniciar ou mudar uma rota?
- Os usuários do app precisam ter o Google Maps para dispositivos móveis instalado?
- O SDK Navigation pode identificar estacionamentos perto de restaurantes e outros destinos?
- O SDK de navegação mostra a direção do tráfego nas faixas ao se aproximar de um ponto de virada?
Problemas
- No Xcode 12, os apps não são criados corretamente para o simulador. Como posso resolver isso?
GMSMapView
não carrega.
Rede
Dados
- Posso extrair todas as paradas/destinos de uma viagem antes de iniciar o trajeto?
- A orientação de trajeto por voz está disponível no início de um trajeto?
- Como a hora estimada de chegada (ETA) é comunicada aos usuários do app?
- O
RoadSnappedLocationProvider
pode ser usado para extrair o local fixado atual do motorista se a navegação não estiver em primeiro plano? - O SDK do Navigation oferece suporte a fronteira geográfica virtual?
- Posso desativar as notificações quando o app Navigation estiver em segundo plano?
Personalização da interface
- Posso usar um código de cores para a melhor opção de rota?
- O SDK do Navigation pode mostrar o HEC do destino final?
- Como posso ocultar as atualizações de ETA?
- Quais personalizações de interface estão disponíveis para os cards de cabeçalho e rodapé?
Roteamento
- Posso fornecer uma rota específica para um motorista ou remover rotas alternativas?
- Posso mostrar ao motorista um rótulo diferente para o destino em vez do local de destino padrão?
- Posso usar o SDK de navegação para rastrear desvios de um caminho definido?
- O motorista pode sair da navegação sem concluir o trajeto?
Simulador
Fluxos de trabalho
Serviços de mobilidade
- Como o uso do SDK Navigation é diferente para os 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 de navegação que não seja dos Serviços de Mobilidade?
Detalhes do produto
- O app precisa implementar uma caixa de diálogo com a notificação dos Termos de Serviço do SDK de navegação 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 de navegação.
- No Android, use o método
NavigationApi.showTermsAndConditionsDialog
para mostrar a caixa de diálogo com os termos. - No iOS, chame
GMSNavigationServices.showTermsAndConditionsDialogIfNeededWithCompanyName
. - Todos os idiomas aceitos pelo Google Maps Mobile estão automaticamente disponíveis para o SDK Navigation. Um dispositivo tem um idioma de sistema padrão 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
LocationListener
continua em execução em segundo plano. O app continua ajustando a posição e mantendo a direção.No iOS, para continuar recebendo atualizações de localização da posição e da direção em segundo plano, implemente o ajuste de estrada e defina
allowsBackgroundLocationUpdates
comoYES
. -
Sim. Quando uma rota é criada ou alterada, o
RouteChangeListener
fornece polilinhas. - Não, o SDK de navegação não exige que o Google Maps Mobile esteja instalado no dispositivo.
- Não, o SDK de navegação não oferece essa funcionalidade no momento.
- Sim. A direção do trânsito está disponível e é exibida por padrão.
Problemas
- No Xcode 12, os apps não são compilados corretamente para o simulador. Como posso resolver isso?
-
Para corrigir esse problema, abra as configurações de criação do seu projeto do Xcode e adicione
arm64
aExcluded Architectures
somente 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 carrega.
-
Se o GMSMapView não carregar:
- Verifique se o NavSDK está ativado no console do Cloud.
- Se o SDK Nav estiver instalado, mas o projeto não usar as APIs do SDK Nav, remova-o do binário.
Rede
- Como o SDK do Navigation lida com a conectividade ruim?
- O SDK Navigation armazena em cache antecipadamente o trajeto de cada viagem. As informações pré-armazenadas em cache incluem informações de roteamento de 15 a 20 minutos e rotas alternativas caso o motorista se desvie da rota. 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, o SDK fornece informações pré-armazenadas em cache para uma jornada.
Dados
- Posso recuperar todas as paradas/destinos de uma viagem antes de iniciar a rota?
-
Sim. No Android, para extrair as direções de uma rota, chame
Navigator.getRouteSegments()
.No iOS, chame
GMSNavigator.routeLegs(read)
. - A orientação de rota com instruções detalhadas está disponível no início de uma rota?
- Sim. O SDK de navegação fornece uma lista de segmentos de rota. Além disso, o motorista pode deslizar pelo card de direções 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 ETA aos usuários do app:
- Extraia o tempo e a distância de todos os waypoints usando
Navigator.getTimeAndDistanceList()
. - Encaminhar essas informações para o aplicativo cliente, como você faz atualmente para a HEC do motorista.
No iOS, siga estas etapas para fornecer informações de ETA aos usuários do app:
- Extraia as pernas da viagem usando
Navigator.getRouteSegments()
. - Chame
GMSNavigator.timeToNextDestination
para cada trecho da viagem. - Encaminhar as informações de tempo para o aplicativo cliente, como você faz atualmente para a hora estimada de chegada do motorista.
- Extraia o tempo e a distância de todos os waypoints usando
-
O
RoadSnappedLocationProvider
pode ser usado para obter o local fixado 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
GMSRoadSnappedLocationProviderListener
e defina a propriedadeallowsBackgroundLocationUpdates
comoTRUE
. - O SDK do Navigation oferece suporte a fronteiras geográficas virtuais?
-
Não. No contexto da navegação,
remainingTimeOrdistanceChangeListener
tem uma vantagem em relação a uma fronteira geográfica simples. A fronteira geográfica 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.
- Confira a distância restante até o destino.
Por exemplo, se você definir o limite em 100 m, vai receber um callback quando a distância até o destino mudar em 100 m. À medida que a distância diminui, você pode atualizar esse limite para um valor menor e receber callbacks mais frequentes. Em seguida, verifique a distância restante para determinar se você está perto o suficiente do local de retirada/entrega.
No iOS, implemente o listener
GMSNavigatorListener.didUpdateRemainingDistance
para 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.setHeadsUpNotificationEnabled
para controlar as notificações. Esse método tem um argumento booleano.FALSE
desativa as notificações;TRUE
as ativa.No iOS, desative a notificação em segundo plano para locais aproximados por vias definindo
GMSRoadSnappedLocationProvider.allowsBackgroundLocationUpdates
como "NÃO".Para desativar o processamento em segundo plano para outras notificações de local, chame
GMSNavigator.sendsBackgroundNotifications(NO)
.
Personalização da interface
- Posso usar um código de cores para a melhor opção de trajeto?
- Não. Não é possível usar a codificação por cores em uma opção de rota específica no momento.
- O SDK de navegação pode mostrar o ETA para o destino final?
-
Sim. No Android, use os seguintes métodos:
- Extraia o tempo e a distância de todos os waypoints usando
Navigator.getTimeAndDistanceList()
. - Ocultar o HEC do ponto de passagem atual usando
NavigationFragment.setEtaCardEnabled(false)
. - Renderize a hora estimada de chegada (ETA) do destino final.
No iOS, use o seguinte:
- Ligue para a
GMSNavigator.routeLegs(read)
. - Na última etapa, chame
GMSNavigator.timeToNextDestination
. - Ocultar a estimativa de chegada do ponto de passagem atual usando
MSMapView.settings.navigationFooterEnabled=NO
como FALSO. - Renderize a hora estimada de chegada no destino final.
- Extraia o tempo e a distância de todos os waypoints usando
- Como posso ocultar as atualizações de ETA?
-
É possível desativar os cards de ETA com os seguintes métodos:
- No Android, use
navigationView.setEtaCardEnabled(false)
. - No iOS, use
GMSMapView.settings.navigationFooterEnabled=NO
.
- No Android, use
-
No Android, use
StylingOptions
para definir o estilo de cor do plano de fundo. Para ocultar ou mostrar o cabeçalho e o rodapé, use as funções de membrosetHeaderEnabled
esetFooterEnabled
deNavigationFragment
.No iOS, use
GMSMapView.settings.navigationHeaderPrimaryBackgroundColor
para definir o estilo da cor de plano de fundo. Para ocultar ou mostrar o cabeçalho e o rodapé, use as propriedadesnavigationFooterEnabled
enavigationHeaderEnabled
deGMSUISettings
.
Roteamento
- Posso fornecer uma rota específica para um motorista ou remover rotas alternativas?
- Não. Por padrão, várias rotas são fornecidas, e a rota mais rápida tem prioridade. É possível alterar a rota padrão adicionando preferências, como "evitar rodovias e pedágios", à solicitação. Adicionar pontos de passagem também afeta o trajeto.
- Posso mostrar ao usuário do app um rótulo diferente para o destino em vez do local de destino padrão?
-
Sim. No Android, crie um
Marker
com um título personalizado para o destino e a latitude/longitude. O SDK de navegação mostra o título personalizado e as coordenadas noNavigationMap
.No iOS, você cria e mostra um
GMSMarker
para o destino. - Posso usar o SDK Navigation para rastrear desvios de um caminho definido?
-
Sim. No Android, use
Navigator.setRouteChangedListener
para receber notificações quando uma rota mudar ou uma nova rota for recomendada:- 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
:- Enviar uma mensagem ao usuário do app com informações atualizadas sobre a HEC e a distância.
- Rastrear a localização do dispositivo.
- [Opcional] Adicione outras funcionalidades exigidas pelo app para processar quando o motorista estiver fora da rota prescrita.
No iOS, use o
GMSNavigator
e os listeners dele para receber notificações quando uma rota mudar ou uma nova rota for recomendada:- No controlador de visualização do mapa, implemente o protocolo
GMSNavigatorListener
e o protocoloGMSRoadSnappedLocationProviderListener
. - Implemente
GMSNavigatorListener.navigatorDidChangeRoute
. - Acesse a nova rota usando as propriedades
routeLegs
ecurrentRouteLeg
doGMSNavigator
.
- 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
.
Simulador
- O simulador oferece suporte a mudanças de rota?
-
Sim. No Android, chame
simulateLocationsAlongNewRoute
para simular uma viagem que inclui uma mudança de trajeto. O métodosimulateLocationsAlongExistingRoute
ignora as mudanças na rota atual.No iOS, use
GMSLocationSimulator.simulateAlongNewRouteToDestinations
para simular uma rota que inclui uma mudança de trajeto. Se você não espera mudanças de rota, useGMSLocationSimulator.simulateLocationsAlongExistingRoute
ouGMSLocationSimulator.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
Navigator.startGuidance(intent resumeIntent)
. Oresume intent
é acionado quando o usuário do app clica na notificação. Normalmente, oNavigator.startguidance(getIntent())
é chamado da atividade principal, que recupera a atividade quando o usuário do app clica na notificação.
Serviços de mobilidade
Os Serviços de Mobilidade da Plataforma Google Maps oferecem uma coleção de APIs e SDKs para ajudar a atender às necessidades empresariais de transporte e logística. Para clientes de serviços de mobilidade, o SDK de navegação geralmente é usado com serviços relacionados para otimização de rotas, envio, rastreamento de tarefas, análise de frota e muito mais. O SDK do Navigation também é faturado de maneira diferente para clientes dos Serviços de mobilidade. Para mais informações, consulte a documentação dos Serviços de mobilidade.
No momento, os produtos de mobilidade estão disponíveis apenas para alguns clientes. Entre em contato com seu representante de vendas para mais informações.
ReportBillableEvent
no código. Somente os clientes da Mobility Services precisam 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 cliente dos Serviços de mobilidade, os métodos a seguir não vão funcionar:
Sim, os clientes dos Serviços de mobilidade podem usar implementações do SDK de navegação tanto dos Serviços de mobilidade quanto de outros serviços. No entanto, só é possível usar um tipo de implementação em um app por vez. Você também precisa criar um novo projeto, uma conta de faturamento e uma chave de API do Google Cloud, separados daqueles usados na implementação dos Serviços de mobilidade. Para mais informações, consulte Visão geral da configuração do SDK Navigation.
Para mais informações sobre o uso de uma implementação do SDK de navegação que não seja de 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 for cliente da Mobility Services e quiser saber mais sobre a coleção de APIs e SDKs da Mobility Services, entre em contato com as vendas da Plataforma Google Maps.