2010-06-02 81 views
2

我需要得到某種比例因子,它告訴我地圖放大了多少(每當區域發生變化時)。MKMapView:獲取相對縮放比例?

我的第一個想法是使用跨度的delta緯度或經度值。我會跟蹤「舊」值,然後在地圖區域更改時更新值,並將比率與舊值進行比較。

我使用以下委託方法:

- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated { 
    // Get the new value 
    CLLocationDegrees newdlat = mapView.region.span.latitudeDelta; 

    // Find the zoom ratio (use longitude instead?) 
    CGFloat zoomRatio = newdlat/olddlat; 

    // Update the old value (defined elsewhere) 
    olddlat = newdlat; 
} 

我不使用在這種情況下,經度增量,因爲我的數字它會按比例縮放到緯度這將產生同樣的比率(本被錯誤?)。

問題是,當我滾動地圖(不縮放)時,檢查經度和緯度增量值時,值保持稍微變化。如果地圖不縮放,那麼跨度值不應該保持不變?也許我誤解了一些東西。

由於這個小小的變化,我擔心我的縮放比例不夠準確,無法依靠(最終我會用它來縮放帶有地圖的註記圖像)。

我的主要問題是這是一個好方法,還是有一個更簡單的方法,我忽略了?

感謝您的任何幫助。

+0

嗯,我已經取得了一些進展。當地圖放大時,我的圖像現在可以正確縮放。我做出的最大改變是我現在使用經度而不是緯度來檢查地圖是否縮放。出於某種原因,在地圖平移時(沒有縮放),緯度Delta有抖動。 LongitudeDelta似乎沒有這個問題,真的不知道爲什麼。 – nebs 2010-06-04 20:16:03

+0

更新:我已經發布了一個關於蘋果論壇上的跨度抖動的問題,事實證明,由於地圖投影mapkit使用(墨卡託),預計緯度抖動會出現。所以當你接近極點時,緯度Delta將稍微改變。另一方面,LongitudeDelta可以正常工作(例如不會改變),正如我通過反覆試驗發現的那樣。 – nebs 2010-06-07 15:24:24

回答

1

問題通過計算比率時使用經度緯度代替的解決。請查看我對原文的兩條評論,詳細瞭解爲什麼會出現這種情況。

0

地球是一個球體。地圖是一架飛機。

要將地球映射到飛機上,某些失真是必需的。

在墨卡託投影中,經線不會扭曲,但緯線顯得彎曲。

因此,經度增量將涉及一個常數值,而對於緯度增量則相同。因此,這種情況下的「刻度」(度/ mm)取決於測量棒的方向。