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
        }

}



猜你喜欢

转载自blog.csdn.net/crypond/article/details/50004275