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
| Feature | Detalhe |
|---|---|
| Posições | Polling em GET /v1/trackers ou stream via WebSocket. |
| Veículos | GET /v1/vehicles com filtros de tipo. |
| Rotogramas | Polilinhas via MKPolyline + MKPolylineRenderer. |
| Cluster | Anotações agrupadas (MKClusterAnnotation) quando zoom out. |
| Localização do usuário | CLLocationManager — NSLocationWhenInUseUsageDescription no Info.plist. |
| Áreas de risco | Polígonos vermelhos via MKPolygon + MKPolygonRenderer. |
| Pontos autorizados | Anotaçõ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_return | Renderização (MapKit) |
|---|---|
risk_area | MKPolygon vermelho a partir de location.coordinates (anel externo + buracos). Sempre visível. |
client | StopPointAnnotation — ponto do cliente. |
authorized | StopPointAnnotation — ponto autorizado. |
delivery | StopPointAnnotation — 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}/rotogramPontos 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/vehiclesLista de veículos para o mapa.
GET
/v1/trackersPosições GPS por veículo.
GET
/v1/rotograms/{routeId}?_detail=trueUm rotograma pelo id da rota — coordenadas + instruções.
GET
/v1/rotograms/trip/{tripId}?_detail=trueEndpoint 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.