ユーザーがオーバーレイをタップしたときにコールアウトを表示しようとしています。コールアウトには、選択したオーバーレイに基づいたタイトルが付けられます。ユーザーがオーバーレイをタップしたときにのみ注釈が表示されるようにしたい。ただし、問題は、オーバーレイがタップを認識せず、開始時にすべての注釈が表示されることです。隠して欲しい。
同様の質問がここにあります。しかし、私はそれを理解することはできません。 オーバーレイをタップしたときにコールアウトを表示する
オーバーレイ調整はサーバーからダウンロードされ、次のように追加されます。
//Add a polygon
MKPolygon *rect=[MKPolygon polygonWithCoordinates:parkingCords count:5];
[self.mapView addOverlay:rect];
[self.mapView addAnnotation:rect];
各オーバーレイの中央に注釈が付けられました。
ViewForAnnotation
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation{
...
else if([annotation isKindOfClass:[MKPolygon class]]){
NSLog(@"MKPOLYGON CLASS");
static NSString *identifier3 = @"else";
MKPinAnnotationView *annotationView = (MKPinAnnotationView *) [self.mapView dequeueReusableAnnotationViewWithIdentifier:identifier3];
if (annotationView == nil) {
annotationView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:identifier3];
annotationView.enabled = YES;
annotationView.canShowCallout = YES;
} else {
annotationView.annotation = annotation;
}
...
}
viewForOverlay
-(MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay{
if([overlay isKindOfClass:[MKPolygon class]]){
MKPolygonView *view = [[MKPolygonView alloc] initWithOverlay:overlay];
view.lineWidth=1;
view.strokeColor=[UIColor blueColor];
view.fillColor=[[UIColor blueColor] colorWithAlphaComponent:0.3];
recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(overlayTapped)];
recognizer.delegate=self;
[view addGestureRecognizer:recognizer];
[recognizer release];
return view;
}
return nil;
}
-(void)overlayTapped{
NSLog(@"overlay tapped");
//[self.mapView setSelectedAnnotations:?????];
}