【python实战】批量获得路径规划——高德地图API

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了【python实战】批量获得路径规划——高德地图API相关的知识,希望对你有一定的参考价值。

参考技术A

【python实战】 批量获取经纬度-高德地图API

在上篇中,已经批量获得了经纬度信息,现在需要根据经纬度来进行路径规划,想知道两点之间的距离和路程、花费等信息。

这时候就需要用到高德地图API中的路径规划功能了。

同上篇,先构造出获得经纬度函数便于调用。

理解了上篇的请求参数,路径规划就很好理解了。文档中也有详细解释, 路径规划 中包括步行、公交、驾车、骑行、货车路径规划以及距离测量。

这里以公交路径规划为例。

根据必填项: 自己申请到的Key,起终点的经纬度以及城市 ,就可以返回相关的字段信息。

根据返回结果参数,可以提取很多关于路径规划的信息,这里以 起终点步行距离,路线出租车费用,路线时间,路线费用,路线距离 为例。

在主函数中设定起点和终点,并调用返回信息函数,就能得到每个起点到每个终点的 步行距离,路线出租车费用,路线时间,路线费用,路线距离 信息了。

结果以列表的形式返回,结果如图。

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
      }
      

以上是关于【python实战】批量获得路径规划——高德地图API的主要内容,如果未能解决你的问题,请参考以下文章

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

用高德地图做的驾车路径规划及在上面显示实时运行情况

百度地图-路径规划

时时获得高德地图坐标 http://lbs.amap.com/console/show/picker

高德地图怎样规划路线

高德 API+Python 解决租房问题