我有一张地图,在这张地图上我有10个自定义注释引脚。所有引脚都有相同的自定义图像当我点击一个图钉时,我需要更改所有其他9个注释的图像。它可以改变点击的图像的图像,但我需要保持原样,我需要更改所有其他图钉。
我尝试使用Map mapView.annotations
获取所有注释,并尝试查找选定的注释并更改其他图像但无法管理它。并且想法怎么做?
感谢您的建议
答案 0 :(得分:3)
符合bookmarklet
协议,然后:
MKMapViewDelegate
如果您想在另一个时刻处理所有注释,也可以保存选定的注释以供以后使用。
答案 1 :(得分:1)
终于管理:)解决问题有点困难但工作顺利:)谢谢你的提示rshev;)
我使用bool进行点击识别
func mapView(mapView: MKMapView!, viewForAnnotation annotation: MKAnnotation!) -> MKAnnotationView! {
if annotation is CustomAnnotation {
var pin = mapView.dequeueReusableAnnotationViewWithIdentifier(customAnnotationViewIdentifier)
pin = MKPinAnnotationView(annotation: annotation, reuseIdentifier: customAnnotationViewIdentifier)
if tapControl {
pin.image = UIImage(named: "MapAnnotationIcon")
} else {
pin.image = UIImage(named: "SelectedMapAnnotationIcon")
}
if pin == nil {
pin.canShowCallout = false
} else {
pin.annotation = annotation
}
return pin
当引脚敲击时 - >
if let annotation = view.annotation as? CustomAnnotation {
tapControl = !tapControl
for annotation in mapView.annotations {
if let annotation = annotation as? MKAnnotation where !annotation.isEqual(selectedAnnotation) {
mapView.removeAnnotation(annotation)
}
}
addAnnotations()
println("tapped")
我删除了没有选定引脚的所有引脚,然后将它们拉回来,但这次tap控制是假的,所以其他引脚被重新绘制另一个imageview,这就是我想要做的。
答案 2 :(得分:1)
您必须覆盖friend
子类中的isSelected
属性。
MKAnnotationView