Sto usando MKMapView e ho aggiunto un numero di pin di annotazione alla mappa su un'area di 5-10 chilometri. Quando eseguo l'applicazione la mia mappa inizia a rimpicciolire per mostrare tutto il mondo, qual è il modo migliore per ingrandire la mappa in modo che i pin si adattino alla vista?
EDIT: Il mio pensiero iniziale sarebbe di usare MKCoordinateRegionMake e calcolare il centro di coordinate, la longitudine Delta e la latitudine Delta dalle mie annotazioni. Sono abbastanza sicuro che funzionerà, ma volevo solo controllare che non mi mancasse nulla di ovvio.
Codice aggiunto, BTW: FGLocation è una classe conforme MKAnnotation
, locationFake è uno NSMutableArray
di questi oggetti. I commenti sono sempre ben accetti ....
- (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;
}