我正在使用从此处获取的简单标记簇https://github.com/ribl/FBAnnotationClusteringSwift

而且我看到这部分代码负责将群集或大头针放在地图上:

func mapView(mapView: MKMapView!, viewForAnnotation annotation: MKAnnotation!) -> MKAnnotationView! {
        var reuseId = ""
        if annotation.isKindOfClass(FBAnnotationCluster) {
            reuseId = "Cluster"
            var clusterView = mapView.dequeueReusableAnnotationViewWithIdentifier(reuseId)
            clusterView = FBAnnotationClusterView(annotation: annotation, reuseIdentifier: reuseId, options: nil)
            return clusterView
        } else {
            reuseId = "Pin"
            var pinView = mapView.dequeueReusableAnnotationViewWithIdentifier(reuseId) as? MKPinAnnotationView
            pinView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: reuseId)
            pinView!.pinColor = .Green
            return pinView
        }
    }

它工作正常,我看到集群或单个图钉,但是现在我想为用户按下的每个图钉添加一个弹出窗口,如下所示:

ios - 快速使用标记聚类时,如何在苹果 map 的图钉上添加注释 View ?-LMLPHP

我在这里找到此屏幕截图http://www.raywenderlich.com/90971/introduction-mapkit-swift-tutorial
在本教程之后,我创建了一个SingleRequest类,还修改了上述代码,所以现在看起来像这样:
func mapView(mapView: MKMapView!, viewForAnnotation annotation: MKAnnotation!) -> MKAnnotationView! {
        var reuseId = ""
        if annotation.isKindOfClass(FBAnnotationCluster) {
            reuseId = "Cluster"
            var clusterView = mapView.dequeueReusableAnnotationViewWithIdentifier(reuseId)
            clusterView = FBAnnotationClusterView(annotation: annotation, reuseIdentifier: reuseId, options: nil)
            return clusterView
        } else {
            reuseId = "Pin"

            if let annotation = annotation as? SingleRequest {

            var pinView = mapView.dequeueReusableAnnotationViewWithIdentifier(reuseId) as? MKPinAnnotationView
            pinView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: reuseId)
            pinView!.pinColor = .Green
            pinView!.canShowCallout = true
            pinView!.calloutOffset = CGPoint(x: -5, y: 5)
            pinView!.rightCalloutAccessoryView = UIButton(type: .DetailDisclosure) as UIView

            return pinView
            }
            return nil
        }


    }

但是,当我单击地图上的图钉时,看不到任何东西。
而且,单个引脚现在是红色(默认颜色),因此看起来像这样:
pinView!.pinColor = .Green
在代码中被忽略,其余的也可能被忽略。

我在这里想念什么?

最佳答案

我有同样的麻烦了两天。我不知道是否是出于相同的原因(但声誉不足以发表评论)。
(是的,我有点迟了,对不起^^)

您的viewcontroller中的viewDidLoad()函数中是否包含以下行:

mapView.delegate = self

另外,关于您的颜色,不建议使用您使用的行。试试这个 :
pinView?.pinTintColor = UIColor.purpleColor()

希望能帮助到你。

关于ios - 快速使用标记聚类时,如何在苹果 map 的图钉上添加注释 View ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35683873/

10-13 03:18