iPhone MKMapView: установить область карты для отображения всех контактов на карте

Я пытаюсь установить область карты (центр и диапазон) так, чтобы на карте отображались все аннотации к булавкам одновременно.

У меня возникли проблемы с преобразованием долгих / широтных координат из NSString в двойные, соответственно. производить с ними расчеты. Вот код, который я использую:

- (void)updateMemberPins{

//calculate new region to show on map
double center_long = 0.0f;
double center_lat = 0.0f;
double max_long = 0.0f;
double min_long = 0.0f;
double max_lat = 0.0f;
double min_lat = 0.0f;

for (Member *member in members) {

    //find min and max values
    if ([member.locLat doubleValue] > max_lat) {max_lat = [member.locLat doubleValue];}
    if ([member.locLat doubleValue] < min_lat) {min_lat = [member.locLat doubleValue];}
    if ([member.locLong doubleValue] > max_long) {max_long = [member.locLong doubleValue];}
    if ([member.locLong doubleValue] < min_long) {min_long = [member.locLong doubleValue];}

    //sum up long and lang to get average later
    center_lat = center_lat + [member.locLat doubleValue];
    center_long = center_long + [member.locLong doubleValue];
}

//calculate average long / lat
center_lat = center_lat / [members count];
center_long = center_long / [members count];

NSLog(@"center long: %d, center lat: %d", center_long, center_lat);
NSLog(@"max_long: %d, min_long: %d, max_lat: %d, min_lat: %d", max_long, min_long, max_lat, min_lat);

//create new region and set map
CLLocationCoordinate2D coord = {latitude: center_lat, longitude: center_long};
MKCoordinateSpan span = MKCoordinateSpanMake(abs(max_lat) + abs(min_lat), abs(max_long) + abs(min_long));
MKCoordinateRegion region = {coord, span};
[resultMapView setRegion:region];

//remove all pins from map
[resultMapView removeAnnotations:resultMapView.annotations];

//show member pins
for (id member in members) {
    [resultMapView addAnnotation:(Member *) member];
}

}

Результат вывода журнала:

длина центра: -1946827116, широта центра: 1075651472

max_long: -6267216, min_long: 1076018553, max_lat: 0, min_lat: 0

Я думаю, что проблема возникает из-за (ошибочного) преобразования значений из NSString в double, однако я не могу найти способ заставить его работать ... Формат строк местоположения похож на '43 .5686473'.

Есть подсказки? Cheerz

11
задан pawi 18 February 2011 в 10:29
поделиться