2010-06-16 15 views
11

Sto utilizzando il kit di mappe e mostra la posizione dell'utente utilizzando "showsUserLocation" Sto usando il seguente codice per eseguire lo zoom sulla posizione dell'utente, ma non lo zoom. la posizione dell'utente sulla mappa sta mostrando corretto.iphone zoom nella posizione dell'utente su mapkit

MKCoordinateRegion newRegion; 
MKUserLocation* usrLocation = mapView.userLocation; 
newRegion.center.latitude = usrLocation.location.coordinate.latitude; 
newRegion.center.longitude = usrLocation.location.coordinate.longitude; 
newRegion.span.latitudeDelta = 20.0; 
newRegion.span.longitudeDelta = 28.0; 
[self.mapView setRegion:newRegion animated:YES]; 

Perché è la posizione dell'utente mostrando in modo corretto e non lo zoom in modo corretto. può qualcuno mi corregga per favore?

risposta

26

mapView.userLocation viene impostato su una posizione al largo della costa dell'Africa (0,0) al momento della prima istanza. Di conseguenza, faccio qualcosa di simile al seguente, che fa sì che lo zoom si verifichi quando appare l'annotazione. Naturalmente, questo è solo un esempio:

- (void)mapView:(MKMapView *)mv didAddAnnotationViews:(NSArray *)views { 
    for(MKAnnotationView *annotationView in views) { 
     if(annotationView.annotation == mv.userLocation) { 
      MKCoordinateRegion region; 
      MKCoordinateSpan span; 

      span.latitudeDelta=0.1; 
      span.longitudeDelta=0.1; 

      CLLocationCoordinate2D location=mv.userLocation.coordinate; 

      region.span=span; 
      region.center=location; 

      [mv setRegion:region animated:TRUE]; 
      [mv regionThatFits:region]; 
     } 
    } 
} 
1

hai verificato che la posizione restituito da mapView.userLocation non è a 0, 0?

+0

Se la posizione dell'utente è zero, non avrebbe mostrato esattamente il pin di annotazione che corrisponde alla mia posizione. – Satyam

+0

@satyam: con delta lat/long come lo hai descritto, potresti includere l'Africa nello zoom poiché 0,0 non è molto lontano dalla costa. Inoltre, non hai detto dove si trova la posizione dell'utente. –

3

si può provare:

mapView.userTrackingMode=YES; 
mapView.userTrackingMode=NO; 

UserTrackingMode lo zoom per utenti Posizione.

+0

Passa alla posizione corrente, ma non esegue lo zoom con grazia. –

+0

In iOs 8.3 si ingrandisce con grazia. –

Problemi correlati