ios - Mapkit - 存在多边形时无法渲染过度缩放的自定义图 block

标签 ios mapkit rendering tiles polygons

我正在提供一个带有 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/

相关文章:

iphone - 接收 ?当 smiley(\ue415) 被发布到服务器时

javascript - 为什么 IE 11 显示空白页面渲染 react 应用程序

ios - AVFoundation 最大渲染大小

ios - 嵌入到 UIViewController 中的 Container 时切断 UITableViewController

ios - 在 Swift 3 中调用 Objective-C 函数

ios - MapKit 帮助。无法首先显示我的位置

ios - 根据车辆路线获取从一个地点到另一地点的路线

ruby-on-rails - rails : using "content_for" after the corresponding "yield" inside layout

iphone - 如何在不同的类中填充 Xib

ios - 位置的自定义图标。可能吗?