2014-11-03 86 views
3

我希望設置MKMapView的縮放級別(OR設置區域),以便我可以顯示一個地點。用一個例子來闡述我的背景。我有一個位置(CLLocation *),我使用CLGeocoder(反向地理編碼)找到了該位置。現在說這個地區是'加州庫比蒂諾'地區。如何在MKMapView中找到完全包含Cupertino的區域?將MKMapView縮放級別設置爲一個地方

謝謝。

+0

見http://stackoverflow.com/questions/9164920/updating-mkmapview-to-clplacemark-returned-from-clgeocoder – Anna 2014-11-03 12:33:12

回答

6

對於創建MKCoordinateRegion對象,並設置地圖視圖區域:

CLLocationCoordinate2D location = CLLocationCoordinate2DMake(<LATITUDE>, <LONGITUDE>); 
    MKCoordinateRegion region; 
    // <LATITUDE> and <LONGITUDE> for Cupertino, CA. 

    region = MKCoordinateRegionMake(location, MKCoordinateSpanMake(0.5, 0.5)); 
    // 0.5 is spanning value for region, make change if you feel to adjust bit more 

    MKCoordinateRegion adjustedRegion = [self.mapView regionThatFits:region]; 
    [self.mapView setRegion:adjustedRegion animated:YES]; 

編輯:

正如你在你的評論,你需要充滿活力的城市機箱提。在這種情況下,我們需要地圖縮放級別(整數值 - 默認值爲0)。

這意味着一些API或Web服務返回的城市/座標和縮放級別。因此,從該縮放級別我們可以實現地圖跨度/地區計算。

和鏈接從經/緯得到縮放級別:http://troybrant.net/blog/2010/01/set-the-zoom-level-of-an-mkmapview/

+1

所以問題這裏是0.5是硬編碼值。由於城市的大小不同,這個值應該是一個變量而不是隨機的硬編碼值。所以我想知道有沒有更好的計算這個跨度? – 2014-11-03 10:40:16

+0

@DeborshiSaha:你有任何API或Web服務引用返回這樣的城市縮放級別嗎? – Kampai 2014-11-03 10:46:40

+0

不,我有'CLLocation'。使用CLGeocoder來反轉地理定位。 – 2014-11-03 11:05:40