2011-12-30 31 views
7

tôi đã nhận thấy rằng nếu tôi sử dụng MKMapView của selectAnnotation:animated:, rằng nó sẽ di chuyển bản đồ của tôi tắt màn hình nếu MKAnnotation không được hiển thị trong MKCoordinateRegion hiện rằng bản đồ của tôi đang hiển thị.Làm thế nào để bạn kiểm tra xem một MKAnnotation có sẵn trong một MKCoordinateRegion

Có cách nào nhỏ nhặt để kiểm tra xem chú thích hiện có trên màn hình trong MKCoordinateRegion được chỉ định không? Tôi muốn có thể chọn một chú thích chỉ có trên màn hình chứ không phải một cái gì đó không có màn hình.

Trả lời

24

Sử dụng phương thức annotationsInMapRect: trong lớp MKMapView. Nó trả về một NSSet của tất cả các đối tượng chú thích được hiển thị trong bản đồ trực tiếp đã cho. Sử dụng phương pháp containsObject: của NSSet để kiểm tra xem chú thích có xuất hiện trong bộ chú thích hiển thị đó hay không.

MKMapRect visibleMapRect = aMapView.visibleMapRect; 
NSSet *visibleAnnotations = [aMapView annotationsInMapRect:visibleMapRect]; 
BOOL annotationIsVisible = [visibleAnnotations containsObject:someAnnotation]; 

Ngoài ra visibleMapRect cũng giống như khu vực nhưng chỉ là một dạng biểu diễn khác. Lấy từ tài liệu,

visibleMapRect

Khu vực này hiện đang được hiển thị bởi giao diện bản đồ.

@property(nonatomic) MKMapRect visibleMapRect

Khách sạn này đại diện cho thông tin cơ bản tương tự như tài sản khu vực nhưng quy định như một hình chữ nhật bản đồ thay vì một khu vực.

+0

Tài khoản này có dành cho chú thích tùy chỉnh lớn hơn MKAnnotationView chuẩn không? Những gì tôi có nghĩa là nó có thể được nhìn thấy, nhưng nó có thể được phần nào offscreen. –

+1

Làm nổi bật nút Cộng 100! Cảm ơn. – DogCoffee

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