我如何知道点击了哪个标注?

时间:2012-10-01 16:08:01

标签: ios5 xcode4.2 mkmapview mkannotationview

我在尝试识别点击了哪个标注气泡方面遇到了很多麻烦。

有没有一种方法来识别标注气泡,我在这里尝试了很多例子,但因为我对Objective CI的新手似乎无法解决如何使用它们。

我一直试图使用以下答案,但我与他们混淆

How to track which annotation callout clicked

我正在注意标注注释,但这甚至让我感到困惑。 :(

取自上述链接中的第二个答案:

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

if ([annotation isKindOfClass:[MKUserLocation class]]){
    return nil;

    if(annotation.tag == 111)
        //Do something
    else
        //Do some other thing
}

这段代码的第一部分如何运作,或许如果我更了解它,我就知道我在做什么。

另外,如果点击标注,我将如何检索标签,以便我可以分别对应用做出响应。

2 个答案:

答案 0 :(得分:0)

您可以将MKPinAnnotationView子类化,以便在

时识别它
- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKPinAnnotationView *)view

被召唤。

答案 1 :(得分:0)

您必须创建扩展MKAnnotation的类并创建一些属性(如标记)并指定唯一值或标记,并添加到mapview中。

Place* home = [[Place alloc] init] ;
home.name = [dForMap valueForKey:@"shortaddress"];
home.latitude = [[dForMap valueForKey:@"latitude"]floatValue];
home.longitude = [[dForMap valueForKey:@"longitude"]floatValue];
home.description = [dForMap valueForKey:@"shortaddress"];
home.flierid = count;
PlaceMark* from = [[PlaceMark alloc] initWithPlace:home] ;
from.flierid = count;
from.mapAnnotationType = MapAnnotationTypeProperty;    
[self addAnnotation:from];

单击标注气泡时,您可以像这样检查didSelectAnnotationView方法中的属性。

- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view
{
PlaceMark *a = (PlaceMark*)view.annotation;
Place *test = a.place;
int tag = test.flierid;
}

感谢。