近距离缩放时多段线消失

Polylines are disappearing when zoom closely

我创建了七条不同的折线。然而,当我仔细放大时,其中一些正在消失。为什么会这样?我该如何防止这种情况?

这是我的折线渲染器:

func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {

    let renderer = MKPolylineRenderer(polyline: overlay as! MKPolyline)
    renderer.strokeColor = UIColor(red: 1, green: 1, blue: 1, alpha: 0.9)
    renderer.lineWidth = 2.2
    return renderer
}

//Thousands of parameters sending as  a parameter
func createPathWithPoints(_ points: [MKMapPoint]) {
    let arc = MKPolyline(points: points, count: points.count)
    mapView.addOverlay(arc)
}

请帮忙!

我在使用 MKPolyline 时遇到了类似的问题,下面是我解决这个问题的方法。

1) 确保在 viewDidLoad() 中有 mapView 委托。

mapView.delegate = self

2) 将叠加层添加到地图。

mapView.addOverlay(polyLine())

我在我的项目中使用 coredata,所以如果 myLocations 为空,那么我 return empty MKPolyline()

private func polyLine() -> MKPolyline {
    guard let locations = myLocations else {
        return MKPolyline()
    }

    // Coordinates
    let coords: [CLLocationCoordinate2D] = locations.map { location in
        let location = location as! Location
        return CLLocationCoordinate2D(latitude: location.latitude, longitude: location.longitude)
    }

    return MKPolyline(coordinates: coords, count: coords.count)
}

3) 我们可以从 MKMapViewDelegate 访问 rendererFor。您可以更改折线的颜色和宽度。

func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
    guard let polyline = overlay as? MKPolyline else {
        return MKOverlayRenderer(overlay: overlay)
    }

    // Setup renderer
    let renderer = MKPolylineRenderer(polyline: polyline)
    renderer.strokeColor = .systemBlue
    renderer.lineWidth = 3

    return renderer
}