IOS-高德地图路径绘制-Swift

这篇具有很好参考价值的文章主要介绍了IOS-高德地图路径绘制-Swift。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文展示的是在IOS开发中调用高德地图进行驾车路径绘制,开发语言是Swift。
IOS高德地图集成请看:IOS集成高德地图Api
使用路径规划功能需要集成高德地图的搜索功能。

pod 'AMapSearch'

定义AMapSearchAPI

定义主搜索对象 AMapSearchAPI ,并继承搜索协议。

import AMapSearchKit

var searchApi:AMapSearchAPI!

IOS-高德地图路径绘制-Swift,IOS-Swift学习,ios,swift,cocoa,高德地图

构造 AMapSearchAPI

searchApi=AMapSearchAPI()
searchApi.delegate=self
//起点终点
startCoordinate        = CLLocationCoordinate2DMake(39.910267, 116.370888)
destinationCoordinate  = CLLocationCoordinate2DMake(39.989872, 116.481956)

IOS-高德地图路径绘制-Swift,IOS-Swift学习,ios,swift,cocoa,高德地图

设置驾车线路规划参数

//请求参数类
let request=AMapDrivingCalRouteSearchRequest()
//设置起点
request.origin = AMapGeoPoint.location(withLatitude: CGFloat(startCoordinate.latitude), longitude: CGFloat(startCoordinate.longitude))
//设置终点
request.destination = AMapGeoPoint.location(withLatitude: CGFloat(destinationCoordinate.latitude), longitude: CGFloat(destinationCoordinate.longitude))
//显示字段类型
request.showFieldType = AMapDrivingRouteShowFieldType.init(rawValue: AMapDrivingRouteShowFieldType.cost.rawValue|AMapDrivingRouteShowFieldType.tmcs.rawValue|AMapDrivingRouteShowFieldType.navi.rawValue|AMapDrivingRouteShowFieldType.cities.rawValue|AMapDrivingRouteShowFieldType.polyline.rawValue)!

发起驾车路线规划

//发起驾车路线规划
searchApi.aMapDrivingV2RouteSearch(request)

在回调中处理数据

实现代理方法onRouteSearchDone

    //路径搜索结果
    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
        
        print("距离:\(distance!)米,预计耗时:\(time!)秒")
        let result = convertToArray(stringWithOptional)
        if var temp = result {
            let polyline = MAPolyline.init(coordinates: &temp, count: UInt(temp.count))
            mapView.add(polyline)
        }
    }
    //转数组
    func convertToArray(_ coordinatesString: String!) -> [CLLocationCoordinate2D]? {
        // 去掉 "Optional(" 和 ")" 前缀和后缀
        let cleanedString = coordinatesString.replacingOccurrences(of: "Optional(\"", with: "").replacingOccurrences(of: "\")", with: "")
        
        var corArray = [CLLocationCoordinate2D]()
        let coordinatesArray = cleanedString.components(separatedBy: ";")
        
        for coordinate in coordinatesArray {
            let components = coordinate.components(separatedBy: ",")
            if components.count == 2, let longitude = Double(components[0]), let latitude = Double(components[1]) {
                let cor = CLLocationCoordinate2D.init(latitude: CLLocationDegrees(CGFloat(latitude)), longitude: CLLocationDegrees(CGFloat(longitude)))
                                        
                    corArray.append(cor)
            } else {
                return nil
            }
        }
        return corArray
    }

路线绘制

arrowTexture是图片资源文件,按照官方文档的说法:纹理图片须是正方形,宽高是2的整数幂,如64*64,否则无效;若设置了纹理图片,设置线颜色、连接类型和端点类型将无效。

    //路径绘制代理
    func mapView(_ mapView: MAMapView!, rendererFor overlay: MAOverlay!) -> MAOverlayRenderer! {
        if let tempOver = overlay as? MAPolyline {
            let polygonView = MAPolylineRenderer.init(polyline: (overlay as! MAPolyline))
            // 参数设置
            polygonView?.lineWidth = 10.0
            polygonView?.strokeImage=UIImage.init(resource: ImageResource.arrowTexture)
            
          return polygonView
        }
        return nil
    }

另外,要是有箭头的话,记得要是箭头向下的,向上的话实际显示箭头会反过来,奇奇怪怪的
IOS-高德地图路径绘制-Swift,IOS-Swift学习,ios,swift,cocoa,高德地图

起点终点图标设置(可跳过)

需要实现这个代理,不设置也会有默认的大头针图标
default_common_route_startpoint_normal、default_common_route_endpoint_normal是图标资源文件

//图标设置代理
    func mapView(_ mapView: MAMapView!, viewFor annotation: MAAnnotation!) -> MAAnnotationView! {
        let pointReuseIndetifier = "pointReuseIndetifier"
        var annotationView: MAAnnotationView? = mapView.dequeueReusableAnnotationView(withIdentifier: pointReuseIndetifier)
        
        if annotationView == nil {
            annotationView = MAAnnotationView(annotation: annotation, reuseIdentifier: pointReuseIndetifier)
            annotationView!.canShowCallout = true
            annotationView!.isDraggable = false
        }
        annotationView!.image = nil
        if annotation.title == "起点" {
            annotationView!.image = UIImage(named: "default_common_route_startpoint_normal")
        }
        else if annotation.title == "终点" {
            annotationView!.image = UIImage(named: "default_common_route_endpoint_normal")
        }
        return annotationView
    }

