2010-03-10 54 views
12

Có thể mở đồng thời nhiều chú thích nữa không?Chú thích nhiều chú thích hiển thị trong MKMapView

Mã:

- (void)mapViewDidFinishLoadingMap:(MKMapView *)theMapView { 
    for (id<MKAnnotation> currentAnnotation in theMapView.annotations) { 
     [theMapView selectAnnotation:currentAnnotation animated:YES]; 
    } 
} 

mở chỉ có một chú thích.

+0

Tại sao có nhiều hơn 1? Kích thước màn hình không đủ lớn và điều này gây nhầm lẫn cho người dùng. – kennytm

+2

Đúng vậy nhưng nếu chỉ có hai ba chân trên bản đồ với khoảng cách đủ lớn giữa chúng - người dùng sẽ không bị nhầm lẫn. Và, vâng, đó là yêu cầu của khách hàng của tôi. – Ievgen

Trả lời

7

Từ góc độ API nghiêm ngặt, điều này dường như không thể.

Các -(void)setSelected:(BOOL)selected animated:(BOOL)animated selector trên MKAnnotationView trạng thái: ". Bạn không nên gọi phương pháp này trực tiếp Một MKMapView đối tượng gọi phương pháp này để đáp ứng với tương tác người dùng với các chú thích" vì vậy thông điệp cơ bản là việc lựa chọn các trường hợp annotationView trong dưới sự đáp ứng đầy đủ của lựa chọn người dùng, và khi người dùng chỉ có thể chọn một trong số họ tại một thời điểm, bạn sẽ không thể nhận được một số người trong số họ được chọn cùng một lúc.

Ngay cả khi tài liệu nói rằng không nên gọi phương thức này trực tiếp, bạn có cố gắng gọi phương thức này một cách trực tiếp với setSelected:YES trên một số trường hợp MKAnnotationView để xem nó cung cấp gì không?

CÁCH SẠCH tôi sẽ làm điều đó: (không kiểm tra bản thân mình tuy nhiên)

  • không dựa vào cơ chế lựa chọn của MKMapView
  • lớp con các MKAnnotationView để thực hiện một tùy chỉnh một
  • thực hiện tùy chỉnh theo cách mà chú thích là một phần của chế độ xem chú thích để bạn có thể hiển thị một số chú thích.

Nếu bạn làm điều đó như thế này, bạn có thể làm xuất hiện một vài chú thích của bong bóng cùng một lúc và có được một cái gì đó sẽ như thế nào:

alt text http://a1.phobos.apple.com/us/r1000/048/Purple/2b/b2/ec/mzl.ttcsrlee.480x480-75.jpg

+0

Cảm ơn bạn đã trả lời. Vâng, bạn nói đúng, điều này có thể làm việc. – Ievgen

+0

bạn có quản lý để làm việc đó không? –

9

Lưu ý rằng có một phương pháp trên MKMapView (không MKAnnotationView) để lựa chọn một chú thích lập trình mà các công trình nhiều hơn hoặc ít hơn như bạn mong chờ:

- (void)selectAnnotation:(id <MKAnnotation>)annotation animated:(BOOL)animated 

Tuy nhiên, nó tự động loại bỏ bất kỳ hiện đang chú thích cùng một lúc để điều này không giải quyết được vấn đề của bạn.

Nhưng kỳ lạ, có một tài sản trên MKMapView xuất hiện để tổ chức một loạt các chú thích hiện đang được chọn:

@property(nonatomic, copy) NSArray *selectedAnnotations 

Nhưng tài liệu về phương pháp này nói:

"Gán một mảng mới thuộc tính này chỉ chọn chú thích đầu tiên trong mảng . "

Chỉ cần nghĩ rằng điều này có thể được quan tâm.

+0

Đáng buồn thay nhưng thực sự, kể từ năm 2013 và iOS 6.1, nó vẫn như bạn mô tả. – Klaas

Các vấn đề liên quan