2011-08-11 15 views
8

Tengo un MAPview que amplía la imagen a la ubicación actual utilizando viewDidLoad:/zoom a la función actual ubicación (MapKit)

#define METERS_PER_MILE 1609.344 

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib. 
- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    mapView.showsUserLocation=TRUE; 

    // zoom to a specific area 
    CLLocationCoordinate2D zoomLocation; 
    zoomLocation.latitude = -28.994167; 
    zoomLocation.longitude = 134.866944; 

    MKCoordinateRegion viewRegion = MKCoordinateRegionMakeWithDistance(zoomLocation, 1900*METERS_PER_MILE, 1900*METERS_PER_MILE); 
    MKCoordinateRegion adjustedRegion = [mapView regionThatFits:viewRegion];  

    // make sure the Google water mark is always visible 
    mapView.autoresizingMask = 
    (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight); 

    [mapView setRegion:adjustedRegion animated:YES];   

    mapView.delegate=self; 

    searchBar.delegate = self; 
} 

Esto funciona bien. Agregué una barra de búsqueda y una función para saltar a una ubicación de dirección específica. Esto funciona bien, también. Ahora quiero agregar un botón para volver a la ubicación actual. ¿Puedes darme una mano, por favor?

Saludos

Respuesta

10

Es necesario que ajuste el centro de su mapa para la ubicación actual de barril de ese botón. Decir, como este:

- (IBAction)showCurrentLocation {   
    [mapView setCenterCoordinate:mapView.userLocation.location.coordinate animated:YES]; 
} 
+0

hay una función llamada setCenter? – carbonr

+0

@carbonr sí, hay –

+12

[mapView setCenterCoordinate: mapView.userLocation.location.coordinate animado: YES]; – carbonr

2

También puede probar:

mapView.userTrackingMode=YES; 
mapView.userTrackingMode=NO; 
+0

Solo asegúrese de llamar esto en el método viewDidAppear o posterior. – lehn0058

+1

'userTrackingMode' no es un' BOOL'. Es una enumeración 'MKUserTrackingMode'. El único motivo para configurar 'SÍ' /' NO' "funciona" es porque 'SÍ' es igual a' MKUserTrackingModeFollow' y 'NO' es igual a' MKUserTrackingModeNone'. Pero 'userTrackingMode' también puede ser un tercer valor' MKUserTrackingModeFollowWithHeading'. – Anna

0
- (void)showCurrentLocation{ 

    MKMapPoint annotationPoint = MKMapPointForCoordinate(self.mapView.userLocation.coordinate); 
    MKMapRect zoomRect = MKMapRectMake(annotationPoint.x, annotationPoint.y, 0.0, 0.0); 
    [self.mapView setVisibleMapRect:zoomRect animated:YES]; 
} 
1

puede vincular este IBAction a su UIButton, que va a mover el mapa en la posición actual y el zoom en eso.

@IBOutlet weak var mapView: MKMapView! 

@IBAction func zoomToUserCurrentLocation(sender: AnyObject) { 
    if self.mapView != nil { 
     self.mapView.setRegion(MKCoordinateRegionMake(
      self.mapView.userLocation.coordinate, 
      MKCoordinateSpanMake(0.1, 0.1) 
     ), animated: true) 
    } 
} 

MKCoordinateSpan define el área abarcada por una región del mapa, estos valores son más pequeños, más cerca se zoom en el mapa.

0

para SWIFT

añadir esta línea de acción del botón yourMKMapView.setUserTrackingMode(.follow, animated: true)

Asegúrese de agregar yourMKMapView.showsUserLocation = true en viewDidLoad()

Cuestiones relacionadas