Hier ist etwas, das ich verwende und das Ihnen helfen kann. Es wird Ihnen eine MKCoordinateRegion geben, die zu einem Array von CLLocations passt. Sie können dann diese Region verwenden, um sie an MKMapView setRegion:animated weiterzugeben:
// Erstellen einer Region, die alle Standorte darin unterbringt
+ (MKCoordinateRegion) getRegionThatFitsLocations:(NSArray *)locations {
// Initialisierung der Minimums und Maximums
CLLocationDegrees minLatitude = 90;
CLLocationDegrees maxLatitude = -90;
CLLocationDegrees minLongitude = 180;
CLLocationDegrees maxLongitude = -180;
// Festlegung des minimalen und maximalen Breiten- und Längengrads
// aller Standorte im Array
for (CLLocation *location in locations) {
if (location.coordinate.latitude < minLatitude) {
minLatitude = location.coordinate.latitude;
}
if (location.coordinate.latitude > maxLatitude) {
maxLatitude = location.coordinate.latitude;
}
if (location.coordinate.longitude < minLongitude) {
minLongitude = location.coordinate.longitude;
}
if (location.coordinate.longitude > maxLongitude) {
maxLongitude = location.coordinate.longitude;
}
}
MKCoordinateSpan span;
CLLocationCoordinate2D center;
if ([locations count] > 1) {
// Bei mehr als einem Standort ist die Spanne der Unterschied zwischen
// minimaler und maximaler Breite und Länge
span = MKCoordinateSpanMake(maxLatitude - minLatitude, maxLongitude - minLongitude);
// und das Zentrum ist das Minimum + die Spanne (Breite) / 2
center.latitude = minLatitude + span.latitudeDelta / 2;
center.longitude = minLongitude + span.longitudeDelta / 2;
} else {
// Für einen einzelnen Standort erstellen Sie eine feste Spanne (zum Zoomen ziemlich nah)
span = MKCoordinateSpanMake(0.01, 0.01);
// und das Zentrum entspricht den Koordinaten des einzigen Punktes
// was die Koordinaten des minimalen (oder maximalen) Punktes sein werden
center.latitude = minLatitude;
center.longitude = minLongitude;
}
// Erstellen einer Region aus dem Zentrum und der Spanne
return MKCoordinateRegionMake(center, span);
}
Wie Sie wahrscheinlich bereits erkannt haben, müssen Sie MKMapView und Core Location verwenden, um zu erreichen, was Sie wollen. In meiner App weiß ich, welche Standorte ich anzeigen möchte, und mache dann die MKMapView groß genug, um sie alle unterzubringen. Die obige Methode wird Ihnen dabei helfen. Wenn Sie jedoch eine Liste von Standorten erhalten möchten, die in eine bestimmte Kartenregion passen, müssen Sie mehr oder weniger das Gegenteil von dem tun, was ich oben mache.