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-高德地图路线规划开发记录的主要内容,如果未能解决你的问题,请参考以下文章

iOS-高德地图路线规划开发记录

iOS高德地图使用-搜索,路径规划

高德地图怎样规划路线

Flutter 调用高德地图APP实现位置搜索路线规划逆地理编码

Flutter 调用高德地图APP实现位置搜索路线规划逆地理编码

高德地图怎样自已规划驾车线路?