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];
}
有帮助吗?

解决方案

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]; 
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top