swift:App打开手机内的地图App进行导航

  //选择导航类型
    @objc private func choiceMap() {
        //将User.share.coordinate的两个值改成网吧的经纬度
       
       
        
        let alert = UIAlertController.init(title: "请选择导航应用程序", message: nil, preferredStyle: .actionSheet)
        alert.addAction(UIAlertAction.init(title: "自带地图", style: .default, handler: { (action) in
            let loc = CLLocationCoordinate2DMake(User.share.coordinate!.latitude, User.share.coordinate!.longitude)
            let currentLocation = MKMapItem.forCurrentLocation()
            let toLocation = MKMapItem(placemark:MKPlacemark(coordinate:loc,addressDictionary:nil))
            toLocation.name = "网吧名字"
            MKMapItem.openMaps(with: [currentLocation,toLocation], launchOptions: [MKLaunchOptionsDirectionsModeKey: MKLaunchOptionsDirectionsModeDriving,MKLaunchOptionsShowsTrafficKey: "true"])
        }))
        alert.addAction(UIAlertAction.init(title: "高德地图", style: .default, handler: {[weak self] (action) in
 
            guard let strongSelf = self else {
                return
            }
            let urlString = "iosamap://navi?sourceApplication=导航功能&backScheme=djlsj&lat=\(User.share.coordinate!.latitude)&lon=\(User.share.coordinate!.longitude)&dev=0&style=2" as NSString
            if strongSelf.openMap(urlString) == false {
                strongSelf.showTipMessage("您还没有安装高德地图")
            }
        }))
        alert.addAction(UIAlertAction.init(title: "百度地图", style: .default, handler: {[weak self] (action) in
            guard let strongSelf = self else {
                return
            }
            
            let urlString = "baidumap://map/direction?origin={{我的位置}}&destination=latlng:\(User.share.coordinate!.latitude),\(User.share.coordinate!.longitude)|name=中国&mode=walking&coord_type=gcj02" as NSString
            if strongSelf.openMap(urlString) == false {
                strongSelf.showTipMessage("您还没有安装百度地图")
            }

        }))
        alert.addAction(UIAlertAction.init(title: "取消", style: .cancel, handler: { (action) in

        }))
        present(alert, animated: true, completion: nil)
    }
    
    private func openMap(_ urlString: NSString) -> Bool {
        let url = NSURL(string:urlString.addingPercentEscapes(using: String.Encoding.utf8.rawValue)!)
        
        if UIApplication.shared.canOpenURL(url! as URL) == true {
            
            UIApplication.shared.openURL(url! as URL)
            return true
        } else {
            printLog(message: "无法打开")
            return false
        }
    }

ps:需要info.plist中添加报名单baidumao和iosamap




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值