J'utilise MKMapView et j'ai ajouté un certain nombre de broches d'annotation à la carte sur une zone de 5 à 10 kilomètres. Lorsque j'exécute l'application, ma carte commence à faire un zoom arrière pour montrer le monde entier, quelle est la meilleure façon de zoomer sur la carte pour que les épingles correspondent à la vue?
EDIT: Ma pensée initiale serait d'utiliser MKCoordinateRegionMake et de calculer le centre de coordonnées, longitudeDelta et latitudeDelta à partir de mes annotations. Je suis presque sûr que cela fonctionnera, mais je voulais juste vérifier que je ne manquais de rien d'évident.
Code ajouté, BTW: FGLocation est une classe conforme à MKAnnotation
, locationFake est l'un NSMutableArray
de ces objets. Les commentaires sont toujours les bienvenus ....
- (MKCoordinateRegion)regionFromLocations {
CLLocationCoordinate2D upper = [[locationFake objectAtIndex:0] coordinate];
CLLocationCoordinate2D lower = [[locationFake objectAtIndex:0] coordinate];
// FIND LIMITS
for(FGLocation *eachLocation in locationFake) {
if([eachLocation coordinate].latitude > upper.latitude) upper.latitude = [eachLocation coordinate].latitude;
if([eachLocation coordinate].latitude < lower.latitude) lower.latitude = [eachLocation coordinate].latitude;
if([eachLocation coordinate].longitude > upper.longitude) upper.longitude = [eachLocation coordinate].longitude;
if([eachLocation coordinate].longitude < lower.longitude) lower.longitude = [eachLocation coordinate].longitude;
}
// FIND REGION
MKCoordinateSpan locationSpan;
locationSpan.latitudeDelta = upper.latitude - lower.latitude;
locationSpan.longitudeDelta = upper.longitude - lower.longitude;
CLLocationCoordinate2D locationCenter;
locationCenter.latitude = (upper.latitude + lower.latitude) / 2;
locationCenter.longitude = (upper.longitude + lower.longitude) / 2;
MKCoordinateRegion region = MKCoordinateRegionMake(locationCenter, locationSpan);
return region;
}