Mapkit - 当多边形存在时,不会渲染Overzoomed自定义图块

时间:2016-08-30 15:36:49

标签: ios mapkit rendering tiles polygons

我为MKMapView提供了一个替换地图内容的MKTileOverlay。支持磁贴提供程序仅上升到缩放级别15.如果用户放大到缩放级别15以外,它会升级地图上的15级磁贴而不是空白。

但是,如果地图扇区中存在MKPolygon或MKPolyline,则只显示形状。它将不再渲染其下的背衬瓦片。这只有当你重叠时才会发生。

我已经看过一些关于在MapKit中过度编辑的讨论,但它们似乎都与iOS 7之前的版本有关,当时大量的地图似乎已被更改。

有没有人有这方面的经验?

1 个答案:

答案 0 :(得分:1)

我意识到我完全误解了MapKit为Map Tiles提供的功能。

当我放大并看到我的Tiles渲染时,我认为它是一个过度缩放功能。当具有多边形的区域没有将地图平铺渲染为这些缩放级别时,我认为多边形渲染器以某种方式关闭了拼贴渲染器。事实证明,因为放大级别的唯一活动渲染器是多边形渲染器,它是被重绘的画布的唯一部分,因此画布的其余部分仍然显示它已经存在的内容。

在外行'术语:

地图平铺渲染器告诉地图"我可以在缩放级别0-5处绘制这个大区域。"多边形渲染器告诉地图"我可以在所有缩放级别绘制这个小区域。"

当我在缩放级别5时,地图平铺渲染器和多边形渲染器都会启动并绘制它们可以处理的区域。当我进入缩放级别6时,只有多边形渲染器才会启动。地图上写着"我有一个可以在这个区域绘制的渲染器,所以我要用这些信息重新绘制它。"由于地图平铺渲染器没有为缩放级别6提供切片,因此它不会启动。地图的其余部分仍然具有切片,因为没有可以为其绘制的渲染器,因此地图只保留它在画布上已有的内容。

tl;博士:我错误地认为MapKit并没有将多余的绘制调用作为过度生成功能。