API v1

Mapa — iOS

map/ViewController · map/ViewController1 Equivalente Android: MapFragment (OSMDroid)

Mapa em tempo real com posições de veículos, rotogramas e rotas planejadas. Usa MapKit nativo da Apple (o equivalente do OSMDroid no Android).

Arquivos

map/
├── ViewController.swift   · MapKit principal
└── ViewController1.swift  · variante / versão experimental

Funcionalidades

FeatureDetalhe
PosiçõesPolling em GET /v1/trackers ou stream via WebSocket.
VeículosGET /v1/vehicles com filtros de tipo.
RotogramasPolilinhas via MKPolyline + MKPolylineRenderer.
ClusterAnotações agrupadas (MKClusterAnnotation) quando zoom out.
Localização do usuárioCLLocationManagerNSLocationWhenInUseUsageDescription no Info.plist.
Áreas de riscoPolígonos vermelhos via MKPolygon + MKPolygonRenderer.
Pontos autorizadosAnotações StopPointAnnotation (pino azul com caixa para delivery).

Pontos autorizados e áreas de risco

Sobre a rota são desenhados os pontos autorizados (anotações) e as áreas de risco (polígonos vermelhos) da viagem. Mesma feature das telas Motorista, Gestor e detalhe do Grid — paridade com o Android.

Endpoint em STAGING: os pontos vêm do endpoint dedicado GET /v1/trip/{tripId}/rotogram, ainda apontando para http://nginx.surubim.monisat.online/v1 (stopPointsBase). Pendente troca para produção https://api.monisystem.com/v1. A rota + instruções continuam vindo de /rotograms/trip/{tripId}.

A resposta é um data[]; cada item agrega points + apolice_rules.risk_points + deliveries, concatenados num único conjunto de pontos. Cada ponto é classificado por type (fallback type_return):

type_returnRenderização (MapKit)
risk_areaMKPolygon vermelho a partir de location.coordinates (anel externo + buracos). Sempre visível.
clientStopPointAnnotation — ponto do cliente.
authorizedStopPointAnnotation — ponto autorizado.
deliveryStopPointAnnotation — pino azul com caixa (entrega).
Paridade Android/iOS: mesma agregação e classificação em ambos. Diferença conhecida: no iOS o toggle "mostrar todos" do motorista é protegido por flag remota (driver_trip_toggleStopPoints_enabled); no Android usa preferência local. Banner de aproximação (com histerese) e cache offline (CachedDriverSession.saveStopPoints/saveRiskAreas) existem nas duas plataformas.

Endpoints

GET/v1/trip/{tripId}/rotogram
Pontos autorizados + áreas de risco + entregas (data[] { points, apolice_rules.risk_points, deliveries }). Base em STAGING (http://nginx.surubim.monisat.online/v1) — trocar para produção quando disponível.
GET/v1/vehicles
Lista de veículos para o mapa.
GET/v1/trackers
Posições GPS por veículo.
GET/v1/rotograms/{routeId}?_detail=true
Um rotograma pelo id da rota — coordenadas + instruções.
GET/v1/rotograms/trip/{tripId}?_detail=true
Endpoint consolidado por viagem. Rotograma principal + alternativas da viagem numa só chamada (data[0].rotogram_route). Usado por DriverViewController, ManagerViewController1 e DetailGridViewController — paridade com o Android. Base de produção https://api.monisystem.com/v1.