Как лучше всего уменьшить масштаб и уместить все аннотации в MapKit

Краткая справка о том, что у меня происходит. 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, чтобы просто уменьшить масштаб так, чтобы обе аннотации имели, скажем, полдюйма между ними во внешней рамке? Я не На самом деле меня не волнует, придется ли пользователю увеличивать масштаб после этого, я просто хочу, чтобы он уменьшился правильно.

14
задан Azhar 2 January 2015 в 14:18
поделиться

0 ответов