MapView se congela durante unos segundos mientras carga miles de datos y acerca el tiempo de acercamiento en iOS

Estoy desarrollandoMapview En lenguaje rápido. Para, que estoy cargando el archivo geojson en mi vista de mapa, se está cargando correctamente. Estoy cargando conGEOSwift biblioteca. Está funcionando bien, pero, qué sucede, mientras cargaba datos, la vista del mapa se congelaba / atascaba durante unos segundos en la interfaz de usuario y luego mostraba datos. Incluso mientras el tiempo de zoom también congela la interfaz de usuario unos segundos.

Estoy cargandoLineString escriba datos con coordenadas alrededor de 7000 datos.

Incluso estoy analizando los datos solo en el hilo de fondo.

Tengo dos 3 pestañas para cargar diferentes datos en mi mapa con 3geojson

archivos Incluso al cambiar un dato a otro, se está congelando.

En la depuración se sigue la impresión de error al acercar / alejar la vista del 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)

Mi código es el siguiente.

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

Y una aplicación única se bloquea con el siguiente mensaje lanzado en la consola.

Terminated due to memory issue

Y está tomando una gran memoria de la CPU del dispositivo.

Mientras se desplaza la vista de mapa o acerca / aleja, su llamado siempre es el método delegado, lo que hace que congele la vista de 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 puedo resolver esto?

Respuestas a la pregunta(0)

Su respuesta a la pregunta