IOS-高德地图路径绘制-Swift,IOS-Swift学习,ios,swift,cocoa,高德地图
IOS-高德地图路径绘制-Swift,IOS-Swift学习,ios,swift,cocoa,高德地图

结果

IOS-高德地图路径绘制-Swift,IOS-Swift学习,ios,swift,cocoa,高德地图文章来源地址https://www.toymoban.com/news/detail-799777.html

到了这里,关于IOS-高德地图路径绘制-Swift的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 高德地图绘制 GPX 数据路线

    重要! 高德地图 js api 文档: https://lbs.amap.com/api/javascript-api-v2/documentation 你所有需要知道的关于 AMap 的所有对象,及其属性、方法、事件都在这里面写明白了。 .gpx 文件是在分享地图路径时最常用的一种数据格式。里面包含了路径点的相关信息,每个点还有可能拥有自己的时

    2024年01月19日
    浏览(30)
  • IOS快捷指令-高德地图一键回家

    使用Siri打开高德地图,开车导航回家 iosamap://path?sourceApplication=applicationNamesid=did=dlat=xxxdlon=xxxdname=xxxdev=0 dame参数:目的地,如:北京市东城区天安门广场 dlat参数:纬度,如39.90966 dlon参数:经度,如116.40418 目的地的经纬度可以百度查询到 EZ,可以直接呼唤Siri来回家了( ̄︶

    2024年02月10日
    浏览(43)
  • 高德地图自定义绘制园区区域,区域描边,并添加自定义内容maker标注

    绘制自定义区域第一步需要获取指定区域的边界坐标点list,可以在高德地图官网的工具中获取 高德选点工具,拿到区域边界点list后就是绘制,区域绘制有几种方式,具体可查看高德的API,大体可用Wall和Prism两种方式,区别是wall没有区域填充颜色,Prism可以填充,所以我选择

    2024年02月12日
    浏览(35)
  • 基于微信小程序Map标签及高德地图开源方法实现路径导航

            微信小程序自带地图map标签,他是基于canvas画图功能进行的地图渲染,同时依赖微信的getlocation获取经纬度,绘制周边地图。地图上可以标点,画线,查看当地地理信息。但是自带的导航功能模块不能对个人开发者公开。         高德地图提供了基于微信小程

    2024年02月09日
    浏览(34)
  • 【微信小程序】微信小程序集成高德卫星地图完成多边形绘制与截图保存

    目录 功能需求 使用的技术点 注意点 实现步骤 代码 微信小程序-地图所在的wxml 微信小程序-地图所在的js 微信小程序-展示截图结果的wxml 微信小程序-展示截图结果的js H5-地图所在的html 完成效果  参考文档 感谢阅读,欢迎讨论 打开页面展示卫星地图,用户自行在地图上绘制

    2024年02月06日
    浏览(67)
  • vue 高德地图Loca.GeoJSONSource、Loca.PolygonLayer绘制3D楼房、AMap.LabelMarker文字标注、Loca.ScatterLayer绘制水波扩散效果

    假设已经正确引入了高德地图,这里使用2.0版本,注意了,1.4.x版本的使用和2.x版本的使用方式不一样。有很多地方不兼容哦。 话说3D效果这一块,高德是真比不上百度地图哦,要不是项目一直用的高德地图,怕影响数据,就真想换百度地图了。百度地图有很多地方,地级市

    2024年04月25日
    浏览(23)
  • H5页面在ios的浏览器上使用 高德地图 报当前定位失败Geolocation permission denied 或者 偶尔报AMap没有找到的

       可以去高德api查看:常见问题 | 高德地图API (amap.com)   图中红圈2,3,4,5,6对应Geolocation permission denied报错的原因,可对应修改。 如红圈2:用户打开定位选项即可:   1.在index.html文件中; 2.在封装高德api的文件下对应调整:  

    2024年02月12日
    浏览(36)
  • IOS-闭包学习-Swift

    闭包是自包含的函数代码块,可以在代码中被传递和使用。Swift 中的闭包与 C 和 Objective-C 中的代码块(blocks)以及其他一些编程语言中的匿名函数(Lambdas)比较相似。 闭包可以捕获和存储其所在上下文中任意常量和变量的引用。被称为包裹常量和变量。 Swift 会为你管理在捕

    2024年01月24日
    浏览(33)
  • 【学习记录】使用高德地图API开发一个简单基础的WebGIS系统(GIS考研院校专题地图网站)

    本人只是一个普普通通的 GIS 学生, 下面是记录我的写的一个作业 demo 的内容, 可能会存在一定的错误, 欢迎在评论区私信交流! *完整功能展示看这里 (B站) *感兴趣可以下载完整 demo 看看 (阿里云盘) 本网站(GIS考研院校可视化专题网站)为2022年GIS考研初期准备择校的学生服务

    2024年02月13日
    浏览(59)
  • ios客户端学习笔记(三):学习Swift的设计模式

    设计模式是指在软件开发中常用的一些解决问题的方法和思想,它可以帮助你更好地组织代码和提高代码的可维护性。你需要学习常见的设计模式,如MVC、MVVM、单例模式、工厂模式等,在开发应用程序时应用它们。 当你学习常见的设计模式时,可以参考以下设计模式的定义

    2023年04月22日
    浏览(22)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包