2010-11-19 79 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