2012-01-10 85 views
0

我想通過代碼重新獲取IPad應用程序中的MapKit地圖。只不過,將地圖以原始縮放級別平移到給定中心。沒有放大,沒有縮小,只是平移。Recenter MapKit地圖

這裏是我做的:

- (void)panToLatitude:(double)lat andLongitude: (double) lon sender: (id)  sender 
{ 
CLLocationCoordinate2D zoomLocation; 
zoomLocation.latitude = lat; 
zoomLocation.longitude = lon; 

MKCoordinateRegion viewRegion = MKCoordinateRegionMake(zoomLocation, [self.map region].span); 

MKCoordinateRegion adjustedRegion = [self.map regionThatFits:viewRegion];     

[self.map setRegion:adjustedRegion animated:YES]; 
} 

它的工作原理,但有時(時間20-30%),它改變了縮放級別,它縮小。我不想要這個,只需要更新地圖。

任何想法?

由於

回答

1

地圖視圖被正確地表現爲在它被精確地顯示使用所述墨卡託投影地圖的區域。越靠近赤道,兩條經線之間的距離越大。根據您平移的位置,地圖視圖可能需要調整縮放級別以適應您提供的區域。

對於解決方案,我會檢查出由Troy Brant編寫的MKMapView上的這個類別。它允許你改變地圖視圖的位置,同時保持一致的縮放比例,併爲你做所有的書呆子數學的東西。

http://troybrant.net/blog/2010/01/set-the-zoom-level-of-an-mkmapview/

+0

查看我的更新回答。我在我的一個項目中使用了這個類別,它運行良好。 – 2012-01-10 01:28:02

+0

奧基,謝謝。你如何獲得地圖當前的縮放級別? – Tom 2012-01-10 01:30:34

+0

縮放級別是該類使用的任意單位。 'MKMapView'沒有暴露類似於'zoomLevel'的東西。 – 2012-01-10 04:30:10