1. 程式人生 > >iOS Swift百度地圖 新增多個標註

iOS Swift百度地圖 新增多個標註

搞了一天終於把新增多個標註做出來了,又深刻的反應了寫程式碼一味的copy,不知其所以然的後果太嚴重,一點錯誤找個大半天,好了,不過多bb,說說新增多個標註要注意的一些東西吧。
首先,新增大頭針的方法要實現在_mapview.delegate = self 之後,否則過早添加了大頭針,並不會去呼叫BMKMapViewDelegate的代理方法去重新整理mapview
第二,新增大頭針方法中,BMKPointAnnotation的初始化必須放在迴圈內,否則pointAnnotation雖然會被新增三次,但這三個pointAnnotation都是同一個物件,最後繪製出的大頭針也只會有一個
//    新增大頭針
    func addPointAnnotation() {
        if(pointAnnotation == nil) {
            
            let ary1:NSArray = ["31.222771","39.915 ","31.229003"]
            let ary2:NSArray = ["121.490317","116.404","121.448224"]
            
            var coor: CLLocationCoordinate2D = CLLocationCoordinate2D.init()
            
            for(var i=0;i<ary1.count;i++) {
            
            pointAnnotation = BMKPointAnnotation.init() //必須放在迴圈裡初始化
            coor.latitude  = ary1[i].doubleValue
            coor.longitude = ary2[i].doubleValue
            
            pointAnnotation.coordinate = coor
            pointAnnotation.title = "哈嘍"
                
            _mapview.addAnnotation(pointAnnotation)
        
            }
        }
    }



最後,BMKMapViewDelegate繪製view

// 根據anntation生成對應的View
    func mapView(mapView: BMKMapView!, viewForAnnotation annotation: BMKAnnotation!) -> BMKAnnotationView! {
        
//        //annotation
        let annotationViewID = "renameMark"
        var annotationView:BMKPinAnnotationView? = _mapview.dequeueReusableAnnotationViewWithIdentifier(annotationViewID) as? BMKPinAnnotationView
        
        if(annotationView == nil){
            
            annotationView = BMKPinAnnotationView.init(annotation:annotation, reuseIdentifier:annotationViewID)
        }
        
        //設定顏色
//            annotationView?.pinColor = BMKPinAnnotationColorPurple
        //從天上掉下來效果
        annotationView!.animatesDrop = true
        //設定不可拖拽
        annotationView!.draggable = false
        annotationView!.image = UIImage(named:"sina")
        return annotationView
        }

}