从安装地图的阵列中检索信息(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)的主要内容,如果未能解决你的问题,请参考以下文章

如何将信息从 MapKit 注释发送到新的视图控制器

使用 SwiftUI 和 MapKit 检索用户当前位置

您可以使用 Mapkit 在 Apple 地图中引用某个地点吗?

MapKit:如何从非常大的图像中添加新的地图层

如何使用 MapKit 从地图中删除所有注释

mapKit 是不是有任何默认按钮允许用户将地图的方向从设备方向更改为北上?