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
| Plataforma | Biblioteca | Notas |
|---|---|---|
| Android | OSMDroid (OpenStreetMap) | Inicializado em MapFragment.onCreate() via Configuration.getInstance(). Tiles armazenados em cache local. |
| iOS | MapKit (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.