2012-01-07 4 views
0

mapView에서 4 ~ 5 가지 종류의 주석 클래스가 있습니다. 다음 코드에서는 AnnotationType1 만 for 루프에 응답해야합니다.MKMapView에서 perticular MKAnnotation 클래스 검색

for (AnnotationType1* annotation in mymap.annotations) 
     { 
NSLog(@"annotation class is %@", [annotation class]); 
} 

콘솔에서 분명히 알 수 있듯이 다른 클래스도 있습니다.

annotation class is AnnotationType1 
annotation class is AnnotationType2 
annotation class is AnnotationType3 
annotation class is AnnotationType4 

AnnotationType1 annotation에서만 동작을 수행하는 가장 좋은 방법은 무엇입니까?

답변

1

첫 번째로, 당신이 발견 한 것처럼 빠른 반복은 생각했던 것처럼 작동하지 않습니다. mymap.annotations은 어노테이션 객체의 배열을 반환합니다. 어떤 종류의 포인터를 지정했는지 전혀 알지 못합니다.

둘째, 일반적으로보기 (예 : MKMapView)에서 데이터 (예 : 특수 효과)를 저장하는 것이 좋지 않은 것으로 간주됩니다. 에 대한지도보기는에 대한 정보를 잘 알고 있습니다. 주석을 올바르게 작성해야합니다. 하지만 앱의 상태를 유지하기 위해지도 뷰를 계산하지 않는 것이 좋습니다. 어노테이션 객체를 데이터 모델의 어딘가에 저장했을 것입니다. 그렇다면 어노테이션리스트를 얻는 것이 더 좋습니다.

세 번째로 조건자를 사용하여 배열을 필터링 할 수 있습니다. 술어를 사용하여 클래스 이름별로 필터링하는 데 도움이 필요하면 See this answer을 참조하십시오.

+0

@Caleb에게 감사드립니다. 그것은 매우 유용했습니다. 나는 다양한 종류의 주석 유형을 저장하기 위해 별도의 배열을 가질 것이다. – chatur

관련 문제