Perguntas frequentes
Fatos do produto
- Como o aviso dos Termos de Serviço do SDK de navegação deve ser mostrado?
- Quais idiomas são compatíveis com a orientação por voz?
- O rolamento é mantido 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 virada?
Rede
Dados
- Posso recuperar todas as paradas/destinos de uma viagem antes de iniciar o trajeto?
- A orientação de navegação guiada está disponível no início de um trajeto?
- Como o horário estimado de chegada (HEC) é comunicado aos usuários do app?
- O
RoadSnappedLocationProvider
pode ser usado para conferir a localização apontada atual do motorista se a navegação não estiver em primeiro plano? - O SDK do Navigation oferece suporte à fronteira geográfica virtual?
- Posso desativar as notificações quando o app de navegação estiver em segundo plano?
- Como posso acessar o registro de transações mantido pelo Google?
Personalização da interface
- Posso codificar a melhor opção de trajeto por cores?
- O SDK do Navigation pode mostrar o HEC para o destino final?
- Como ocultar as atualizações do HEC?
- Quais personalizações de interface estão disponíveis para os cards de cabeçalho e rodapé?
Roteamento
- Posso informar um trajeto específico a um motorista ou remover trajetos alternativos?
- Posso mostrar ao motorista um rótulo diferente do local de destino padrão?
- Posso usar o SDK do Navigation para acompanhar desvios de um caminho definido?
- O motorista pode sair do trajeto sem concluir o trajeto?
Simulador
Fluxos de trabalho
Fatos do produto
- Seu app precisa implementar uma caixa de diálogo com o aviso dos Termos de Serviço do SDK de navegação que cada motorista precisa aceitar. Essa caixa de diálogo permite que o motorista concorde 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.showTermsAndConditionsDialog
para exibir a caixa de diálogo que contém os termos. - No iOS, chame
GMSNavigationServices.showTermsAndConditionsDialogIfNeededWithCompanyName
. - Todos os idiomas compatíveis com o Google Maps para dispositivos móveis ficam disponíveis automaticamente no SDK do Navigation. 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, uma vez iniciado, o
LocationListener
continua sendo executado em segundo plano. O app continua ajustando a posição da via e mantém o rolamento.No iOS, para continuar recebendo atualizações de localização de posição e direção em segundo plano, implemente o ajuste de vias e defina
allowsBackgroundLocationUpdates
comoYES
. -
Sim. Quando um trajeto é criado ou alterado, o
RouteChangeListener
fornece polilinhas. - Não, o SDK do Navigation 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 é exibida por padrão.
Rede
- Como o SDK do Navigation lida com conectividade ruim?
- O SDK do Navigation armazena previamente em cache a rota para cada jornada. Elas incluem informações de trajeto que levam de 15 a 20 minutos e alternativas de trajeto caso o motorista desvie do trajeto. O SDK do Navigation aproxima a posição usando o GPS e os sensores do dispositivo.
- O modo off-line está disponível?
- Não, o SDK do Navigation não oferece um modo off-line no momento. No entanto, ele fornece informações pré-armazenadas em cache para uma jornada.
Dados
- Posso recuperar todas as paradas/destinos de uma jornada 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 orientação guiada está disponível no início de um trajeto?
- Sim. O SDK do Navigation oferece uma lista de segmentos de trajeto. Além disso, o motorista pode deslizar pelo card de rotas no cabeçalho para conferir todas as manobras.
- Como o HEC é informado 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 faz atualmente 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 jornada usando
Navigator.getRouteSegments()
. - Chame
GMSNavigator.timeToNextDestination
para cada trecho da viagem. - Encaminhe as informações de tempo para o aplicativo cliente como faz atualmente com o ETA do motorista.
- Recupere o tempo e a distância de todos os waypoints usando
-
O
RoadSnappedLocationProvider
poderá ser usado para conferir a localização ajustada 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 segundo plano, implemente o delegado para
GMSRoadSnappedLocationProviderDelegate
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 sobre uma simples fronteira geográfica virtual. É possível que a fronteira geográfica virtual não considere a geometria das vias e não esteja centralizada no ponto exato em que o motorista está navegando.Para aproximar essa funcionalidade, use
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 como 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, inspecione a distância restante para determinar se você está perto o suficiente do local de embarque/desembarque.
No iOS, implemente o delegado
GMSNavigatorDelegate.didUpdateRemainingDistance
para gerenciar a distância entre as notificações. - Posso desativar as notificações quando o app de navegação está em segundo plano?
-
Sim. No Android, use
Navigator.setHeadsUpNotificationEnabled
para controlar as notificações. Este método tem um argumento booleano.FALSE
: desativa as notificações;TRUE
ativa as notificações.No iOS, desative as notificações em segundo plano para locais posicionados na estrada definindo
GMSRoadSnappedLocationProviderDelegate.allowsBackgroundLocationUpdates
como NO.Para desativar o processamento em segundo plano para outras notificações de local, chame
GMSNavigator.sendsBackgroundNotifications(NO)
. -
O Gravador de transações rastreia embarques e desembarques com um ID exclusivo, que o Google registra para fins de faturamento. Para mais informações, consulte as Instruções de teste de implementação da sua plataforma:
Para informações sobre os aspectos de codificação das transações de faturamento, consulte Transações faturáveis.
Personalização da interface
- Posso usar um código de cores para a melhor opção de trajeto?
- Não. A codificação de cores para uma opção de trajeto específica não é compatível no momento.
- 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)
. - Renderize o HEC do destino final.
No iOS, use o seguinte:
- Chame
GMSNavigator.routeLegs(read)
. - No último trecho, chame
GMSNavigator.timeToNextDestination
. - Oculte o HEC do waypoint atual usando
MSMapView.settings.navigationFooterEnabled=NO
para FALSE. - Renderize o HEC do destino final.
- Recupere o tempo e a distância de todos os waypoints usando
- Como ocultar as atualizações do HEC?
-
Você pode 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, você usa
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 de cor do plano de fundo. Para ocultar ou mostrar o cabeçalho e o rodapé, use as propriedadesnavigationFooterEnabled
enavigationHeaderEnabled
deGMSUISettings
.
Roteamento
- Posso indicar um trajeto específico ao motorista ou remover trajetos alternativos?
- Não. Por padrão, são fornecidas várias rotas, e a mais rápida tem prioridade. É possível afetar o trajeto padrão adicionando preferências à solicitação, como "evitar rodovias e pedágios". A adição de waypoints também afeta o trajeto.
- Posso mostrar ao usuário do app um rótulo diferente para o local de destino padrão?
-
Sim. No Android, crie uma
Marker
com 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 mostra um
GMSMarker
para o destino. - Posso usar o SDK do Navigation para rastrear desvios de um caminho definido?
-
Sim. No Android, use
Navigator.setRouteChangedListener
para receber notificações quando uma rota mudar ou for recomendada:- Registre um listener que verifica 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.
- Monitore a localização do dispositivo.
- [opcional] Adicione outras funcionalidades exigidas pelo app para processar quando o motorista estiver fora do trajeto prescrito.
No iOS, use o
GMSNavigator
e os delegados para receber notificações quando uma rota mudar ou for recomendada:- No controlador de visualização do mapa, implemente os protocolos
GMSNavigatorDelegate
eGMSRoadSnappedLocationProviderDelegate
. - Implemente
GMSNavigatorDelegate.navigatorDidChangeRoute
. - Acesse o novo trajeto usando as propriedades
routeLegs
ecurrentRouteLeg
doGMSNavigator
.
- Registre um listener que verifica 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 é compatível com mudanças de rota?
-
Sim. No Android, chame
simulateLocationsAlongNewRoute
para simular uma jornada que inclui uma mudança de rota. O métodosimulateLocationsAlongExistingRoute
ignora as mudanças na rota atual.No iOS, use
GMSLocationSimulator.simulateAlongNewRouteToDestinations
para simular uma jornada que inclui uma mudança de trajeto. Se você não antecipar nenhuma mudança de rota, poderá usarGMSLocationSimulator.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 gerenciar cliques na notificação, use o
Navigator.startGuidance(intent resumeIntent)
. Oresume intent
é disparado quando o usuário do app clica na notificação. Normalmente, oNavigator.startguidance(getIntent())
é chamado na atividade principal, que chama a atividade quando o usuário do app clica na notificação.