最近项目有路线规划需求,以及可以添加1-3个途径地,先上个图.
有点粗糙,还没有仔细调整.
首先自己定义两个经纬度,一个是始发地经纬度和目的地经纬度.
let arr =starCoordinates?.components(separatedBy:",")
let endArr =endCoordinates?.components(separatedBy:",")
把分割好的经纬度转换成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
设置起点
navi.origin=AMapGeoPoint.location(withLatitude:CGFloat(locat.latitude), longitude:CGFloat(locat.longitude))
设置终点
navi.destination=AMapGeoPoint.location(withLatitude:CGFloat(endLocation.latitude), longitude:CGFloat(endLocation.longitude))
//开始规划路径
search.aMapDrivingRouteSearch(navi)
starCoordinates和endCoordinates 是上个界面传入的经纬度
以上就是设置好了驾车导航的始发地和目的地
设置好了过后,有个驾车回调的协议方法,在里面解析出来起点到终点的所有路过经纬度线段,来画出来.
funconRouteSearchDone(_request:AMapRouteSearchBaseRequest!, response:AMapRouteSearchResponse!) 驾车回调路线方法
把解析好的所有中途路过的线段坐标放入到 MAPolyline里面,开始画线.实现画线协议方法
路线颜色大小之类的调整.高德API有说明.
以上就是 起点到终点的画线就完成了. 需要注意的是,在解析 起点到终点的 中途经过的坐标点的时候,你要遍历出来所有的路线,然后分割好,因为返回的 一段经纬度它是以 ; 来区分的,所以要分割一下,然后遍历你分割出来的 那个数组, 存入到 要放到 MAPolyline 里面的数组,代码都有写
接下来添加途经地. 可以添加一个 或者 二 三个 途经地
驾车导航类AMapDrivingRouteSearchRequest有提供添加途经地的接口
上代码
其他两个途经地都是类似 途经地坐标也是由上个界面传进来的 coordiateAry数组
添加大头针就很简单了. 实现大头针协议方法.
我是根据大头针的title来区分 不同的图片的.
写的不好,大牛勿喷.