API v1

Mapa — Rastreamento e Rotogramas

Android: MapFragment — OSMDroid

Visualização de mapa com rastreamento em tempo real de veículos e exibição de rotogramas (rotas cadastradas). O Android usa OSMDroid (OpenStreetMap); o iOS usa MapKit.

Biblioteca de Mapas

PlataformaBibliotecaNotas
AndroidOSMDroid (OpenStreetMap)Inicializado em MapFragment.onCreate() via Configuration.getInstance(). Tiles armazenados em cache local.
iOSMapKit (Apple Maps)Anotações nativas com MKAnnotationView. Rota via MKPolyline.

Rotogramas

Rotas cadastradas no sistema (rotogramas) são exibidas como polylines sobre o mapa. Os dados são buscados e desempacotados do wrapper data[0]:

// Estrutura da resposta v1
{
  "data": [{
    "rotogram_route": {
      "coordinates": [[lng, lat], [lng, lat], ...]   // GeoJSON: longitude ANTES de latitude
    },
    "instruction": [...]
  }]
}
Ordem das coordenadas: o formato GeoJSON retorna [longitude, latitude]. Inverter para [latitude, longitude] ao criar pontos no OSMDroid (GeoPoint(lat, lng)) e no MapKit (CLLocationCoordinate2D(latitude:, longitude:)).

Rastreamento de Veículos

Marcadores de veículos são exibidos com ícones diferenciados por status. A posição é atualizada periodicamente via polling à API ou via push quando disponível.

Endpoints

GET /v1/rotograms/{routeId}
Retorna o rotograma com coordenadas da rota e instruções de navegação. Acesso via data[0].rotogram_route.coordinates e data[0].instruction.
GET /v1/vehicles?type=V
Lista veículos rastreados. Filtrar por type == "V" para obter apenas veículos com rastreador ativo.
GET /v1/trackers?vehicle_id=...
Última posição GPS do rastreador associado ao veículo. Usado para posicionar o marcador no mapa.

Configuração OSMDroid (Android)

// Inicialização obrigatória antes de usar o mapa
Configuration.getInstance().load(context, PreferenceManager.getDefaultSharedPreferences(context))
Configuration.getInstance().userAgentValue = BuildConfig.APPLICATION_ID
O GridTripFragment também chama Configuration.getInstance() no onCreateView, pois pode navegar para o mapa. Isso garante que o OSMDroid esteja configurado antes da transição.