如何使用MKAnnotation存储属性

时间:2017-05-26 02:27:31

标签: swift mkannotation

我正在创建一个带有自定义引脚的地图,使用此行

self.mapView.addAnnotation(customMapAnnotationView.annotation!)

但是我需要稍后遍历所有引脚并使用一个键来匹配它们,以确定它们是否被删除。

for annotation:ChatRoomMapAnnotationView in self.chatMapView.annotations {
 ...
}

如何将此键与注释一起存储,以便在迭代时可用?

谢谢

2 个答案:

答案 0 :(得分:1)

如果我理解正确,如果您希望在注释中存储额外信息,您需要创建一个符合MKAnnotation的类,如此

class ChatRoomMapAnnotationView: NSObject, MKAnnotation {

let myKeyIdentifier: String
let coordinate: CLLocationCoordinate2D
let title: String?
let subtitle: String?

init(myKeyIdentifier: String, coordinate: CLLocationCoordinate2D, title: String?=nil, subtitle: String?=nil ) {
    self.myKeyIdentifier = myKeyIdentifier
    self.coordinate = coordinate
    self.title = title
    self.subtitle = subtitle
}
}

self.mapView.addAnnotation(CustomMapAnnotationView(.....))

for annotation in self.chatMapView.annotations {
    if let chatAnnotation = annotation as? ChatRoomMapAnnotationView {
       if chatAnnotation.myKeyIdentifier == "specialKey" {
          // do something special
       }
    }
}

答案 1 :(得分:0)

您需要具有注释的自定义类:

class CustomPin: MKPointAnnotation {
   var yourVar1: yourType1
   var yourVar2: yourType2
   // ...
   var yourVar3: yourType3
}

然后你可以像这样使用它:

if annotation is CustomPin {
     // do something
}

希望有所帮助