搞了一天终于把添加多个标注做出来了,又深刻的反应了写代码一味的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
}
}