2

我在 viewWillAppear: 中设置了我的 MKMapView 区域,以便地图在用户看到它时立即显示好区域:

[mapView setRegion:region animated:NO];

我第一次这样做时,我将区域修剪如下:

替代文字

然后从那里开始,当我设置完全相同的区域时,我会得到这样的结果:

替代文字

第二张截图是我想从一开始就得到的。我的猜测是我第一次设置区域时,地图视图没有完全加载或类似的东西。我应该做些什么来解决这个问题的任何指针?

编辑:这可能是相关的:在第一次调用 viewDidAppear 之前向 mapView 添加注释也不起作用。pinView 只是没有显示出来。如何确保地图视图已准备好在 viewWillAppear 中使用?

4

3 回答 3

1

我偶然发现了这个建议为调用添加延迟的线程setRegion:(如果你需要在 viewWillAppear 方法中调用它)。有点傻,但它有效。

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

我真的很好奇 mapView 缺少什么来进行正确的重新定位而没有这种延迟。

于 2010-11-19T16:06:00.237 回答
1

关于 setRegion 方法的问题已经报告了一段时间,我不知道从那以后它们是否已经修复。请查看 Apple Dev Forums 上的以下帖子:

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

于 2010-11-19T02:18:45.457 回答
0

您是否尝试过从MKMapViewDelegate mapViewDidFinishLoadingMap 消息中拨打电话?也许这已经足够让该地区正确了?

于 2010-11-19T02:33:37.117 回答