移动端地图导航路径规划文档

路线规划:
高德地图
tip:sourceApplication字段必须经过编码

链接: 文档地址.

百度地图
链接: 文档地址.

腾讯地图
链接: 文档地址.

iOS Demo

/// 打开地图步行导航
    public static func openMap(desPoint:String) {
        
        var mapArray: [String] = ["苹果地图"]
        if UIApplication.shared.canOpenURL(URL(string: "iosamap://")!) {
            mapArray.append("高德地图")
        }
        if UIApplication.shared.canOpenURL(URL(string: "baidumap://")!){
            mapArray.append("百度地图")
        }
        if UIApplication.shared.canOpenURL(URL(string: "qqmap://")!) {
            mapArray.append("腾讯地图")
        }
        
        /// 打开地图
        let alert = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet)
        
        for (index, item) in mapArray.enumerated() {
            alert.addAction(UIAlertAction(title: item, style: .default, handler: {(aleraction) in
                goMapAction(type: index, des: desPoint)
            }))
        }
        alert.addAction(UIAlertAction(title: "取消", style: .cancel, handler: nil))
        UIApplication.shared.keyWindow?.rootViewController?.present(alert, animated: true, completion: nil)
    }
    /// 跳到地图界面 进行步行导航 type : 0 :苹果 1 是 高德 2 是百度
    static func goMapAction(type:NSInteger, des: String) {
        
        // 获取我的位置
        guard let mylocation = UserDefaults.getMyLocation() else {
            // 要不要提示我的位置问题
            return
        }
        // 解析目的地
        do {
            let desLocation = try pumpkinDecoder(jsonstr: des, modelType: GPSPoint.self)
            
            let lat = mylocation.latitude
            let lng = mylocation.longitude
            let endlat = desLocation.latitude
            let endLng = desLocation.longitude
            switch type {
            case 0:
                let currentLocation:MKMapItem = MKMapItem(placemark: MKPlacemark(coordinate: CLLocationCoordinate2D(latitude: Double(lat)!, longitude: Double(lng)!), addressDictionary: nil))
                
                let toLocation:MKMapItem = MKMapItem(placemark: MKPlacemark(coordinate: CLLocationCoordinate2D(latitude: Double(endlat)!, longitude: Double(endLng)!), addressDictionary: nil))
                MKMapItem.openMaps(with: [currentLocation,toLocation], launchOptions: [MKLaunchOptionsDirectionsModeKey:MKLaunchOptionsDirectionsModeDefault])
            case 1:
                let manager = ConfigManager.share()
                let applicationName = manager.getProduceName()
                if let iosmapUrl = URL(string: "iosamap://path?sourceApplication=\(applicationName)&sid=&slat=\(lat)&slon=\(lng)&sname=&did=&dlat=\(endlat)&dlon=\(endLng)&dname=&dev=0&t=2".initPercent()) {
                    UIApplication.shared.open(iosmapUrl, options: [:], completionHandler: nil)
                }
            case 2:
                //APP Url Scheme  框架   例如:[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"mqq://"]];  直接打开qq
                UIApplication.shared.open(URL(string: "baidumap://map/direction?origin=\(lat),\(lng)&destination=\(endlat),\(endLng)&mode=walking&coord_type=gcj02")!, options: [:], completionHandler: nil)
            case 3:
                //
                let urlStr = "qqmap://map/routeplan?type=walk&fromcoord=\(lat),\(lng)&tocoord=\(endlat),\(endLng)&policy=1"
                UIApplication.shared.open(URL(string: urlStr)!, options: [:], completionHandler: nil)
            default:
                break
            }
        } catch {}
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值