有没有任何方法可以移动带有MKUserLocation的MKCircle叠加层而不会闪烁或闪烁?

问题描述 投票:0回答:1

目前,我正在使用此代码绘制圆圈。

func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
    if let overlay = overlay as? MKCircle {
        let circleRenderer = MKCircleRenderer(overlay: overlay)
        circleRenderer.fillColor = UIColor.black.withAlphaComponent(0.19)
        circleRenderer.lineWidth = 1
        return circleRenderer
    }
    return MKOverlayRenderer(overlay: overlay)
}

func mapView(_ mapView: MKMapView, didUpdate userLocation: MKUserLocation) {
    let circle = MKCircle(center: userLocation.coordinate, radius: self.regionRadius)
    print("\(userLocation.coordinate)")

    if (CLLocationManager.authorizationStatus() == .denied || CLLocationManager.authorizationStatus() == .notDetermined)  {
        mapView.removeOverlays(mapView.overlays)
    } else {
        mapView.removeOverlays(mapView.overlays)
        mapView.addOverlay(circle)
    }
}

当前输出:

enter image description here

它工作正常,但圆圈闪烁并闪烁。我需要圆环的平稳移动。我知道这是iOS 13问题。

swift mkmapview swift5
1个回答
0
投票

有两个选项:

  1. [我发现,通常,如果在删除旧的叠加层之前添加新的叠加层,闪烁效果会减弱。

  2. 您可能会考虑将圆设为自定义注释视图,而不是叠加层。这样,您只需调整coordinate即可,无需添加/删除。

© www.soinside.com 2019 - 2024. All rights reserved.