iOS - 某些图块未在自定义MKTileOverlay中呈现

时间:2016-11-07 08:14:08

标签: ios mapkit mktileoverlay custom-overlay

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

起初我认为这是一个瓦片未加载的简单案例,因此我将MKTileOverlay子类化并在控制台中添加了日志记录。它显示所有瓷砖都装得很完美,然后送到结果块。

由于我的想法不足,我创建了一个本地磁贴生成器,它只返回带有路径x / y / z的图像,并绘制框架以查看缺少的图块。

Missing tile example image

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

我现在能想到的唯一解决方案是对tile渲染器进行子类化,并确保显示所有内容,因为无法知道tile是否已呈现。然而,这听起来像很多工作和“重新发明轮子”有点任务......

1 个答案:

答案 0 :(得分:1)

我们还遇到了缺少瓷砖的问题-试图在新西兰周围绘制地图瓷砖。 MKOverlayRenderer甚至没有请求磁贴。我们掉进了一个兔子洞,认为一定是因为新西兰位于180/0纬度边界附近。不。这是因为子方法:-

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

即使没有数据返回,也必须始终调用result方法!要在应得的信用额度上给予信用,这就是我们解决方案的来源:-

MKTileOverlay not drawing every tile?