8

我在使用 MapKit 的 iOS 项目中有一个自定义的 MKTileOverlay,它在大多数情况下都能正常工作。但是,在放大/缩小几次并平移地图后,一些图块没有被绘制出来。

起初我认为这是一个简单的瓦片没有加载的情况,所以我将 MKTileOverlay 子类化并在控制台中添加了日志记录。它表明所有的瓷砖都被完美地加载并传送到了结果块。

当我没有想法时,我创建了一个本地图块生成器,它只返回带有路径 x/y/z 和绘制框架的图像,以查看缺少哪些图块。

缺少平铺示例图像

不幸的是,即使使用本地生成的图块,问题仍然存在,因此它与 Internet 连接无关。另一个奇怪的行为是,如果我有两个自定义叠加层,它们将是完全相同的图块,不会在两个叠加层上呈现。

我现在能想到的唯一解决方案是将瓷砖渲染器子类化并确保显示所有内容,因为无法知道瓷砖没有被渲染。然而,这听起来像是大量的工作和“重新发明轮子”的任务......

4

1 回答 1

1

我们也遇到了丢失图块的问题 - 试图在新西兰周围绘制地图图块。MKOverlayRenderer 甚至没有请求瓷砖。我们陷入了一个兔子洞,认为这一定是因为新西兰靠近 180/0 纬度边界。没有。这是因为子类方法:-

- (void)loadTileAtPath:(MKTileOverlayPath)path result:(void (^)(NSData * __nullable data, NSError * __nullable error))result;

即使没有数据要返回,也必须始终调用结果方法!为了在应得的情况下给予信用,这是我们解决方案的来源:-

MKTileOverlay 没有绘制每个图块?

于 2018-08-15T17:24:08.353 回答