如何通过单击 iOS 中的特定注释来获取值?
Posted
技术标签:
【中文标题】如何通过单击 iOS 中的特定注释来获取值?【英文标题】:How to get the values by clicking specific annotations in iOS? 【发布时间】:2013-11-21 05:55:06 【问题描述】:我的应用中有一个地图视图和 2 个文本框。 两个文本框都显示纬度和经度。 我在地图视图中绘制或映射了一些注释,当单击每个注释时,标注会显示相应的纬度和经度值。 我只想在我的文本框中显示那些纬度和经度值。 我尝试了以下代码,
latitude_value.text=myAnnotation.title;
longitude_value.text=myAnnotation.subtitle;
latitude_value 和 longitude_value 是文本框 myAnnotation 是注解名称 标题和副标题包含纬度和经度值。 在此先感谢...!
【问题讨论】:
【参考方案1】:你可以给 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]
【讨论】:
MKAnnotationView 包含它访问的注释。【参考方案2】:您可以通过此代码设置纬度值和经度值:
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 的概念。访问结构成员的 C 点语法是唯一正确的方法。
【讨论】:
其实我的问题是,如果我选择任何注释,它的坐标应该显示在文本框中。 我应该在哪里添加这些编码。 @chandru 将这些代码放在 mapview 的委托方法中怎么样:- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view: 正在打印最后添加的注释坐标 @chandru 如果你把我的代码放在委托方法中,别忘了把“myAnnotation”改成“[view annotation]”以上是关于如何通过单击 iOS 中的特定注释来获取值?的主要内容,如果未能解决你的问题,请参考以下文章
如何通过单击 DataTable 同一行上的 Edit 按钮来获取 Id 值
在iOS中单击按钮时如何在UITableView中获取特定的JSON数据(目标c)?