MKMapView случайное панорамирование в Антарктиду - PullRequest
1 голос
/ 05 января 2012

У меня есть приложение в Сан-Франциско, которое отображает точки на карте. После того, как точки нанесены, я использую этот код для масштабирования и панорамирования карты, чтобы уместить все точки:

//BASE_RADIUS = 0.0144927536
- (MKCoordinateRegion)regionFromLocations:(NSArray*)locations {
    if([locations count] <= 0) { 
        MKCoordinateRegion region = self.mapView.region;
        return region;
    }

    CLLocationCoordinate2D upper = [[locations objectAtIndex:0] coordinate];
    CLLocationCoordinate2D lower = [[locations objectAtIndex:0] coordinate];

    // FIND LIMITS
    for(MapPinModel *eachLocation in locations) {
        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;
    if(locationSpan.latitudeDelta < BASE_RADIUS) { locationSpan.latitudeDelta = BASE_RADIUS; }
    if(locationSpan.longitudeDelta < BASE_RADIUS) { locationSpan.longitudeDelta = BASE_RADIUS; }  //the smallest it gets is a mile.

    CLLocationCoordinate2D locationCenter;
    locationCenter.latitude = (upper.latitude + lower.latitude) / 2;
    locationCenter.longitude = (upper.longitude + lower.longitude) / 2;

    MKCoordinateRegion region = MKCoordinateRegionMake(locationCenter, locationSpan);
    return region;
}

Затем я увеличиваю карту в этом регионе, используя:

MKCoordinateRegion region = [self regionFromLocations:_data];
[mapView setRegion:region animated:YES];  //shows all the pins

Это работает примерно в 95% случаев. Остальные пять процентов карта приближается к Антарктиде. Странно то, что я однажды поймал зум в отладчике, и координаты находятся внутри Сан-Франциско. Есть идеи о том, что здесь может происходить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...