我正在使用MKTileOverlayRenderer
通过MapKit渲染自己的图块。在我的瓷砖无法覆盖的区域中,显示了一个空的网格,这正是我要的内容。但是,还会显示所有地点名称(地标标签)。我想将它们隐藏起来,以提供超出瓷砖限制的空白区域。
这就是我初始化mapView的方式:
let overlay = MapOverlay(map: map)
// MapOverlay is my own subclass of MKTileOverlay, map is a Swift struct including url scheme to retrieve the tiles
overlay.canReplaceMapContent = true
// I intend to have empty content beyond my tiles
tileRenderer = MKTileOverlayRenderer(tileOverlay: overlay)
mapView.addOverlay(overlay, level: .aboveLabels)
// I want my tiles to be laid over all other content
我知道有可能将占位图块用于感兴趣区域之外的区域,这些区域原则上将覆盖空网格和地标标签名称。这是有问题的,尽管有两个原因:
由于这些原因,我选择使用透明的占位符磁贴。
是否可以隐藏地标标签名称?
我无法找到一种方法来阻止MapKit显示地标的标签名称(canReplaceMapContent
属性会隐藏地图内容,但不会隐藏标签),但是我发现了为什么覆盖感兴趣区域之外仍会留下空白:原始图块在感兴趣区域的边缘周围具有透明性。
一种覆盖地标标签名称的方法是在生成的图块中的感兴趣区域的边缘中提供纯色,并对超出感兴趣区域的区域使用具有相同纯色的占位符图块。因此,无需更改代码,只需重新生成边缘周围具有纯色的图块即可。
[在缩放,平移时,仍然会在地图上看到一些细微的问题,虽然不大,但是我无法解决。