我在尝试识别点击了哪个标注气泡方面遇到了很多麻烦。
有没有一种方法来识别标注气泡,我在这里尝试了很多例子,但因为我对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
}
这段代码的第一部分如何运作,或许如果我更了解它,我就知道我在做什么。
另外,如果点击标注,我将如何检索标签,以便我可以分别对应用做出响应。
答案 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;
}
感谢。