2010-11-19 81 views
2

我設置我的MKMapView區域內viewWillAppear中:使地圖正確的,只要用戶看到它顯示了良好的區域:的MKMapView setRegion不恆定

[mapView setRegion:region animated:NO]; 

拳頭時間我做,我得到的區域修剪像這樣:

alt text

然後從那裏,當我設置完全相同的區域,我得到的是這樣的:

alt text

第二屆截圖是我想從一開始獲得。我的猜測是我第一次設置區域,mapview沒有完全加載或沿着這些線條。我應該做什麼來解決這個問題的任何指針?

編輯:這可能是相關的:在第一次調用viewDidAppear之前向mapView添加註釋也無效。 pinView只是不顯示。我如何確保地圖視圖已準備好在viewWillAppear中使用?

回答

1

我偶然發現upong this thread,建議給setRegion:調用添加一個延遲(如果您需要在viewWillAppear方法中調用它)。有點傻,但它有效。

- (void)viewWillAppear:(BOOL)animated { 
    [self performSelector:@selector(centerMap:) withObject:nil afterDelay:0.01]; 
} 

我像什麼的MapView缺少做適當的recentering沒有這個延遲真的很好奇。

1

前段時間有關於setRegion方法的問題,我不知道他們自那以後是否已經修復過。看看下面的帖子在蘋果開發論壇:

https://devforums.apple.com/message/57488

+0

不錯的指針。該setRegion奇怪的行爲錯誤可能是我的問題。但仍然找不到修復:( – samvermette 2010-11-19 15:40:08

0

你試過從MKMapViewDelegate mapViewDidFinishLoadingMap消息使得通話?也許這已經足夠晚了,以使該地區正確嗎?

+1

將調用放入mapViewDidFinishLoadingMap相當於放入viewDidAppear(它每次都起作用)。我希望當視圖對用戶顯示時已經設置該區域。 – samvermette 2010-11-19 15:26:23

+0

我添加了我的setRegion代碼給這個方法,但方法沒有被調用,我認爲它被自動調用? – marciokoko 2012-12-12 02:48:57