swift

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