我使用的是從這裏https://github.com/ribl/FBAnnotationClusteringSwift如何在swift中使用標記聚類的同時在我的蘋果地圖上的引腳添加註釋視圖?
採取一個簡單的標記集羣和我見負責把地圖上的任一組或一針這部分代碼:
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
}
}
它正常工作,我看到羣或單引腳,但現在我想添加一個彈出的每一個引腳,用戶按下,類似這裏介紹:
我發現這個screensh加時賽這裏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
的代碼將被忽略,可能是休息了。
我在這裏錯過了什麼?