1

这是我的第一篇文章,诚然,我有点不知所措,但我确实需要一些帮助。

我下载了 Apple 的 KMLViewer 示例来查看地图中的叠加层。在让它工作之后,作为我“调查”的一部分,我然后添加了这条线

map = [[MKMapView alloc] initWithFrame:self.view.frame];

就在这条线之后

[super viewDidLoad];

我知道我也没有,但我有另一个项目需要以编程方式创建 MKMapView,我想在一个更简单的工作程序上验证该方法。

结果是 KMLViewer 编译和执行没有错误,但不再显示由 kml 文件创建的覆盖。如果该行被删除,覆盖再次出现。

我错过了什么?

提前感谢您的帮助。

4

1 回答 1

1

KMLViewer 中的 map 变量被声明为 IBOutlet 并连接到 xib 中的 MKMapView。通过重新创建它,新实例不再连接到 xib 中的那个。

叠加层可能没有显示,因为:

  • 未设置新实例上的委托(因此不会调用 viewForOverlay 等)
  • 新地图未添加为子视图

因此,如果您在 alloc+init 之后添加以下两行,它应该会再次开始工作:

map.delegate = self;
[self.view addSubview:map];

但是,xib 中的 MKMapView 仍将位于新地图实例的下方。

于 2011-05-10T00:20:38.660 回答