2011-12-30 2 views
7

MKMapView의 selectAnnotation:animated:을 사용하면지도가 현재 표시된 MKCoordinateRegion에 MKAnnotation이 표시되지 않는 경우 화면에서 내지도를 스크롤한다는 것을 알았습니다.MKCoordinateRegion 내에서 MKAnnotation을 사용할 수 있는지 확인하는 방법

주석이 현재 지정된 MKCoordinateRegion 내에 화면에 있는지를 확인하는 간단한 방법이 있습니까? 나는 스크린 상에만 존재하는 주석을 선택할 수 있고, 오프 스크린상은 아닌 것을 선택할 수 있기를 원한다.

답변

24

MKMapView 클래스의 annotationsInMapRect: 메서드를 사용하십시오. 지정된지도 rect에 표시되는 모든 주석 객체의 NSSet을 반환합니다. 해당 주석이 해당 주석 집합에 있는지 테스트하려면 메서드를 NSSet으로 사용하십시오.

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

관련 문제