iOS Swift百度地圖 新增多個標註
阿新 • • 發佈:2018-11-06
搞了一天終於把新增多個標註做出來了,又深刻的反應了寫程式碼一味的copy,不知其所以然的後果太嚴重,一點錯誤找個大半天,好了,不過多bb,說說新增多個標註要注意的一些東西吧。
首先,新增大頭針的方法要實現在_mapview.delegate = self 之後,否則過早添加了大頭針,並不會去呼叫BMKMapViewDelegate的代理方法去重新整理mapview
第二,新增大頭針方法中,BMKPointAnnotation的初始化必須放在迴圈內,否則pointAnnotation雖然會被新增三次,但這三個pointAnnotation都是同一個物件,最後繪製出的大頭針也只會有一個
最後,BMKMapViewDelegate繪製view
首先,新增大頭針的方法要實現在_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 } }