2011-10-01 59 views
1

我有一個名爲region的MKCoordinateregion。我想改變這個區域的跨度而不改變它的中心。我正在使用以下方法更改縮放。MKCoordinateregion的中心在跨度發生變化時發生變化 - iphone

-(void) changeZoom 
    { 

    NSLog(@"before zoom span, center are %f, %f,%f,%f", region.span.latitudeDelta, region.span.longitudeDelta, mymap.centerCoordinate.latitude, mymap.centerCoordinate.longitude); 
       region.span.latitudeDelta = current_factor ; 
       region.span.longitudeDelta = current_factor ; 
       region.center.latitude = mymap.centerCoordinate.latitude ; 
       region.center.longitude = mymap.centerCoordinate.longitude ; 
       [mymap setRegion:region animated:TRUE]; 

       NSLog(@"after zoom span, center are %f, %f,%f,%f", region.span.latitudeDelta, region.span.longitudeDelta, mymap.centerCoordinate.latitude, mymap.centerCoordinate.longitude); 
    } 

日誌顯示:

before zoom span, center are 0.021950, 0.021950,19.068080,72.838111 
after zoom span, center are 0.043901, 0.043901,19.068040,72.838154 

此方法設置的跨度準確desired.But我不想在中心的協調任何改變,因爲當我縮小,然後放大我在結束了位置與起始位置不同。

是否有任何方法可以放大和縮小而不改變中心?

感謝您提前提供任何幫助。

回答

1

你之前和之後的中心座標幾乎完全一樣,所以它不應該是一個問題。如果您確實需要相同的中心座標,請在使用setRegion:animated:後立即致電setCenterCoordinate:animated:並傳遞一些保存的中心座標。

CLLocationCoordinate2D originalCenter = mymap.centerCoordinate; 
// ... adjust region 
[mymap setCenterCoordinate:originalCenter animated:NO]; 

此外,你應該使用YES而不是TRUE爲布爾:

[mymap setRegion:region animated:YES]; 
0

您需要調整地圖的區域以確保寬高比適合地圖視圖的框架大小。

一旦與所期望的中心的區域被計算出,調整該區域,

MKCoordinateRegion adjustedRegion = [mymap regionThatFits:region]; 
[mymap setRegion:adjustedRegion animated:TRUE]; 

參見docs

+0

我找不到方法adjustRegion:對的MKMapView。你有沒有使用這種方法? – alekhine

+0

哦,我使用'adjustRegion'。我很抱歉 - 這是'regionThatFits'。這裏的問題是到處複製粘貼:) – Anurag