从安装地图的阵列中检索信息(MapKit)
Posted
技术标签:
【中文标题】从安装地图的阵列中检索信息(MapKit)【英文标题】:Retrieving information from the array that mounted the map (MapKit) 【发布时间】:2017-02-09 11:35:12 【问题描述】:我有一个包含几个字典的数组。在每本字典中,我都有一些信息。我想在地图上为数组中的每个项目添加一个点。除了 didSelectForAnnotation 方法之外,我什么都没有,我如何将数组作为该对象的某些信息进入?在表中,我将使用 indexPath,但注释没有该 indexPath。有解决办法吗??
【问题讨论】:
【参考方案1】:如果您想与MKPointAnnotation
一起设置自定义信息,那么您需要对其进行子类化并创建一个自定义属性,您可以使用后者将其与其他数组对象区分开来。
class MyAnnotation: MKPointAnnotation
var arrayIndex: Int!
现在您需要使用MyAnnotation
类创建注释,并使用您要创建注释的数组索引设置arrayIndex。
for (index,item) in yourArray.enumerated()
let annotation = MyAnnotation()
//Set arrayIndex for your annotation
annotation.arrayIndex = 1
//Set coordinate and title from your array
annotation.coordinate = locations
annotation.title = "Zaid Homes"
annotation.subtitle = "Hay aljameaa"
map.addAnnotation(annotation)
现在在 mapView 的 didSelect view
方法中,您可以获得该索引。
func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView)
if let annotation = view.annotation as? MyAnnotation
print(annotation.arrayIndex)
print(yourArray[annotation.arrayIndex])
【讨论】:
谢谢。我会试试这个,稍后我会回答。 我收到此错误:“无法将 'NSKVONotifying_MKUserLocation' (0x7c985000) 类型的值转换为 'Floop.MyAnnotation'”以上是关于从安装地图的阵列中检索信息(MapKit)的主要内容,如果未能解决你的问题,请参考以下文章