Tôi gặp vấn đề về hiệu năng khi thêm chú thích vào bản đồ trong iOS (sử dụng các phương pháp bản đồ tiêu chuẩn - do đó sử dụng bản đồ Apple). Tôi đang cố gắng thêm một số lượng lớn các chú thích (10000+) hàng loạt, sử dụng phương thức (void)addAnnotations:(NSArray *)annotations
. Các đối tượng chú thích là không có gì đặc biệt - một lớp học rất cơ bản mà thực hiện MKAnnotation
chỉ với các nhà xây dựng quy định như sau:Thêm chú thích vào bản đồ quá chậm - iOS
- (id)initWithTitle:(NSString *)ttl andCoordinate:(CLLocationCoordinate2D)c2d {
if(self = [super init]) {
title = ttl;
coordinate = c2d;
}
return self;
}
Để kiểm tra, tôi đã tạo ra một ứng dụng cơ bản mà chỉ cần thêm các chú thích vào một bản đồ cơ bản xem trên tải, và phải mất khoảng 6-7 giây trên một iPad 2. Hiệu suất rất chấp nhận được. Tuy nhiên, mọi thứ trở nên phức tạp khi tôi nhúng cùng một chế độ xem bản đồ cơ bản trong ứng dụng của riêng tôi. Đó là chính xác cùng một logic, nhưng khi tôi làm điều đó trong ứng dụng của tôi, phải mất khoảng 50 giây để tải tất cả các chú thích.
Ứng dụng của tôi có nhiều lượt xem trong nhau. Để xác định vấn đề, tôi đã bắt đầu nhúng chế độ xem bản đồ bắt đầu từ cấp thấp nhất, cho đến khi tôi đạt đến cấp cao nhất. Tôi đã thực hiện profiling trong từng bước để xem nó có giúp hiệu suất hay không, nhưng tôi không thấy kết quả nào - nó vẫn còn khoảng 50 giây. Hiện tại, ứng dụng của tôi về cơ bản chỉ tải và thêm chú thích vào chế độ xem bản đồ cấp cao nhất và duy nhất, lý tưởng giống như ứng dụng độc lập, nhưng vì lý do gì đó, tôi vẫn thấy hiển thị chú thích mất khoảng 50 giây. Lời giải thích hợp lý duy nhất tôi có là liên quan đến một số cài đặt ứng dụng mà tôi có bằng cách nào đó cản trở hiệu suất bản đồ. Tôi đã thực hiện một loạt các đọc để đưa ra một giải pháp không có kết quả.
Bất kỳ ai cũng có bất kỳ ý tưởng nào về vấn đề ở đây? Cảm ơn!
Câu hỏi và chiều sâu/chi tiết tuyệt vời. Thật không may tôi không biết câu trả lời, nhưng đối với một câu hỏi hẹn giờ đầu tiên trên StackOverflow tôi phải hoan nghênh bạn! – MCKapur
Tôi đã không chơi nhiều MapKit, nhưng đây là 2 tùy chọn có thể: 1) Thử thực hiện nó trong một chuỗi bg (không chắc chắn nếu nó hoạt động). 2) Chỉ tải chú thích sẽ có ý nghĩa trong thu phóng được xác định. Vì vậy, nếu yo rất thu nhỏ, bạn chỉ có thể hiển thị 20, khi bạn phóng to, số chú thích có thể sẽ nhỏ hơn 10k, vì vậy hãy hiển thị 20 quan trọng tiếp theo giao cắt chế độ xem hiện tại của bạn ... v.v. – LocoMike