我有一个带有2个注释的地图,我想要每个都有2个不同的图像。
我知道如何使用一个注释来完成它,但我的问题是有两个注释。
以下是我的代码:
func mapView(mapView: MKMapView, viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView? {
let reuseId = "pin"
var anView = mapView.dequeueReusableAnnotationViewWithIdentifier(reuseId)
anView = MKAnnotationView(annotation: annotation, reuseIdentifier: reuseId)
anView!.image = nil;
anView!.image = UIImage(named:"destinationPin")
return anView
}
如果你能解释我什么是reuseId,那么我真的很感激。
提前致谢
答案 0 :(得分:1)
首先,在向地图添加注释时,您需要区分它们。简单的方法是设置标记值。然后你可以按如下方式分支逻辑:
if annotation.tag == 0 {
anView!.image = UIImage(named:"destinationPin")
} else {
anView!.image = UIImage(named:"alternateDestinationPin")
}
注意MKAnnotation具有其他属性,如标题和坐标,可用于分支逻辑。
答案 1 :(得分:0)
您可以将它们作为选项投射。
func mapView(mapView: MKMapView, viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView? {
let reuseId = "pin"
var anView = mapView.dequeueReusableAnnotationViewWithIdentifier(reuseId)
if let annotation1 = anView as? FirstAnnotation {
annotation1.image = UIImage(named: "first.jpg")
} else if let annotation2 = anView as? SecondAnnotation {
annotation2.image = UIImage(named: "second.jpg")
}
return anView
}
这具有类型安全的附加好处,而不依赖于您自己对tag
内部内容的了解。如果您有两个单独的MKAnnotation
类型,那么您应该将它们分类为两个单独的类。