点击叠加时显示标注和图钉
我试图在用户点击叠加层时显示标注。然后,标注上会有一个基于所选叠加层的标题。我希望仅当用户点击叠加层时才显示注释。但问题是覆盖层无法识别点击,并且所有注释在开始时都是可见的。我想让它们隐藏起来。
这里有一个类似的问题。但我不明白。 点击覆盖时显示标注
覆盖协调从服务器下载并添加如下:
//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:?????];
}
Im trying to show a callout when user taps on an overlay. The callout then has a title on it based on the selected overlay. I want the annotations to be shown only when users taps on an overlay. but the problem is that the overlay doesnt recognize the tap and all the annotations are visible at start. I want them hidden.
a similiar question is here. but I cant figure it out.
Show callout when tapping overlay
overlays coordinations are downloaded from the server and added like this:
//Add a polygon
MKPolygon *rect=[MKPolygon polygonWithCoordinates:parkingCords count:5];
[self.mapView addOverlay:rect];
[self.mapView addAnnotation:rect];
Each overlay has now an Annotation in its centre.
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:?????];
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我已经解决了这段代码:
在确定跨度区域之后
希望这段代码有用
I've solved whit this code:
After you had determinate the span region
Wishing this code useful