Полилинии исчезают при увеличении масштаба

Я создал семь разных полилиний. Однако некоторые из них исчезают, когда я увеличиваю масштаб. Почему это происходит? Как я могу предотвратить это?

Вот мой рендерер ломаной линии:

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)
}

Пожалуйста помоги!

0 ответов

У меня была аналогичная проблема с использованием MKPolyline, и ниже я сделал, чтобы исправить это.

1) Убедитесь, что у вас есть делегат mapView в viewDidLoad ().

mapView.delegate = self

2) Добавьте ваш оверлей на карту.

mapView.addOverlay(polyLine())

Я использую coredata в своем проекте, поэтому, если myLocations пусто, я возвращаю пустой 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) У нас есть доступ к rendererFor из MKMapViewDelegate. Вы можете изменить цвет и ширину полилинии.

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
}
Другие вопросы по тегам