【问题标题】:MKAnnotationView doesn't display imageMKAnnotationView 不显示图像
【发布时间】:2016-09-30 14:26:41
【问题描述】:

这是一个小问题..

我已经编写了一些代码来更改在 mapView 中放置的图钉的图像。 “taxi.png”的 url 适用于图像视图,所以这不是当前的问题。

我也试过了:

pinView?.image = UIImage(named: "taxi.png")

代码:

 if pinView == nil{
        pinView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: reuseId)
        pinView?.canShowCallout = true
        var imageTaxi = UIImage(named: "taxi.png")!
        imageTaxi = imageTaxi.withAlignmentRectInsets(UIEdgeInsetsMake(0, 0, imageTaxi.size.height/2, 0))
        pinView?.image = imageTaxi
        }

        let button = UIButton(type: .detailDisclosure)
        pinView?.rightCalloutAccessoryView = button
        return pinView

有人看到这里应该修复什么才能查看图像吗?

编辑: 我现在有了这个,我仍然有标准的红色针尖..

 let annotation = CustomPin()
 annotation.coordinate = location
 annotation.title = "Boek Taxi"
 annotation.subtitle = ""
 let image = UIImage(named: "taxi.png")

 annotation.Image = image
 self.mapView.addAnnotation(annotation)
 let reuseId = "pin"
    var pinView = mapView.dequeueReusableAnnotationView(withIdentifier: reuseId)

    if pinView == nil{
        pinView = MKPinAnnotationView(annotation: CustomPin() as MKAnnotation, reuseIdentifier: reuseId)
        pinView?.canShowCallout = true

    } else {
        pinView?.annotation = CustomPin() as MKAnnotation
    }

    let cpa = annotation as! CustomPin

    pinView?.image = cpa.Image

    let button = UIButton(type: .detailDisclosure)
    pinView?.rightCalloutAccessoryView = button
    return pinView
    }

有什么我看过了吗?

【问题讨论】:

  • 看看这个Custom pin image
  • 确认此代码被调用(设置断点和/或打印日志语句)。可能未指定委托,或者方法签名不正确。如果不是这样,请他们澄清:当您说存在“问题”时,您到底看到了什么?红针?没有?崩溃?

标签: swift mkmapview


【解决方案1】:

试试这个

为您的自定义注释创建一个类 示例:

class CustomPin: MKPointAnnotation {

   let Image = UIImage

 }

然后在注释视图的函数中执行此操作

func mapView(mapView: MKMapView, viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView? {
         let reuseId = "image"

        var pinView = mapView.dequeueReusableAnnotationViewWithIdentifier(reuseId)
        if pinView == nil {

            pinView = MKAnnotationView(annotation: customPin as MKAnnotation, reuseIdentifier: reuseId)
            pinView!.canShowCallout = true

        } else {

            pinView!.annotation = customPin as MKAnnotation
        }

        let cpa = annotation as! CustomPin
        pinView!.image = cpa.Image

        let button = UIButton(type: UIButtonType.detailDisclosure)

        pinView!.rightCalloutAccessoryView = button


        return anView


        }

当您在 viewDidLoad() 或任何您想要的东西中创建注释时,最后添加自定义图像:

                                let Annotation = customPin()
                                Annotation.coordinate = //cooridnate
                                Annotation.title = //title
                                Annotation.subtitle = //subtitle

                                let image = UIImage(named: "taxi.png")
                                Annotation.Image = image

希望对你有帮助

【讨论】:

  • @Rob 在我的应用中运行良好,完全符合他的要求
  • 感谢您的回答@TripPhillips,但是当我这样做时,我仍然有红色标准的精确定位。请您看看我在问题帖子中上传的代码。我真的很感激
  • @royvano 您需要使用 MKAnnotationView 而不是 MKAnnotationPinView。那是你的问题。所以在你定义 pinView 的地方使用 MKAnnotationView。如果你使用 MKAnnotationPinView,你每次都会得到一个 pin。
  • @TripPhilips 谢谢!我根本没看到,它现在正在工作:)
  • 太棒了!很高兴我能帮上忙!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多