【问题标题】:Inverted circle overlay on map view (MapKit, MKOverlay, Swift)地图视图上的倒圆叠加(MapKit、MKOverlay、Swift)
【发布时间】:2018-07-14 06:39:57
【问题描述】:

我正在尝试在我的地图视图上添加一个自定义叠加层以创建一个倒圆(而不是围绕地图上的一个引脚的典型 MKCircle 叠加层)。我试过关注这个帖子:Add inverted circle overlay to map view

我还没有创建自定义 MKOverlay 子类,但我创建了一个自定义 MKOverlayRenderer 子类,我正在尝试将其与 MKCircle 一起用作 MKOverlay。

class MKInvertedCircleRenderer: MKOverlayRenderer {
var fillColor: UIColor = UIColor.blue

override func draw(_ mapRect: MKMapRect, zoomScale: MKZoomScale, in context: CGContext) {
    let path = UIBezierPath(rect: CGRect(x: mapRect.origin.x, y: mapRect.origin.y, width: mapRect.size.width, height: mapRect.size.height))

    context.setFillColor(fillColor.cgColor)
    context.addPath(path.cgPath)
    context.fillPath()
}}

这是我在视图控制器中的 mapView 委托调用:

func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
    switch(overlaySegmentedControl.selectedSegmentIndex) {
    case 0: // Draw circle on map view for region specified for "When I Arrive".
        let circleRenderer = MKCircleRenderer(overlay: overlay)
        circleRenderer.strokeColor = self.view.tintColor
        circleRenderer.lineWidth = 3.0
        circleRenderer.fillColor = self.view.tintColor.withAlphaComponent(0.15)

        return circleRenderer

    case 1: // Draw rectangle with circle cutout on map view for region specified for "When I Leave".
        let circleRenderer = MKInvertedCircleRenderer(overlay: overlay)

        return circleRenderer

    default:
        fatalError("Unspecified segmented control selected: \(overlaySegmentedControl.selectedSegmentIndex)")
    }
}

目前,案例 0 按预期工作,通过在地图视图上的引脚周围输出圆形叠加层。

案例 1 不起作用,我期待它在地图上绘制一个矩形,填充我在 MKOverlayRenderer 子类中设置的 fillColor - 但是什么也没显示。在添加路径以在中间切出一个圆圈之前,我正在尝试解决此问题。

任何帮助将不胜感激!

【问题讨论】:

    标签: swift mapkit mkmapview overlay mkoverlay


    【解决方案1】:

    事实证明,您不能将 MKCircle 与自定义 MKOverlayRenderer 子类一起使用。

    您必须创建自己的自定义 MKOverlay 子类才能使用自定义 MKOverlayRenderer 子类。

    【讨论】:

      猜你喜欢
      • 2012-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 2011-09-11
      • 1970-01-01
      相关资源
      最近更新 更多