Sto usando MKDirectionsRequest per trovare un MKRoute tra due punti. La risposta verrà visualizzata sul MKMapView utilizzando questo codice:Visualizzazione di MKRoute su MKMapView in iOS7
MKDirections *directions = [[MKDirections alloc] initWithRequest:request];
[directions calculateDirectionsWithCompletionHandler:^(MKDirectionsResponse *response, NSError *error)
{
if (error)
{
NSLog(@"Error : %@", error);
}
else
{
[_mapView removeOverlays:_mapView.overlays];
for (MKRoute *route in response.routes)
{
[_mapView insertOverlay:route.polyline atIndex:0 level:MKOverlayLevelAboveRoads];
}
}
}];
La mia domanda è, se c'è un modo corretto per aggiornare il MKRoute se l'utente è in movimento. Atm Sto usando
- (void)mapView:(MKMapView *)aMapView didUpdateUserLocation:(MKUserLocation *)aUserLocation
di riconoscere il movimento e in questo metodo che sto eliminando la sovrapposizione MKRoute e calcolando e aggiungendo il nuovo con la nuova posizione dell'utente. Mi chiedo se esiste un modo per calcolare il percorso una sola volta e aggiornare l'overlay a livello di codice?
Modifica: Ho trovato questo https://developer.apple.com/library/ios/documentation/MapKit/Reference/MKRouteStep_class/Reference/Reference.html#//apple_ref/occ/cl/MKRouteStep in App Dev Devs. Mi sa che devo fare qualcosa di simile
for (MKRoute *route in response.routes)
{
for (MKRouteStep *step in route.steps)
{
[_mapView insertOverlay:step.polyline atIndex:0 level:MKOverlayLevelAboveRoads];
}
}
ma come posso riconoscere quali passi sono dietro la posizione dell'utente attuale?
Modifica: Un'altra opzione potrebbe essere quella di utilizzare un timer che attiva l'evento (rimuovendo la vecchia sovrapposizione e aggiungendo quella nuova). Cosa ne pensi?
Non consiglio il timer perché in questo caso è possibile aggiornare inutilmente il percorso anche se l'utente non si è spostato. L'opzione più semplice è farlo in didUpdateUserLocation ma solo se l'utente ha spostato X metri dall'ultima traccia. Non correlato, ma se si aggiunge il semplice tag "iOS" alla domanda, potrebbe ottenere più attenzione (come pure la sintassi, evidenziando correttamente il codice). – Anna
Ho già fatto qualcosa del genere, ma non sono sicuro del motivo per cui si desidera creare una mappa del percorso solo quando l'utente è in movimento. Puoi tracciare il percorso con MKPolyLine sulla mappa per la prima volta tra l'inizio e il punto finale.Successivamente, se l'utente si sposta, è possibile mostrare la posizione aggiornata dell'utente sulla mappa con il simbolo di posizione corrente predefinito (il cerchio blu di colore piccolo). Si prega di chiarire in modo che possa suggerire qualcosa, –
La posizione dell'utente viene visualizzata correttamente. per esempio. per un percorso da A-> B-> C la posizione dell'utente è A e il percorso viene visualizzato correttamente ma quando l'utente si sposta su B il percorso viene comunque visualizzato da A-> C non da B-> C. – matthias