有没有办法让mkmapview放大以显示所有注释?我在北美有94个注释,我不希望用户必须缩小很多。以下是我的代码片段:
- (void)viewDidLoad {
[super viewDidLoad];
[mapView setMapType:MKMapTypeStandard];
[mapView setZoomEnabled:YES];
[mapView setScrollEnabled:YES];
// Central Alabama Chapter
MKCoordinateRegion region = { {0.0, 0.0 }, { 0.0, 0.0 } };
region.center.latitude = 33.45606;
region.center.longitude = -86.83078;
region.span.longitudeDelta = 0.01f;
region.span.latitudeDelta = 0.01f;
[mapView setRegion:region animated:YES];
[mapView setDelegate:self];
DisplayMap *ann = [[DisplayMap alloc] init];
ann.title = @"Central Alabama Chapter";
ann.subtitle = @"721 Hillmoor Lane Homewood, Alabama 35209";
ann.coordinate = region.center;
[mapView addAnnotation:ann];
// Walnut Ridge Fire Department
MKCoordinateRegion region1 = { {0.0, 0.0 }, { 0.0, 0.0 } };
region1.center.latitude = 36.11493;
region1.center.longitude = -90.95695;
region1.span.longitudeDelta = 0.01f;
region1.span.latitudeDelta = 0.01f;
DisplayMap *ann1 = [[DisplayMap alloc] init];
ann1.title = @"Walnut Ridge Fire Department";
ann1.subtitle = @"3217 Highway 67 # B, Walnut Ridge, AR";
ann1.coordinate = region1.center;
[mapView addAnnotation:ann1];
答案 0 :(得分:3)
double minLat=360.0f,minLon=360.0f;
double maxLat=-360.0f,maxLon=-360.0f;
for (<MKAnnotation> vu in [theMapView annotations]) {
if ( vu.coordinate.latitude < minLat ) minLat = vu.coordinate.latitude;
if ( vu.coordinate.latitude > maxLat ) maxLat = vu.coordinate.latitude;
if ( vu.coordinate.longitude < minLon ) minLon = vu.coordinate.longitude;
if ( vu.coordinate.longitude > maxLon ) maxLon = vu.coordinate.longitude;
}
CLLocation *newCenter = [[CLLocation alloc] initWithLatitude: (maxLat+minLat)/2.0
longitude: (maxLon+minLon)/2.0];
theMapView.region = MKCoordinateRegionMake (newCenter.coordinate,
MKCoordinateSpanMake( fabs(maxLat-minLat), fabs(maxLon-minLon) ) );