2011-12-30 1 views
7

MKMapViewのselectAnnotation:animated:を使用すると、マップが表示されている現在のMKCoordinateRegionにMKAnnotationが表示されていない場合、MKCoordinateRegion内でMKAnnotationが使用できるかどうかを確認するには

指定されたMKCoordinateRegion内に注釈が現在画面に表示されているかどうかを確認する方法はありますか?オフスクリーンではなく、画面上にある注釈を選択できるようにしたいと考えています。

答えて

24

MKMapViewクラスのannotationsInMapRect:メソッドを使用します。指定されたマップの矩形に表示されるすべての注釈オブジェクトのNSSetを返します。注釈がその表示注釈のセット内に存在するかどうかをテストするには、のcontainsObject:メソッドを使用してください。

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

また、visibleMapRectは、領域と同じですが、表現方法が異なります。現在、マップビューで表示される領域、ドキュメントから

visibleMapRect

してください。

@property(nonatomic) MKMapRect visibleMapRect

このプロパティは、領域プロパティと同じ基本的な情報を表す代わりに、領域の地図矩形として指定します。

+0

これは、標準のMKAnnotationViewより大きいカスタムアノテーションビューを考慮していますか?私が意味することは、それが目に見えているかもしれないが、それはややオフスクリーンかもしれないということです。 –

+1

Wheres the Plus 100ボタン!ありがとう。 – DogCoffee

関連する問題