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