Frage

I am using a Map View within a UIViewController and I have provided a default location to zoom in on, with an annotation as well. However the zoom is not working. The Annotation is working fine, but the initial zoom to location isn't working.

I'm not sure what's causing the issue. Any help would be greatly appreciated.

Here's my code:

- (void)viewDidLoad
{
    [super viewDidLoad];

    MKCoordinateRegion myRegion;

    //Center
    CLLocationCoordinate2D center;
    center.latitude = 39.21516;
    center.longitude = -76.580806;

    //Span
    MKCoordinateSpan span;
    span.latitudeDelta = 0.02f;
    span.longitudeDelta = 0.02f;

    myRegion.center = center;
    myRegion.span = span;

    //set mapView
    [self.mapView setRegion:ascRegion animated:YES];

    //Annotation
    //Create coordinate for annotation
    CLLocationCoordinate2D theLocation;
    theLocation.latitude = 39.21516;
    theLocation.longitude = -76.580806;

    MyMapAnnotation * myAnnotation = [MyMapAnnotation alloc];
    myAnnotation.coordinate = theLocation;
    myAnnotation.title = @"I am here";
    myAnnotation.subtitle = @"This is where I am";

    [self.mapView addAnnotation:myAnnotation];
}
War es hilfreich?

Lösung

Try to follow this answer:

- (void)zoomToFitMapAnnotations:(MKMapView *)mapView { 
    if ([mapView.annotations count] == 0) return; 

    CLLocationCoordinate2D topLeftCoord; 
    topLeftCoord.latitude = -90; 
    topLeftCoord.longitude = 180; 

    CLLocationCoordinate2D bottomRightCoord; 
    bottomRightCoord.latitude = 90; 
    bottomRightCoord.longitude = -180; 

    for(id<MKAnnotation> annotation in mapView.annotations) { 
        topLeftCoord.longitude = fmin(topLeftCoord.longitude, annotation.coordinate.longitude); 
        topLeftCoord.latitude = fmax(topLeftCoord.latitude, annotation.coordinate.latitude); 
        bottomRightCoord.longitude = fmax(bottomRightCoord.longitude, annotation.coordinate.longitude); 
        bottomRightCoord.latitude = fmin(bottomRightCoord.latitude, annotation.coordinate.latitude); 
    } 

    MKCoordinateRegion region; 
    region.center.latitude = topLeftCoord.latitude - (topLeftCoord.latitude - bottomRightCoord.latitude) * 0.5; 
    region.center.longitude = topLeftCoord.longitude + (bottomRightCoord.longitude - topLeftCoord.longitude) * 0.5;      
    region.span.latitudeDelta = fabs(topLeftCoord.latitude - bottomRightCoord.latitude) * 1.1; 

    // Add a little extra space on the sides 
    region.span.longitudeDelta = fabs(bottomRightCoord.longitude - topLeftCoord.longitude) * 1.1; 

    region = [mapView regionThatFits:region]; 
    [mapView setRegion:region animated:YES]; 
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top