Как вписать определенные границы, состоящие из координат NE и SW, в видимый вид карты?

Мне нужно уместить определенные границы на карте. Я получаю границы, вызывая геокодер Google и читая свойство viewport, которое выглядит следующим образом:

{
    northeast =     {
        lat = "30.4212235";
        lng = "-97.486942";
    };
    southwest =     {
        lat = "30.1128403";
        lng = "-97.99917959999999";
    };
}

Затем я конвертирую их в CLLocationCoordinate2D

NSDictionary *viewport = [[[results objectAtIndex:0] objectForKey:@"geometry"] 
                                                     objectForKey:@"viewport"];
NSDictionary *NEDictionary = [viewport objectForKey:@"northeast"];
NSDictionary *SWDictionary = [viewport objectForKey:@"southwest"];

CLLocationCoordinate2D SWCoordinate = 
    CLLocationCoordinate2DMake(
        [[SWDictionary objectForKey:@"lat"] floatValue], 
        [[SWDictionary objectForKey:@"lng"] floatValue]
    );
CLLocationCoordinate2D NECoordinate = 
    CLLocationCoordinate2DMake(
        [[NEDictionary objectForKey:@"lat"] floatValue], 
        [[NEDictionary objectForKey:@"lng"] floatValue]
    );    

Я знаю, что мне нужно сгенерировать MKMapRect (или MKMapRegion, в зависимости от того, что проще) из этих координат и затем [mapView setVisibleRect: newRect animated: YES] (или [mapView setRegion: newRegion animated: YES], но я не совсем уверен, как туда попасть. Мне нужен метод для преобразования границ в правильную структуру данных, например:

- (MKMapRect) mapRectThatFitsBoundsSW:(CLLocationCoordinate2D)sw 
                                   NE:(CLLocationCoordinate2D)ne {
    // CGFloat x = ??
    // CGFloat y = ??
    // CGFloat width = ??
    // CGFloat height = ??
    MKMapRect mapRectFromBounds = MKMapRectMake(x,y,width,height);
    return mapRectFromBounds;
}

Есть какие-нибудь мысли?

5
задан jmcopeland 16 December 2011 в 05:05
поделиться