我试图将标注添加到我的图钉中。它'我的第一个带有地图标注的应用程序,我需要帮助将所有引脚标注指向外部视图。
-(MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation {
MKPinAnnotationView *MyPin=[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"current"];
MyPin.pinColor = MKPinAnnotationColorPurple;
UIButton *advertButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
[advertButton addTarget:self action:@selector(button:) forControlEvents:UIControlEventTouchUpInside];
MyPin.rightCalloutAccessoryView = advertButton;
MyPin.draggable = NO;
MyPin.highlighted = YES;
MyPin.animatesDrop=TRUE;
MyPin.canShowCallout = YES;
return MyPin;
}
触摸蓝色箭头时如何添加外部视图?
答案 0 :(得分:0)
我已经有一段时间了,但我认为你需要一个NSObject作为地图对象。我在使用地图编写我的上一个应用程序时使用了this教程,它帮了很多忙。但可能已经过时了。或者,您可以在Google地图网站上构建自定义地图并解析kml数据,该数据固有地使用名称生成标注气泡,从那里您可以编写标注更复杂的代码。另一个替代方案是MapBox,这是一个简单而美观且具有大量示例项目的独立库。 Here可能是一个相关的SO问题,其中包含制作自定义标注附件的代码。
答案 1 :(得分:0)
在- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
方法的内部,尝试以下内容:
// Add button to callout
UIButton* advertButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
pinView.rightCalloutAccessoryView = advertButton;
(在此示例中,pinView
是您从该方法返回的视图)
然后,将方法添加到同一个类:
-(void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control {
id <MKAnnotation> annotation = [view annotation];
if ([annotation isKindOfClass:[MKPointAnnotation class]])
{
// TRANSITION TO VIEW HERE
}
}
处理此问题的类应该是MKMapViewDelegate