2012-08-17 1 views
0

나는 mapView에 몇 개의 주석을 달았습니다. 위의 코드를 사용하면 정상적으로 작동합니다.위치 추가 특정 탭 기능을 didSelectAnnotation MapKit

float userLatitude = [[userDict objectForKey:@"lat"]floatValue]; 
float userLongitude = [[userDict objectForKey:@"long"]floatValue]; 
NSString *someString = [someArray objectAtIndex:i]; 
NSString *anotherString = [anotherArray objectAtIndex:i]; 

    CLLocationCoordinate2D loopCoord = {.latitude = userLatitude, .longitude = userLongitude}; 

    MapAnnotationViewController *addAnnotation = [[MapAnnotationViewController alloc] initWithCoordinate:loopCoord]; 
     self.localImage = [UIImage imageNamed:@"first.png"]; 
     [addAnnotation setTitle:someString]; 
     [addAnnotation setSubTitle:anotherString]; 
     [mainMapView addAnnotation:addAnnotation]; 

기본적으로 사용자가지도에서 각 주석을 터치 할 때 사용자 지정 터치를 추가하고 싶습니다. 나는 다음과 같은 코드를받을 수 있나요 어떻게

-(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view 

:이 방법은 내가 태그 또는 대리자 메서드 각 주석에서 PARAM을 전달하려면 어떻게지도 (안 표준 didSelect)에 특정 위치에서 발사 할 필요가

UITapGestureRecognizer *singleFingerTap = 
    [[UITapGestureRecognizer alloc] initWithTarget:self 
              action:@selector(handleSingleTap:)]; 
[self.view addGestureRecognizer:singleFingerTap]; 
[singleFingerTap release]; 

//The event handling method 
- (void)handleSingleTap:(UITapGestureRecognizer *)recognizer { 
    CGPoint location = [recognizer locationInView:[recognizer.view superview]]; 

    //Do stuff here... 
} 

특정 주석 당 didSelectAnnotationView이 전달 되었습니까?

+0

당신은 단지 didSelectAnnotationView에 view.annotation를 사용하여 주석에 액세스 할 수 없습니다 :

-(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view { MyAnnotationClass *myAnno = (MyAnnotationClass *)view.annotation; //Do something with myAnno.touchSelector; } 

여기에 자신의 MKAnnotaion 준수 클래스에 데이터를 저장에 대한 SO 질문입니다? – Anna

+0

예, 탭 제스처 인식기를 annotationClass에 추가 하시겠습니까? 그리고 어떻게하면 각 주석에 특화 될 수 있습니까? – Eric

+0

제스처 인식기가 필요한 이유는 무엇입니까? 위임 메서드는이 메서드없이 호출됩니다. – Anna

답변

1

나는 전통적인 방법이 MKAnnotation 프로토콜을 구현하고 사용자 정의 데이터를 거기에 저장하는 클래스를 만드는 것이라고 믿는다. 제목, 부제 및 좌표를 표준으로 저장해야하며 touchSelector를 추가 할 수 있습니다. 그런 다음 didSelect 메서드가 호출되면 매개 변수 중 하나가 annotation이라는 속성이있는 MKAnnotationView입니다. 사용자 정의 클래스로 캐스팅 한 다음 해당 selector 속성에 액세스하십시오. Store data in MKAnnotation?