在MKMapView中增加切片的大小

时间:2016-06-02 12:02:38

标签: ios mkmapview mapkit mktileoverlay

我目前正在使用自定义图块叠加层实现MKMapView。不幸的是,我所拥有的瓷砖在视网膜显示器上显示得相当小,使得它们上面的文字难以阅读。有没有办法扩大它们而不会弄乱它们在地图上的位置?

我已经使用像这样的自定义MKTileOverlayRenderer子类在this问题中尝试了解决方案:

class CNTileOverlayRenderer: MKTileOverlayRenderer {
    override func drawMapRect(mapRect: MKMapRect, zoomScale: MKZoomScale, inContext context: CGContext) {

        guard UIScreen.mainScreen().scale > 1.0 else {
            super.drawMapRect(mapRect, zoomScale: zoomScale, inContext: context)
            return
        }

        let tileSize = (self.overlay as! MKTileOverlay).tileSize
        let rect = self.rectForMapRect(mapRect)

        CGContextSaveGState(context)
        let t = CGContextGetCTM(context)
        CGContextConcatCTM(context, CGAffineTransformInvert(t))
        let ratio = tileSize.width / (rect.size.width * 2)

        CGContextTranslateCTM(context, (-rect.origin.x) * ratio, tileSize.height + (ratio * rect.origin.y))
        CGContextScaleCTM(context, ratio, -ratio)

        super.drawMapRect(mapRect, zoomScale: zoomScale, inContext: context)
        CGContextRestoreGState(context)
    }
}

不幸的是,这似乎让我的瓷砖变得非常糟糕。我不能说如果有任何使用CGContexts的经验并且只使用了一些参数而没有取得多大成功,我会有很多。

enter image description here

0 个答案:

没有答案