我正在viewWillAppear中设置我的MKMapView区域:这样一旦用户看到它,地图就会立即显示好区域:
[mapView setRegion:region animated:NO];
我第一次这样做,我就像这样修剪区域:
然后从那里开始,当我设置完全相同的区域时,我会得到这样的结果:
第二个屏幕截图是我想从头开始的。我的猜测是我第一次设置区域,mapview没有完全加载或沿着这些线。我应该做些什么来解决这个问题?
编辑:这可能是相关的:在第一次调用viewDidAppear之前向mapView添加注释也不起作用。 pinView只是没有显示出来。如何确保地图视图可以在viewWillAppear中使用?
答案 0 :(得分:1)
前一段时间有关setRegion方法的问题已经报道,我不知道从那时起它们是否已被修复。请查看Apple Dev论坛上的以下文章:
答案 1 :(得分:1)
我偶然发现this thread建议在setRegion:
电话中添加延迟(如果你需要在viewWillAppear方法中调用它)。有点傻,但它的工作原理。
- (void)viewWillAppear:(BOOL)animated {
[self performSelector:@selector(centerMap:) withObject:nil afterDelay:0.01];
}
我真的很好奇mapView缺少什么来做正确的重新定位而没有这种延迟。
答案 2 :(得分:0)
您是否尝试过使用MKMapViewDelegate mapViewDidFinishLoadingMap消息进行调用?也许这已经足够晚了才能使该地区正确?