最近項目有路線規(guī)劃需求,以及可以添加1-3個途徑地,先上個圖.
有點粗糙,還沒有仔細調(diào)整.
首先自己定義兩個經(jīng)緯度,一個是始發(fā)地經(jīng)緯度和目的地經(jīng)緯度.
let arr =starCoordinates?.components(separatedBy:",")
let endArr =endCoordinates?.components(separatedBy:",")
把分割好的經(jīng)緯度轉(zhuǎn)換成CLLocationCoordinate2D坐標
let locat =CLLocationCoordinate2D.init(latitude:Double(arr![0])!, longitude:Double(arr![1])!)
let endLocation =CLLocationCoordinate2D.init(latitude:Double(endArr![0])!, longitude:Double(endArr![1])!)
self.mapViewGD.setCenter(locat, animated:true)
mapViewGD.zoomLevel=12
let navi =AMapDrivingRouteSearchRequest.init()
navi.requireExtension=true
navi.strategy=2
設(shè)置起點
navi.origin=AMapGeoPoint.location(withLatitude:CGFloat(locat.latitude), longitude:CGFloat(locat.longitude))
設(shè)置終點
navi.destination=AMapGeoPoint.location(withLatitude:CGFloat(endLocation.latitude), longitude:CGFloat(endLocation.longitude))
//開始規(guī)劃路徑
search.aMapDrivingRouteSearch(navi)
starCoordinates和endCoordinates 是上個界面?zhèn)魅氲慕?jīng)緯度
以上就是設(shè)置好了駕車導(dǎo)航的始發(fā)地和目的地
設(shè)置好了過后,有個駕車回調(diào)的協(xié)議方法,在里面解析出來起點到終點的所有路過經(jīng)緯度線段,來畫出來.
funconRouteSearchDone(_request:AMapRouteSearchBaseRequest!, response:AMapRouteSearchResponse!) 駕車回調(diào)路線方法
把解析好的所有中途路過的線段坐標放入到 MAPolyline里面,開始畫線.實現(xiàn)畫線協(xié)議方法
路線顏色大小之類的調(diào)整.高德API有說明.
以上就是 起點到終點的畫線就完成了. 需要注意的是,在解析 起點到終點的 中途經(jīng)過的坐標點的時候,你要遍歷出來所有的路線,然后分割好,因為返回的 一段經(jīng)緯度它是以 ; 來區(qū)分的,所以要分割一下,然后遍歷你分割出來的 那個數(shù)組, 存入到 要放到 MAPolyline 里面的數(shù)組,代碼都有寫
接下來添加途經(jīng)地. 可以添加一個 或者 二 ?三個 途經(jīng)地
駕車導(dǎo)航類AMapDrivingRouteSearchRequest有提供添加途經(jīng)地的接口
上代碼
其他兩個途經(jīng)地都是類似 途經(jīng)地坐標也是由上個界面?zhèn)鬟M來的 coordiateAry數(shù)組
添加大頭針就很簡單了. 實現(xiàn)大頭針協(xié)議方法.?
我是根據(jù)大頭針的title來區(qū)分 不同的圖片的.
寫的不好,大牛勿噴.