0

我在尝试确定单击了哪个标注气泡时遇到了很多麻烦。

有没有一种方法可以识别标注气泡,因为我在这里尝试了许多示例,但是因为我对 Objective CI 很陌生,似乎无法弄清楚如何使用它们。

我一直在尝试使用以下答案,但我对它们感到困惑

如何跟踪单击了哪个注释标注

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

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

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

这个片段的第一部分是如何工作的,也许如果我能更好地理解它,我就会知道我正在使用什么。

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

4

2 回答 2

0

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

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

叫做。

于 2013-01-09T14:42:37.753 回答
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;
}

谢谢。

于 2013-10-25T07:52:51.367 回答