swift - 使用系统app导航

本文介绍了一个使用Swift在iOS应用中实现从广州到上海导航的方法。通过导入UIKit和MapKit框架,利用CLGeocoder进行地址解析获取坐标,再通过MKPlacemark和MKMapItem设置起点和终点,最后调用MKMapItem的openMaps方法实现导航。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 

import UIKit

//1.导入框架
import MapKit

class ViewController: UIViewController {
    lazy var geoCoder : CLGeocoder = {
        return CLGeocoder()
    }()

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {

        geoCoder.geocodeAddressString("广州") { (pls, err) in
            //广州坐标
            guard let gzPL = pls?.first else{
                return
            }
            
            self.geoCoder.geocodeAddressString("上海", completionHandler: { (pls, err) in
                //上海坐标
                if let shPL = pls?.first{
                    self.beginNav(startPLCL: gzPL, endPLCL: shPL)
                }
            })
        }
    }
}

// MARK: - 导航起点和终点
extension ViewController{
    func beginNav(startPLCL: CLPlacemark, endPLCL: CLPlacemark) {
        
        // 起点
        let plMK: MKPlacemark = MKPlacemark(placemark: startPLCL)
        let startItem: MKMapItem = MKMapItem(placemark: plMK)
        
        // 终点
        let endplMK: MKPlacemark = MKPlacemark(placemark: endPLCL)
        let endItem: MKMapItem = MKMapItem(placemark: endplMK)
        
        // 起点和终点
        let mapItems: [MKMapItem] = [startItem, endItem]
        
        // 导航设置字典
        let dic: [String : Any] = [
            // 导航模式
            MKLaunchOptionsDirectionsModeKey: MKLaunchOptionsDirectionsModeDriving,
            // 地图样式
            MKLaunchOptionsMapTypeKey: MKMapType.standard.rawValue,
            // 显示交通
            MKLaunchOptionsShowsTrafficKey: true
        ]
        MKMapItem.openMaps(with: mapItems, launchOptions: dic)
    }
}

  



 

转载于:https://www.cnblogs.com/qingzZ/p/10112841.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值