如何使用Swift在mapkit上更改未选择的注释图钉图像

时间:2015-08-11 05:50:29

标签: swift annotations mapkit

我有一张地图,在这张地图上我有10个自定义注释引脚。所有引脚都有相同的自定义图像当我点击一个图钉时,我需要更改所有其他9个注释的图像。它可以改变点击的图像的图像,但我需要保持原样,我需要更改所有其他图钉。

我尝试使用Map mapView.annotations获取所有注释,并尝试查找选定的注释并更改其他图像但无法管理它。并且想法怎么做?

感谢您的建议

3 个答案:

答案 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