iOS-高德地图路线规划开发记录
Posted iOS_developer_zhong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS-高德地图路线规划开发记录相关的知识,希望对你有一定的参考价值。
1. 骑行路径规划调用
// 获取当前位置作为起点
let beginLocation = FCMapShareTool.shared._userLocationCoordinate2D
let request = AMapRidingRouteSearchRequest.init()
// 路径起始点
request.origin = AMapGeoPoint.location(withLatitude: CGFloat(beginLocation?.latitude ?? 0.00 ), longitude: CGFloat(beginLocation?.longitude ?? 0.00))
// 路径终点
request.destination = AMapGeoPoint.location(withLatitude: CGFloat(location.latitude ), longitude: CGFloat(location.longitude))
// 调用高德地图API
self._searchMap?.aMapRidingRouteSearch(request)
2. 线路绘制到地图详细代码
// 路径规划线路渲染到地图上的详细步骤
// 1. 需要把字符串加工成经纬度
// 2. 把转换好的经纬度装进数组
// 3. 移除以前的线路
// 4. 生成新的线路
// 5. 把新的线路添加到地图上。
// 6. 线路渲染,看下面详细步骤
func onRouteSearchDone(_ request: AMapRouteSearchBaseRequest!, response: AMapRouteSearchResponse!) {
if response.route.paths.count > 0 {
// 取出第一种路线方案
let path = response.route.paths[0]
var corArray = [CLLocationCoordinate2D]()
// 将每段线路中的路径经纬度全部载入corArray中。
for (_,step) in path.steps.enumerated() {
let lineArray = step.polyline.split(separator: ";")
for str in lineArray {
let tempCorArray = str.split(separator: ",")
if tempCorArray.count == 2 {
let tempLong = String(tempCorArray[0])
let tempLat = String(tempCorArray[1])
let cor = CLLocationCoordinate2D.init(latitude: CLLocationDegrees(CGFloat(tempLat.decimalStringToDouble() ?? 0.00)), longitude: CLLocationDegrees(CGFloat(tempLong.decimalStringToDouble() ?? 0.00)))
corArray.append(cor)
}
}
}
if var temp = corArray as? [CLLocationCoordinate2D] {
// 移除旧线路
if let tempPoly = _polyLine {
self.mapView.remove(tempPoly)
}
// 根据corArray数组组建新的线路,并添加到地图上。
let polyline = MAPolyline.init(coordinates: &temp, count: UInt(temp.count))
_polyLine = polyline
self.mapView.add(polyline)
}
}
}
3. 线路绘制
func mapView(_ mapView: MAMapView!, rendererFor overlay: MAOverlay!) -> MAOverlayRenderer! {
if let tempOver = overlay as? MAPolyline {
let polygonView = MAPolylineRenderer.init(polyline: tempOver)
// 参数设置
polygonView?.lineWidth = 8.0
polygonView?.strokeColor = UIColor.muColor(.blue)
polygonView?.fillColor = UIColor.muColor(.red)
polygonView?.lineJoinType = kMALineJoinRound
polygonView?.lineCapType = kMALineCapRound
return polygonView
}
return nil
}
以上是关于iOS-高德地图路线规划开发记录的主要内容,如果未能解决你的问题,请参考以下文章
Flutter 调用高德地图APP实现位置搜索路线规划逆地理编码