Iphone 轻触覆盖时显示详图索引

Iphone 轻触覆盖时显示详图索引,iphone,objective-c,Iphone,Objective C,我有一个MKMapView和几个叠加。一切都很好,它的工作原理是如此简单,令人难以置信。然而,有一件事我不能去工作。想法很简单:当用户在覆盖区域内点击时,必须弹出一个包含该覆盖信息的标注。覆盖都是MKPolygons,遵循MKOverlay协议,因此遵循MKAnnotation协议 MKOverlay协议符合 mk注释协议。因此, 所有覆盖对象也将被删除 注释对象,并且可以是 在代码中被视为一个或两个。 如果选择处理覆盖对象 作为两者,你都要对 在两个位置管理该对象。如果 您希望同时显示两个覆盖

我有一个MKMapView和几个叠加。一切都很好,它的工作原理是如此简单,令人难以置信。然而,有一件事我不能去工作。想法很简单:当用户在覆盖区域内点击时,必须弹出一个包含该覆盖信息的标注。覆盖都是
MKPolygon
s,遵循MKOverlay协议,因此遵循MKAnnotation协议

MKOverlay协议符合 mk注释协议。因此, 所有覆盖对象也将被删除 注释对象,并且可以是 在代码中被视为一个或两个。 如果选择处理覆盖对象 作为两者,你都要对 在两个位置管理该对象。如果 您希望同时显示两个覆盖 视图和注释视图,您可以 我们必须同时实施 地图视图:viewForOverlay:和 mapView:viewForAnnotation:中的方法 您的应用程序代理。它也 意味着您必须添加和删除 对象从覆盖层和 地图的注释数组

这来自苹果文档。我试过这样的方法:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation {

      MKAnnotationView *aView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:nil];
      aView.canShowCallout = YES;
}
-(MKAnnotationView*)地图视图:(MKMapView*)地图视图注释:(id)注释{
MKAnnotationView*aView=[[MKAnnotationView alloc]initWithAnnotation:annotation重用标识符:nil];
aView.canShowCallout=是;
}

但这似乎不起作用。我尝试过使用手势识别器,但除了使用
canShowCallOut
属性之外,我不知道如何显示标注…

我想您还必须添加MKOverlays作为标注

 [self.mapView addAnnotations:myOverlays];
然后在(mapView:viewForAnnotation)中返回一个未隐藏的MKAnnotationView,即图形(可点击)或零alpha视图。接下来,为每个MKOverlayView添加UIAgestureRecognitzer,确保它与地图的手势配合使用(UIAgestureRecognitzerDelegate实现用于同时识别)。最后,当您的手势识别器启动时,请执行此操作

[self.mapView setSelectedAnnotations:[NSArray arrayWithObject:myOverlayView.overlay]];
我不确定这是否真的会触发调用显示。
还要确保从覆盖对象返回标题和/或副标题。

谢谢您的回答。当我将管脚的alpha设置为零时,详图索引也会自动获取该alpha,因此这不是一个真正的选项。但是,我可以接受在用户点击覆盖图时显示pin,这样pin和标注就会可见。我现在通过使用
mapView:didSelectAnnotationView:
mapView:didSelectAnnotationView:
实现了这一点。如果您建议在显示标注时隐藏pin,那就太好了,但这并不重要。当我说0 alpha视图时,我的意思是image/[clear Color]not annotationView.alpha=0,制作一个空白png来放置它,或者将annotationView设置为抽象大小的纯彩色背景视图。