如何为 MKPolygonRenderer 提供图像?
Posted
技术标签:
【中文标题】如何为 MKPolygonRenderer 提供图像?【英文标题】:How can I provide an image for an MKPolygonRenderer? 【发布时间】:2018-07-08 03:54:22 【问题描述】:我的代码正确地获取了图像并为 mapView 提供了边界。我想把图像放在范围内,但我不知道怎么做。我可以用颜色填充它,但我需要帮助使它成为图像。
func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer
let renderer = MKPolygonRenderer(overlay: overlay)
//renderer.fillColor = UIColor.red -> works
return renderer
如何用我下载的这张图片填充它?https://radar.weather.gov/ridge/Conus/RadarImg/latest_radaronly.gif
【问题讨论】:
【参考方案1】:使用MKOverlayRenderer
的这个子类,您将能够将UIImage
叠加在实际的MKPolygon
上
class CustomOverlayRenderer: MKOverlayRenderer
private let overlayImage: UIImage?
init(overlay: MKOverlay, image: UIImage? = nil)
self.overlayImage = image
super.init(overlay: overlay)
override func draw(_ mapRect: MKMapRect, zoomScale: MKZoomScale, in context: CGContext)
guard let cgImage = self.overlayImage?.cgImage else return
let rect = self.rect(for: overlay.boundingMapRect)
context.scaleBy(x: 1.0, y: -1.0)
context.translateBy(x: 0, y: -rect.height)
context.draw(cgImage, in: rect)
只需将您的委托方法更改为此使用CustomOverlayRenderer
,如下所示:
func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer
return CustomOverlayRenderer(overlay: overlay, image: UIImage(named: "latest_radaronly.gif")!)
【讨论】:
以上是关于如何为 MKPolygonRenderer 提供图像?的主要内容,如果未能解决你的问题,请参考以下文章