2013-01-14 53 views
0

我爲我的項目使用了MapKit,迄今爲止它一直很好。這是我用來顯示和居中地圖的一大塊代碼。iPhone 4和iPhone 5上不同的地圖縮放比例

CLLocation *locSouthWest = [[CLLocation alloc] initWithLatitude:southWest.latitude longitude:southWest.longitude]; 
CLLocation *locNorthEast = [[CLLocation alloc] initWithLatitude:northEast.latitude longitude:northEast.longitude]; 
CLLocationDistance meters = [locSouthWest distanceFromLocation:locNorthEast]; 


MKCoordinateRegion region; 
region.center.latitude = (southWest.latitude + northEast.latitude)/2.0; 
region.center.longitude = (southWest.longitude + northEast.longitude)/2.0; 
region.span.latitudeDelta = meters/111319.5; 
region.span.longitudeDelta = 0.0; 

[self.mapView setRegion:region animated:YES]; 

的問題是,它的工作原理不同在iPhone 4 iPhone 。

這裏是iPhone 4相同對的iOS5和iOS6的結果):

iPhone 4

這裏是iPhone 5(使用相同的座標):

iPhone 5

任何人經驗也一樣?

+0

我注意到iPhone 5不是英文,而是iPhone 4。也許這也是一個因素? –

+0

不是您的問題的「解決方案」,但您不需要從米手動計算增量。改用MKCoordinateRegionMakeWithDistance函數。 – Anna

+0

@RyanPoolos不,所有語言的代碼都是一樣的。 – Michal

回答

1

MapKit有固定的縮放級別。設置地圖的區域可確保地圖在地圖中可見,但不會設置精確的縮放。這有幾個好處,首要的是你不能創建一個能夠不成比例地衡量經緯度的地圖(導致混淆和/或誤導地圖)。地圖的框架大小不同,因此您選擇的地區可以在每個設備上以不同的縮放級別顯示。

作爲一個實驗,嘗試在兩個設備上將地圖視圖的框架設置爲相同的大小。然後,如果您絕對需要以相同比例顯示地圖,則可以根據地圖的框架計算適當的區域。

1

這些代碼的造成的差的行:

region.center.latitude = (southWest.latitude + northEast.latitude)/2.0; 
region.center.longitude = (southWest.longitude + northEast.longitude)/2.0; 

這必將創建的差,因爲屏幕尺寸而改變。

,你可以在這裏做將地圖什麼是使用mapView.centerCoordinate

相關問題