ios - Swift - MKPinAnnotation 图像问题

标签 ios swift mkannotation mkpinannotationview

我正在尝试将我的 pin 注释图像更改为 pin 以外的其他内容。

    func mapView(mapView: MKMapView!, viewForAnnotation annotation: MKAnnotation!) -> MKAnnotationView! {

        if annotation is MKUserLocation {
            //return nil so map view draws "blue dot" for standard user location
            return nil
        }

        let reuseId = "pin"

        var pinView = mapView.dequeueReusableAnnotationViewWithIdentifier(reuseId) as? MKPinAnnotationView
        if pinView == nil {
            pinView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: reuseId)
            pinView!.canShowCallout = true
            pinView!.animatesDrop = true
            pinView!.pinColor = .Green
            pinView!.image = UIImage(named: "icon1.png")

            // Add image to left callout
            var mugIconView = UIImageView(image: UIImage(named: "test.png"))
            pinView!.leftCalloutAccessoryView = mugIconView

            // Add detail button to right callout
            var calloutButton = UIButton.buttonWithType(.DetailDisclosure) as UIButton
            pinView!.rightCalloutAccessoryView = calloutButton
        }
        else {
            pinView!.annotation = annotation
        }

        return pinView

除了更改图钉图像外,一切正常。我有一个自定义点注释子类,它是这个

我已经搜索了几个小时,但我发现的所有其他 SO 问题都没有帮助。如果有任何帮助,我将不胜感激……谢谢。

更新了答案

   func mapView(mapView: MKMapView!, viewForAnnotation annotation: MKAnnotation!) -> MKAnnotationView! {

    if annotation is MKUserLocation {
        //return nil so map view draws "blue dot" for standard user location
        return nil
    }

    var pinView = mapView.dequeueReusableAnnotationViewWithIdentifier("pin")

    if pinView == nil {
        pinView = MKAnnotationView(annotation: annotation, reuseIdentifier: "pin")
        pinView!.canShowCallout = true
        pinView!.image = UIImage(named: "test.png")

        // Add image to left callout
        var mugIconView = UIImageView(image: UIImage(named: "test.png"))
        pinView!.leftCalloutAccessoryView = mugIconView

        // Add detail button to right callout
        var calloutButton = UIButton.buttonWithType(.DetailDisclosure) as UIButton
        pinView!.rightCalloutAccessoryView = calloutButton
    }
    else {
        pinView!.annotation = annotation
    }

    return pinView
}

最佳答案

您需要 MKAnnotationView,而不是 MKPinAnnotationView。 Pin 注释无法自定义其图像。

参见 this SO answer for additional details

关于ios - Swift - MKPinAnnotation 图像问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27369265/

相关文章:

ios - 自定义 map 注释 iPhone 中的警告

ios - UIView 转换后拖动行为错误

objective-c - UIScrollView 就像新的 iOS App Store

json - 当我遍历 "Type ' 结果时,错误 'Sequence"Any' does not conform to protocol 'JSON' 是什么意思?

ios - 是否可以在 iPad Split View Controller 中插入标题?

ios - 使用 Firebase 检索多查询

ios - 在注释数组上设置公开按钮

javascript - 来自某个州的 react-native-map 标记图像来源

ios - Apple Watch 数据共享

iphone - 如何在 iOS 的 MKAnnotation 中添加更多细节