MapView congelando por alguns segundos enquanto carrega milhares de dados e tempo de zoom no iOS

Estou desenvolvendoMapview em linguagem rápida. Pois, que estou carregando o arquivo geojson no meu mapview, está carregando com sucesso. Estou carregando comGEOSwift biblioteca. Está funcionando bem, mas, o que está acontecendo? Ao carregar dados, o mapview fica congelado / bloqueado por alguns segundos na interface do usuário e, posteriormente, mostra os dados. Mesmo enquanto o tempo de zoom também congela a interface do usuário por alguns segundos.

Estou carregandoLineString digite dados com coordenadas em torno de 7000 dados.

Até eu estou analisando apenas os dados no thread de segundo plano.

Eu tenho duas 3 guias para carregar dados diferentes no meu mapa com 3geojson

arquivos. Mesmo enquanto alterna um dado para outro, está ficando congelado.

Na depuração, seguem-se os erros de impressão ao ampliar / reduzir o zoom no mapa.

 [VKDefault] Tile 11720.7599.14 (128) in current unloaded state for 0.01 seconds - Raster Overlays Above Labels - Failed to decode (terminal) (0.01 sec)

Meu código é o seguinte.

@IBAction func mapDataAction(_ sender: Any) {
        let overlays = mapView.overlays
        mapView.removeOverlays(overlays)

        self.mapView.removeAnnotations(mapView.annotations)


        DispatchQueue.global(qos: .background).async {
            if let geoJSONURL = Bundle.main.url(forResource: “LineString”, withExtension: "geojson") {
                do {
                    var overlays = [MKPolyline]()
                    let features = try Features.fromGeoJSON(geoJSONURL)
                    for item in features! {
                        if  let item = item.geometries![0] as? LineString {
                            let polyLine = item.mapShape() as! MKPolyline
                            overlays.append(polyLine)
                        }
                    }
                    DispatchQueue.main.async {
                        // add overlays to map
                        self.mapView.addOverlays(overlays)
                    }

                } catch {
                    //handle error
                }
            }
        }
    }

E o aplicativo único falha com a seguinte mensagem lançada no console.

Terminated due to memory issue

E está tomando uma enorme memória do processador do dispositivo.

Ao rolar a visualização do mapa ou aumentar / diminuir o zoom, sua chamada é sempre o método delegate, tornando o congelamento da visualização do mapa.

public func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
    if let polyline = overlay as? MKPolyline {
        let renderer = MKPolylineRenderer(polyline: polyline)
        //renderer.fillColor = UIColor.blue.withAlphaComponent(0.5)
        renderer.strokeColor = UIColor.blue.withAlphaComponent(0.8)
        renderer.lineWidth = 5
         print("MKPolylineRenderer delegate calling")
        return renderer
    }


    return MKOverlayRenderer(overlay: overlay)

 //   fatalError("Unexpected overlay type")
}

Como posso resolver isso?

questionAnswers(0)

yourAnswerToTheQuestion