Замедляет ли постоянный рендеринг аннотаций мою карту?

Когда на карте размещается слишком много аннотаций, она начинает тормозить. Похоже, это связано с масштабированием, из-за которого кажется, что аннотации отображаются снова и снова. Есть ли у кого-нибудь способ сделать эту работу более эффективной? Процессор также подскакивает, но он утверждает, что отладка с помощью него может быть сотни раз, когда появляется это предупреждение о том, что я не могу исправить белое пятно, сделав регион постоянным:

Публикация изменений из обновлений представления не разрешена, это приведет к неопределенному поведению.

      @State var selected : Annotation?
@State var annotations = [Annotation(coordinates:CLLocationCoordinate2D(latitude: 39.86999190, longitude: -86.04429416), event: false)]

@State private var isPreviewing = false

var body: some View {
    NavigationStack{
        ZStack(alignment: .bottom) {
            Map(coordinateRegion: $locationManager.region,
                showsUserLocation: true,
                annotationItems: annotations) { annotation in
                MapAnnotation(coordinate: annotation.coordinates){
                    //annotations are displayed as buttons
                }
            }
        }
    }
}

on display вызывается, когда карта загружается и вызывает эту функцию, которая добавляет аннотации в массив:

      func fetchEvents(){
    var newAnnotations1 = self.annotations
    let publicDB = CKContainer.default().publicCloudDatabase
    let date = NSDate(timeInterval: -7.9 * 3600, since: NSDate() as Date)
    let predicate = NSPredicate(format: "creationDate > %@", date)
    let query = CKQuery(recordType: "event", predicate:predicate)

    publicDB.fetch(withQuery: query, inZoneWith: nil) { result in
        switch result {
        case .success((let matchResults, _)):
            for matchResult in matchResults {
                switch matchResult.1 {
                case .success(let record):
                    if let location = record["location1"] as? CLLocation {
                        let identified = record.recordID
                        newAnnotations1.append(Annotation(coordinates: location.coordinate,event:true,identify: identified))
                        self.annotations = newAnnotations1
                    }
                case .failure(let error): print(error)
                }
            }
        case .failure(let error): print(error)
        }
    }
}

0 ответов

Другие вопросы по тегам