Sto utilizzando un pulsante MKUserTrackingBarButtonItem
per consentire all'utente di tracciare automaticamente la propria posizione su una mappa. Il problema è che quando toccano questo pulsante, viene ingrandito troppo. Voglio che inizi a un livello di zoom specificato (es. Span). Come posso raggiungere questo obiettivo?Come specificare il livello di zoom quando si utilizza un oggetto MKUserTrackingBarButtonItem?
Quando l'utente tocca il pulsante per passare a MKUserTrackingModeFollow
, sembra che utilizzi lo stesso livello di zoom a cui l'utente ha modificato l'ultima volta manualmente (ad esempio utilizzando i gesti sulla mappa). Il tentativo di specificare un diverso livello di zoom tramite setRegion
o setVisibleMapRect
non influisce sul livello di zoom che verrà utilizzato quando si passa alla modalità MKUserTrackingModeFollow
.
Tentando di override mapView:didChangeUserTrackingMode:
per impostare la regione, la modalità viene modificata in MKUserTrackingModeNone
. Esempio:
- (void)mapView:(MKMapView *)mapView didChangeUserTrackingMode:(MKUserTrackingMode)mode animated:(BOOL)animated {
if (mode == MKUserTrackingModeFollow) {
CLLocationCoordinate2D center = mapView.userLocation.location.coordinate;
MKCoordinateSpan span = MKCoordinateSpanMake(0.002306, 0.001717);
[mapView setRegion:MKCoordinateRegionMake(center, span) animated:YES];
// [mapView setUserTrackingMode:MKUserTrackingModeFollow animated:NO];
}
}
Se tento di ripristinare la modalità subito dopo l'impostazione della regione, funziona bene se l'utente è fermo, ma lo zoom indietro se l'utente è in movimento.
La soluzione più semplice sarebbe se ci fosse un modo per specificare semplicemente qualcosa come un livello di zoom per MKUserTraking inviandogli il mio valore di span. Tuttavia, dal momento che non sembra esistere, che altro posso fare?
Avete trovato una soluzione per Questo? Al momento sto sbattendo la testa contro lo stesso problema. –