如何在iOS中从地图pin获取位置

如何在iOS中从地图pin获取位置,ios,mkmapview,mkannotation,Ios,Mkmapview,Mkannotation,我使用的是MKMapView对象,我能够创建接点并将其放置在地图上。我现在要做的是从pin中获取信息。比如我的 - (MKAnnotationView*) mapView:(MKMapView *)mapView viewForAnnotation (id<MKAnnotation>)annotation -(MKAnnotationView*)地图视图:(MKMapView*)地图视图用于注释(id)注释 我创建了我的PIN并将其设置在地图上。我还创建了当用户点击pin时使用的

我使用的是MKMapView对象,我能够创建接点并将其放置在地图上。我现在要做的是从pin中获取信息。比如我的

- (MKAnnotationView*) mapView:(MKMapView *)mapView viewForAnnotation (id<MKAnnotation>)annotation
-(MKAnnotationView*)地图视图:(MKMapView*)地图视图用于注释(id)注释
我创建了我的PIN并将其设置在地图上。我还创建了当用户点击pin时使用的按钮。这一切都很好。现在我的问题是,当点击该按钮时,我如何从点击的pin获取信息?下面是我目前如何设置它的一个小示例代码。如有任何建议,将不胜感激

- (MKAnnotationView*) mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation
{
    MKPinAnnotationView *annView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"location"];
    annView.pinColor = MKPinAnnotationColorRed;
    annView.animatesDrop = YES;
    annView.canShowCallout = YES;
    annView.calloutOffset = CGPointMake(-5, 5);

    UIButton* callout = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
    [callout addTarget:self action:@selector(loadDetails:) forControlEvents:UIControlEventTouchUpInside];
    annView.rightCalloutAccessoryView = callout;
    return annView;
}

- (void)loadDetails:(id)sender
{
    //TODO: Get pin coordinates or address and match it back to an array of available address to show details in a new view
}
-(MKAnnotationView*)地图视图:(MKMapView*)地图视图注释:(id)注释
{
MKPinAnnotationView*annView=[[MKPinAnnotationView alloc]initWithAnnotation:annotation重用标识符:@“location”];
annView.pinColor=MKPinAnnotationColorRed;
annView.animatesDrop=是;
annView.canShowCallout=是;
annView.calloutOffset=CGPointMake(-5,5);
UIButton*callout=[UIButton Button类型:UIButtonTypedTailDisclosure];
[callout addTarget:self action:@selector(loadDetails:)forControlEvents:UIControlEventTouchUpInside];
annView.rightCalloutAccessoryView=标注;
返回视图;
}
-(无效)加载详细信息:(id)发件人
{
//TODO:获取pin坐标或地址,并将其与可用地址数组相匹配,以在新视图中显示详细信息
}

非常感谢任何建议

您应该创建一个从MKPinAnnotationView派生的类,该类的属性为
id
。在上述方法中,创建此新对象而不是MKPinAnnotationView,并将
id
属性设置为传入的注释。

响应委托方法而不是设置调用的目标

mapView:annotationView:calloutAccessoryControlTapped:

annotationView
将有一个带有坐标的
annotation
属性。

如果发送者显示它是一个按钮而不是MKPinAnnotationView,这会有什么帮助?这对我来说很好。我唯一的问题是,我还需要创建按钮吗?我只是觉得如果按钮没有被设置或者什么的话,那就是浪费。我认为你必须使用
[UIButton buttonwhithtype:UIButtonTypeDetailDisclosure]
来创建一个按钮,但是你不必设置目标/动作。它的设置与表视图中的详细信息公开不同。如果可行,请尝试并在此处进行注释。只需创建按钮并将标注设置为该按钮即可。再次感谢你。