Увеличить размер плиток в MKMapView

В настоящее время я реализую MKMapView с пользовательским наложением плиток. К сожалению, плитки, которые у меня есть, отображаются на экранах сетчатки довольно маленькими, что затрудняет их чтение. Есть ли способ масштабировать их, не мешая их расположению на карте?

Я пробовал решение в этом вопросе, используя пользовательский подкласс MKTileOverlayRenderer, как это:

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, и я играл только с некоторыми параметрами, не добившись большого успеха.

0 ответов

Другие вопросы по тегам