我正在尝试更新我的瓦片地图代码以使用 iOS 7MKTileOverlay
和MKTileOverlayRenderer
,并且我可以使用一些指针来使事情更好地工作。
首先,这里是 iOS6 代码:AppleTileOverlay.m和TileOverlayView.m。这在 iOS 7 中仍然可以很好地工作,当我替换TileOverlayView
一个在所有方面都相同的类时,除了它是一个子类MKOverlayRenderer
而不是MKOverlayView
.
我正在测试的新作品是一个子类,MKTileOverlay
唯一的方法是:
-(NSURL *)URLForTilePath:(MKTileOverlayPath)path {
NSString *tileKey = [[NSString alloc] initWithFormat:@"%d%d%d", path.x, path.y, path.z];
NSString *tilePath = [[NSBundle mainBundle] pathForResource:tileKey ofType:nil inDirectory:@"TileFolder"];
NSURL *url;
if (tilePath) {
url = [NSURL fileURLWithPath:tilePath];
}
return url;
}
大多数情况下,地图图块加载正常,但日志中充满了如下消息:
Error loading URL (null): Error Domain=NSURLErrorDomain Code=-1000 "bad URL" UserInfo=0x1b3e19e0 {NSUnderlyingError=0x1894d470 "bad URL", NSLocalizedDescription=bad URL}
从为 URL 返回 nil 的方法。
所以问题是:我可以避免这些错误消息,还是应该坚持使用旧的覆盖类?