我正在提供一个带有 MKTileOverlay 的 MKMapView 来替换 map 内容。支持图 block 提供程序只能达到缩放级别 15。如果用户放大超过缩放级别 15,它会在 map 上放大级别 15 的图 block ,而不是变成空白。
但是,如果 map 扇区中存在 MKPolygon 或 MKPolyline,它只会显示形状。它将不再渲染其下方的背景图 block 。只有当您过度缩放时才会发生这种情况。
我看到一些关于 MapKit 过度缩放的讨论,但它们似乎都与 iOS 7 之前的版本有关,当时大量的 map 似乎已被更改。
有没有人有这方面的经验?
最佳答案
我意识到我完全误解了 MapKit 为 map 图 block 提供的功能。
当我放大并看到我的 Tiles 正在渲染时,我认为这是过度缩放功能。当具有多边形的区域没有按照这些缩放级别渲染 map 图 block 时,我认为多边形渲染器以某种方式关闭了图 block 渲染器。事实证明,因为在那个放大级别唯一活跃的渲染器是多边形渲染器,它是 Canvas 中唯一被重绘的部分,所以 Canvas 的其余部分仍然显示它已经在那里的内容。
通俗地说:
Map Tile Renderer 告诉 map “我可以在缩放级别 0-5 下绘制这个大区域。”多边形渲染器告诉 map “我可以在所有缩放级别绘制这个小区域。”
当我处于缩放级别 5 时,Map Tile Renderer 和 Polygon Renderer 都会启动并绘制它们可以处理的区域。当我进入缩放级别 6 时,只有多边形渲染器启动。 map 上写着“我有一个可以在这个区域绘制的渲染器,所以我要用这些信息重新绘制它。”因为 Map Tile Renderer 不提供缩放级别 6 的图 block ,所以它不会启动。 map 的其余部分仍然有图 block ,因为没有可以为其绘制的渲染器,所以 map 只保留 Canvas 上已有的内容。
tl;dr:我误以为 MapKit 不进行多余的绘制调用是过度缩放功能。
关于ios - Mapkit - 存在多边形时无法渲染过度缩放的自定义图 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39231764/