如何通过单击iOS中的特定注释来获取值?

时间:2013-11-21 05:55:07

标签: ios annotations mkmapview

我的应用中有一个地图视图和两个文本框。 两个文本框都显示纬度和经度 我在地图视图中绘制或映射了几个注释,并且当单击每个注释时,将显示带有相应纬度和经度值的标注。
我只想在文本框中显示那些纬度和经度值。 我尝试了以下代码,

latitude_value.text=myAnnotation.title;
longitude_value.text=myAnnotation.subtitle;

latitude_value和longitude_value是文本框
myAnnotation是注释名称
标题和副标题包含纬度和经度值 在此先感谢...!

2 个答案:

答案 0 :(得分:2)

如果myAnnotation自定义对象是

之类的自定义属性,则可以为其提供标记

假设myAnnotation具有以下属性,

@property (nonatomic, copy) NSString *title;
@property (nonatomic, copy) NSString *subTitle;
@property (readwrite) int tag; // Tag to identify annotation

在您添加注释之后,假设您有对象的数组aLocations,所以给出一个标记,如

for(int i=0; i< [aLocations count]; i++)
{
   // Create MyAnnotation object and initialize it, suppose created object  is myAnnotation, now set it's tag
   myAnnotation.tag=i;
}

之后,您可以访问

中的标记值
-(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view
{
   MyAnnotation *temp = (MyAnnotation*) view.annotation;
   NSLog(@"%d",temp.tag);
   // and now use 
   [aLocations objectAtIndex:temp.tag]
}

答案 1 :(得分:1)

您可以通过以下代码设置latitude_value和longitude_value:

float latitude = [myAnnotation coordinate].latitude;
float longitude = [myAnnotation coordinate].longitude;
latitude_value.text=[NSString stringWithFormat:@"%f",latitude];
longitude_value.text=[NSString stringWithFormat:@"%f",longitude];

因为CLLocationCoordinate2D是一个结构,所以它没有方法或getter的概念。用于访问struct成员的C dot语法是唯一正确的方法。