我正在使用取自此处 https://github.com/ribl/FBAnnotationClusteringSwift 的简单标记簇
我看到这部分代码负责在 map 上放置一个集群或一个图钉:
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
}
}
它工作正常,我看到了集群或单个引脚,但现在我想为用户按下的每个引脚添加一个弹出窗口,如下所示:
我在这里找到了这张截图 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
}
}
但是,当我点击 map 上的图钉时,仍然看不到任何东西。 更重要的是,单个引脚现在是红色的(默认颜色),看起来像这样一行:
pinView!.pinColor = .Green
在代码中被忽略了,可能其他的也是。
我在这里错过了什么?
最佳答案
我有 2 天遇到完全相同的问题。我不知道是否出于同样的原因(但没有足够的声誉来发表评论)。 (是的,我来晚了,抱歉 ^^)
你的 viewDidLoad()
函数中是否有这一行,在你的 View Controller 中:
mapView.delegate = self
此外,关于您的颜色,您使用的线条已弃用。试试这个:
pinView?.pinTintColor = UIColor.purpleColor()
希望对您有所帮助。
关于ios - 在 swift 中使用标记聚类时,如何向我的苹果 map 上的图钉添加注释 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35683873/