【问题标题】:How do I know which callout has been clicked?我如何知道点击了哪个标注?
【发布时间】:2012-10-01 16:08:00
【问题描述】:

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

有没有一种方法可以识别标注气泡,因为我在这里尝试了许多示例,但是因为我对 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
}

这个 sn-p 的第一部分是如何工作的,也许如果我能更好地理解它,我就会知道我在处理什么。

此外,当我点击标注时,我将如何检索标签,以便我可以让应用程序分别响应。

【问题讨论】:

标签: ios5 xcode4.2 mkmapview mkannotationview


【解决方案1】:

您可以将 MKPinAnnotationView 子类化,以便在何时识别它

- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKPinAnnotationView *)view

被调用。

【讨论】:

    【解决方案2】:

    您必须创建扩展 MKAnnotation 的类并创建一些属性(如标签)并分配唯一值或标签并添加到地图视图中。

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

    谢谢。

    【讨论】:

      猜你喜欢
      • 2019-09-14
      • 1970-01-01
      • 1970-01-01
      • 2012-04-18
      • 1970-01-01
      • 1970-01-01
      • 2012-04-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多