API Route Overview

A API Route Overview é um produto da Last Mile Fleet Solution criado com base na DriverSDK. Com ele, você pode recuperar informações de trajeto de um determinado veículo, seja como uma busca única ou contínua usando um listener para atualizações. A A API Route Overview oferece suporte aos seguintes tipos de informações:

  • Plano de trajeto completo, incluindo locais das paradas de veículos, tempos de viagem e distâncias
  • O caminho da polilinha do trajeto entre cada parada.

Este documento descreve as etapas de integração com a API para seu aplicativo.

Pré-requisitos

  • É preciso executar o aplicativo Android usando a versão alpha do DriverSDK v4.1.0 ou mais recente. O Canal Alfa está disponível usando transportation-driver-alpha para o artifactId do Maven.
  • A API consome as informações de trajeto fornecidas pelo Fleet Engine pela API Deliveries. Isso pode ser fornecido pelas APIs no DriverSDK (DeliveryDriverApi) ou diretamente no Fleet Engine.

Etapas de integração

Esta seção aborda as etapas básicas necessárias para integrar seu app Android para motoristas com a API. Estas instruções têm as seguintes suposições:

  • Você já tem um app Android integrado à SDK do Driver
  • Você inicializou o DeliveryDriverApi no app com um contexto é possível encontrar

Consulte Primeiros passos com o SDK do Driver para Android para mais detalhes.

Etapa 0: configuração do trajeto

Pule esta etapa se já tiver configurado o Fleet Engine e criar paradas de veículos e tarefas de entrega.

Para carregar as informações de paradas e tarefas no Fleet Engine, você precisa de um veículo de entrega atribuído a um trajeto válido. Isso ocorre porque a API Route Overview exige credenciais rotas para buscar dados. As rotas válidas são compostas por uma série de waypoints e paradas, e uma parada só pode existir se tiver pelo menos um tarefa. Consulte a Guia de integração da API Fleet Engine para mais informações.

Etapa 1: inicializar a API

Depois de estabelecer um trajeto válido com paradas e tarefas associadas, você pode inicialize a API Route Overview. A inicialização fornece o framework necessário para a conexão entre o Fleet Engine e a API. A Rota A API Overview precisa ser inicializada com o mesmo objeto de contexto usado inicialize DeliveryDriverApi no DriverSDK, já que o objeto se refere ao mesmo ID de veículo definido anteriormente no objeto DriverContext. O seguinte ilustra como criar uma instância de RouteOverviewApi.


RouteOverviewApi api = RouteOverviewApi.getInstance();
if (api == null) {
    api = RouteOverviewApi.createInstance(context);
}

Etapa 2: registrar o veículo para eventos de mudança de trajeto

Agora que a API foi inicializada, você pode usar o método VehicleRouteOverview para interagir com os recursos de visão geral do trajeto. Isso permite que para consumir as informações que você forneceu durante a configuração do trajeto. Use o listener de eventos da API para facilitar as atualizações de eventos e a recuperação de rotas.

Um evento de alteração de trajeto ocorre sempre que o caminho para qualquer uma das paradas atribuídas a o veículo é atualizado, uma parada é reorganizada ou quando o Fleet Engine atualiza Informações de HEC.


vehicleRouteOverview.addOnRouteChangedEventListener(event -> {
    // handle route update events
});

Etapa 3: ativar a API

Agora que está tudo pronto para consumir as informações do trajeto, ative a API para permitem que ele responda a eventos do veículo. A API é inicializada em um desativado para evitar o consumo desnecessário de largura de banda da rede.

vehicleRouteOverview.setRouteOverviewEnabled(true);

Você pode pausar essas atualizações a qualquer momento chamando o mesmo método com o método de false.

Etapa 4: desenhar o trajeto em um mapa do Google

Depois de receber uma lista de RouteToVehicleStops, você pode usá-la no seu para o aplicativo. Por exemplo, você pode desenhar o caminho da polilinha do trajeto em um mapa do Google instância. O snippet de código a seguir mostra um exemplo que desenha o trajeto polilinha na visualização de mapa e adiciona marcadores na parte superior de cada local de parada.

    GoogleMap googleMap = … // Instance of the Map view you are using
    ImmutableList<RouteToVehicleStop> route = event.newRoute();

    PolylineOptions routePolyline = new PolylineOptions().color(Color.BLUE);
    for (RouteToVehicleStop stop : route) {
        routePolyline.addAll(stop.path());

        MarkerOptions marker =
            new MarkerOptions().position(stop.vehicleStop().getWaypoint().getPosition());
        googleMap.addMarker(marker);
    }

    googleMap.addPolyline(routePolyline);
}

Captura de tela mostrando uma imagem de uma visão geral do trajeto

O resultado é uma visualização semelhante à captura de tela à direita:

Etapa 5: gerar um resumo do trajeto

Se você quiser que seu app emita uma chamada única para recuperar um snapshot do informações do trajeto atual, você pode usar o método a seguir para recuperar essas informações dados:

ListenableFuture<ImmutableList<RouteToVehicleStop> future = vehicleRouteOverview.getRouteToVehicleStops();
ImmutableList<RouteToVehicleStop> stops = future.get();

Você pode fazer isso em vez de se inscrever para atualizações de rota por meio de listeners de eventos.

Etapa 6: limpeza

Caso seu app não precise mais da funcionalidade de visão geral do trajeto, que você limpou. A limpeza evita memória, processamento e consumo de rede no seu aplicativo.

Remover um listener de eventos específico

Você deve remover um listener de eventos quando um listener específico não estiver mais necessários.

vehicleRouteOverview.removeOnRouteChangedEventListener(listener);

Limpar todos os listeners de eventos

Como parte de sua rotina de limpeza, você pode remover todos os diferentes listeners de eventos registrados de uma só vez.

vehicleRouteOverview.clearEventListeners();

Instância da API Clear Route Overview

Sempre que a visão geral do trajeto não for mais necessária ou o ID do veículo que está sendo monitorado mudar, você poderá chamar essa API para limpar referências internas.

vehicleRouteOverview.clearInstance();