Замедляет ли постоянный рендеринг аннотаций мою карту?
Когда на карте размещается слишком много аннотаций, она начинает тормозить. Похоже, это связано с масштабированием, из-за которого кажется, что аннотации отображаются снова и снова. Есть ли у кого-нибудь способ сделать эту работу более эффективной? Процессор также подскакивает, но он утверждает, что отладка с помощью него может быть сотни раз, когда появляется это предупреждение о том, что я не могу исправить белое пятно, сделав регион постоянным:
Публикация изменений из обновлений представления не разрешена, это приведет к неопределенному поведению.
@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)
}
}
}