IOS-高德地图路径绘制显示交通状况-Swift

news/2024/7/20 21:53:22 标签: ios, swift, 开发语言, 高德地图, 路径规划

本文基于:高德地图路径绘制进行了路径绘制的优化,添加了根据交通信息(是否拥堵)来显示路况,效果如图:
在这里插入图片描述

图标资源:

custtexture_bad
在这里插入图片描述
custtexture_green
在这里插入图片描述
custtexture_slow
在这里插入图片描述
custtexture_serious
在这里插入图片描述

设置覆盖物

swift">    //路径搜索结果
    func onRouteSearchDone(_ request: AMapRouteSearchBaseRequest!, response: AMapRouteSearchResponse!) {

        // 取出第一种路线方案
        let stringWithOptional = response.route.paths.first?.polyline!
        let distance=response.route.paths.first?.distance
        let time=response.route.paths.first?.duration
        let steps=response.route.paths.first?.steps
        //遍历导航路段 AMapStep 数组
        for step in steps! {
            //遍历路况信息数组
            for tmcs in step.tmcs{
                let result = convertToArray(step.polyline)
                if var temp = result {
                    let polyline = MAPolyline.init(coordinates: &temp, count: UInt(temp.count))
                    //设置路况状态描述为标题:0 未知,1 畅通,2 缓行,3 拥堵,4 严重拥堵
                    polyline?.title=tmcs.status
                    mapView.add(polyline)
                    overlays.append(polyline!)
                }
            }
        }
        //添加动画效果
        mapView.showOverlays(overlays, edgePadding: UIEdgeInsets(top: 20, left: 20, bottom: 20, right: 20), animated: true)
        print("距离:\(distance!)米,预计耗时:\(time!)秒")
    }

设置图标资源

swift">    //路径绘制代理
    func mapView(_ mapView: MAMapView!, rendererFor overlay: MAOverlay!) -> MAOverlayRenderer! {
        if overlay is MAPolyline {
            let polygonView = MAPolylineRenderer.init(polyline: (overlay as! MAPolyline))
            // 参数设置
            let title=overlay.title
            polygonView?.lineWidth = 20.0
            switch title {
            case "缓行":
                polygonView?.strokeImage=UIImage.init(resource: ImageResource.custtextureSlow)
                break
            case "拥堵":
                polygonView?.strokeImage=UIImage.init(resource: ImageResource.custtextureBad)
                break
            case "严重拥堵":
                polygonView?.strokeImage=UIImage.init(resource: ImageResource.custtextureSerious)
                break
            default://缓行、畅通
                polygonView?.strokeImage=UIImage.init(resource: ImageResource.custtextureGreen)
            }
          return polygonView
        }
        return nil
    }

http://www.niftyadmin.cn/n/5332771.html

相关文章

Windows无法格式化U盘怎么办?

U盘通常用于保存数据。有时,您可能需要格式化以擦除硬盘或修复错误等。通常,格式化过程可以通过Windows文件资源管理器、磁盘管理或Diskpart命令顺利进行,但有时会遇到Windows无法格式化U盘的情况。那么,Windows无法格式化U盘怎么…

【印象深刻的实战经历】两次全国大学生数学建模经历分享

目录 🌼初次接触 初次参加培训 分享培训所得 比赛开始 🔥再次接触 参加校赛 机缘巧合 再次培训 比赛开始 📕技巧总结 从问题的实际意义分析大体上可分为 从问题的解决方法上分析 做国赛题目的步骤 赛前准备 选题 寻找思路…

烟感监控的这个新技术,请查收!

随着城市化和科技进步的推动,建筑和工业领域的发展也带来了更加复杂的安全挑战。在这个背景下,火灾作为一种极具破坏性的灾害,对人们的生命和财产安全构成了严重威胁。 因此,为了更好地预防和应对火灾,烟感监控系统作为…

创建React步骤

确保电脑已经安装了node.js以后,打开终端进入目标文件夹 cd xxx(文件夹 npx create-react-app react01(替换为你自己的react名称) 可能会出现是否安装xxx,输入y即可 没有报错信息后,输入 cd react01 npm start 会自动跳转到react界面,就…

LabVIEW图像识别检测机械零件故障

项目背景: 在工业生产中,零件尺寸的准确检测对保证产品质量至关重要。传统的人工测量方法不仅耗时费力,精度低,还容易导致零件的接触磨损。为了解决这些问题,开发了一套基于LabVIEW和机器视觉的机械零件检测系统。该系…

每日一题——LeetCode1266.访问所有点的最小时间

方法一 个人方法 找规律: 当前的点为current,下一个点为next,x为两点横坐标之间距离,y为两点竖坐标之间距离 1、当两点横坐标相同时,两点距离为y 2、当两点竖坐标相同时,两点距离为x 3、当两点x与y相同…

排序算法10----堆排序(C)

堆排序是借用数据结构堆来进行排序的一种算法&#xff0c;所以要想弄明白堆排序&#xff0c;首先要弄明白堆。 首先我们先回顾一下堆&#xff1a; 大堆&#xff1a;头大尾小&#xff0c;父结点 > 子结点 小堆&#xff1a;头小尾大&#xff0c;父结点 < 子结点 堆排序就是…

Java-NIO篇章(2)——Buffer缓冲区详解

Buffer类简介 Buffer类是一个抽象类&#xff0c;对应于Java的主要数据类型&#xff0c;在NIO中有8种缓冲区类&#xff0c;分别如下&#xff1a; ByteBuffer、 CharBuffer、 DoubleBuffer、 FloatBuffer、 IntBuffer、 LongBuffer、 ShortBuffer、MappedByteBuffer。 本文以它的…