xcode映射引脚标注

时间:2012-09-07 12:45:59

标签: ios mapkit

我试图将标注添加到我的图钉中。它'我的第一个带有地图标注的应用程序,我需要帮助将所有引脚标注指向外部视图。

-(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;
}

触摸蓝色箭头时如何添加外部视图?

2 个答案:

答案 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

的委托