ppp*_*ppd 8 mapkit ios custom-overlay mktileoverlay
我在我的 iOS 项目中使用 MapKit 有一个自定义的 MKTileOverlay,它大部分时间都可以正常工作。但是,在放大/缩小几次并平移地图后,一些图块没有被绘制。
起初我认为这是一个没有加载瓷砖的简单情况,所以我对 MKTileOverlay 进行了子类化并在控制台中添加了日志记录。它表明所有瓷砖都被完美地加载并交付到结果块。
由于我的想法不多了,我创建了一个本地图块生成器,它只返回带有 x/y/z 路径和绘制的框架的图像,以查看缺少哪些图块。
不幸的是,即使使用本地生成的图块,问题仍然存在,因此它与 Internet 连接无关。另一个奇怪的行为是,如果我有两个自定义叠加层,它们将是完全相同的图块,但不会在两个叠加层上呈现。
我现在能想到的唯一解决方案是将 tile 渲染器子类化并确保显示所有内容,因为无法知道 tile 未呈现。然而,这听起来像是很多工作和“重新发明轮子”的任务......
我们也遇到了缺少图块的问题 - 试图在新西兰周围绘制地图图块。MKOverlayRenderer 甚至没有请求图块。我们陷入了一个兔子洞,认为这一定是因为新西兰靠近 180/0 纬度边界。没有。这是因为子类方法:-
- (void)loadTileAtPath:(MKTileOverlayPath)path result:(void (^)(NSData * __nullable data, NSError * __nullable error))result;
Run Code Online (Sandbox Code Playgroud)
即使没有数据可返回,也必须始终调用结果方法!为了在应得的信用处给予信用,这是我们解决方案的来源:-