如何在使用MapLinks时阻止Safari启动?

时间:2017-06-22 13:20:23

标签: ios swift safari mkmapview

我正在使用以下代码从我的项目中启动地图:

@IBAction func navigate(){

        let mapLinksSchemeURL = URL(string: "http://maps.apple.com/?daddr=\(latitude),\(longitude)&t=s&dirflg=d")

        UIApplication.shared.open(mapLinksSchemeURL!, options: [:], completionHandler: nil)
    }

此代码首先启动Safari,然后继续启动Maps。这并不是特别精致。有没有办法跳过Safari并直接进入地图?

1 个答案:

答案 0 :(得分:2)

你有一个URL,这就是为什么它在识别类型之前进入Safari并转到Apple Maps。

请使用以下代码直接转到Apple地图:

let regionDistance:CLLocationDistance = 10000
let coordinates = CLLocationCoordinate2DMake(latitude, longitude)
let regionSpan = MKCoordinateRegionMakeWithDistance(coordinates, regionDistance, regionDistance)
let options = [
    MKLaunchOptionsMapCenterKey: NSValue(mkCoordinate: regionSpan.center),
    MKLaunchOptionsMapSpanKey: NSValue(mkCoordinateSpan: regionSpan.span)
]
let placemark = MKPlacemark(coordinate: coordinates, addressDictionary: nil)

let mapItem = MKMapItem(placemark: placemark)
mapItem.name = "Start"
mapItem.openInMaps(launchOptions: options)