Быстрый фон того, что у меня происходит.UIMapView загружает и показывает одну аннотацию (не более одной).В строке меню есть кнопка «Найти меня», при касании местоположение пользователя будет найдено и отображено как вторая аннотация.Затем я уменьшил MapView, чтобы уместить эти аннотации в диапазоне, но я не могу найти подходящий способ сделать это.В зависимости от того, где размещена первая аннотация по отношению к местоположению пользователя, иногда она недостаточно уменьшается.
Например, если аннотация расположена к северо-западу от пользователя, она хорошо масштабируется.Но если аннотация расположена к юго-востоку от пользователя, она лишь уменьшит масштаб настолько, что они просто обрезаются, и вам придется вручную уменьшить немного больше.Вот код, который я использую, вариант некоторых других, которые я нашел на SO.
CLLocation *whereIAm = mapView.userLocation.location;
float lat = whereIAm.coordinate.latitude;
float lon = whereIAm.coordinate.longitude;
CLLocationCoordinate2D southWest = {[currentLatitude floatValue], [currentLongitude floatValue]};
CLLocationCoordinate2D northEast = southWest;
southWest.latitude = MIN(southWest.latitude, lat);
southWest.longitude = MIN(southWest.longitude, lon);
northEast.latitude = MAX(northEast.latitude, lat);
northEast.longitude = MAX(northEast.longitude, lon);
CLLocation *locSouthWest = [[CLLocation alloc] initWithLatitude:southWest.latitude longitude:southWest.longitude];
CLLocation *locNorthEast = [[CLLocation alloc] initWithLatitude:northEast.latitude longitude:northEast.longitude];
CLLocationDistance meters = [locSouthWest distanceFromLocation:locNorthEast];
MKCoordinateRegion region;
region.center.latitude = (southWest.latitude + northEast.latitude) / 2.0;
region.center.longitude = (southWest.longitude + northEast.longitude) / 2.0;
region.span.latitudeDelta = meters / 111319.5
region.span.longitudeDelta = 7.0;
MKCoordinateRegion savedRegion = [mapView regionThatFits:region];
[mapView setRegion:savedRegion animated:YES];
[locSouthWest release];
[locNorthEast release];
Есть ли лучший способ встроенный в MapKit, чтобы просто уменьшить масштаб, чтобы обе аннотации имели, скажем, полдюйма междуих на внешней раме?Мне все равно, нужно ли пользователю увеличивать масштаб изображения, я просто хочу, чтобы он правильно уменьшал масштаб.