我在iOS中使用標準mapkit方法(因此使用Apple地圖)向地圖添加批註時遇到了性能問題。我正在嘗試使用(void)addAnnotations:(NSArray *)annotations
方法批量添加大量批註(10000+)。註釋對象是沒有什麼特別的 - 即只定義爲構造實現MKAnnotation
遵循一個非常基本類:向地圖添加批註太慢 - iOS
- (id)initWithTitle:(NSString *)ttl andCoordinate:(CLLocationCoordinate2D)c2d {
if(self = [super init]) {
title = ttl;
coordinate = c2d;
}
return self;
}
爲了測試,我創建了一個基本的應用程序,只需添加註釋基本地圖在iPad上查看,大約需要6-7秒。非常可以接受的性能。但是,當我在自己的應用程序中嵌入相同的基本地圖視圖時,情況變得複雜。這是完全相同的邏輯,但是當我在我的應用程序中執行此操作時,大約需要50秒才能加載所有註釋。
我的應用程序有一堆彼此之間的意見。爲了查明問題,我已經開始從最底層開始嵌入地圖視圖,直到達到頂層。我已經完成了每一步的分析,看看它是否有助於性能,但我沒有看到任何結果 - 它仍然在50秒左右。現在,我的應用程序基本上只是加載註釋並將其添加到頂級和唯一級別的地圖視圖中,理想情況下與獨立應用程序相同,但無論出於何種原因,我仍然會看到註釋渲染大約需要50秒。我擁有的唯一合理解釋是關於某些應用程序設置,我以某種方式干擾了地圖的性能。我已經做了一堆閱讀來提出解決方案無濟於事。
任何人有什麼想法可能是這裏的問題?謝謝!
偉大的問題和深度/細節。不幸的是,我不知道答案,但對於StackOverflow的第一個計時問題,我必須爲你鼓掌! – MCKapur
我沒打過很多MapKit的,但這裏有2種可能的選擇:1)嘗試在BG線程(不知道是否會工作)這樣做。 2)只加載在定義的縮放中有意義的註釋。所以,如果喲非常縮小,你只有一個顯示也許20,當你放大,可能的註釋的數量將小於10K,那麼表明你相交當前視未來20更重要的......等等。 – LocoMike