2010-06-16 7 views
11

Estoy usando el kit de mapas y mostrando la ubicación del usuario usando "showsUserLocation" Estoy usando el siguiente código para acercarme a la ubicación del usuario, pero sin hacer zoom. la ubicación del usuario en el mapa está mostrando correcta.iphone zoom a ubicación del usuario en el kit de mapas

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]; 

¿por qué es la ubicación del usuario que muestra correctamente y no el zoom correctamente. puede alguien me corrija por favor?

Respuesta

26

mapView.userLocation se establece en una ubicación fuera de la costa de África (0,0) cuando se crea la primera instancia. Como resultado, hago algo como lo siguiente, que hace que el zoom ocurra cuando aparece la anotación. Por supuesto, esto es sólo un ejemplo:

- (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

¿Ha verificado que la ubicación devuelto por mapView.userLocation no es en 0, 0?

+0

Si la ubicación del usuario es cero, no habría mostrado exactamente el pin de anotación que coincide con mi ubicación. – Satyam

+0

@satyam: con delta lat/lon tal como lo describió, podría incluir África en el zoom ya que 0,0 no está tan lejos de la costa. Además, no dijiste dónde está la ubicación del usuario. –

3

que puede probar:

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

UserTrackingMode se acercará al usuario Ubicación.

+0

Esto va a la ubicación actual, pero no se agranda con gracia. –

+0

En iOs 8.3, amplía con gracia. –

Cuestiones relacionadas