Откройте приложение Apple Maps с определенной информацией MKRoute.

Я пытаюсь отобразить все возможные маршруты между точками A и B в моем приложении Swift (цель iOS 8+). Я разрешаю пользователю выбирать любой из возможных маршрутов в моем приложении. Затем я хотел бы, чтобы пользователь мог перемещаться по выбранному маршруту (MKRoute) в приложении Apple Maps, используя

var fullRouteResponse:MKDirectionsResponse? //This variable has MKRoute information

@IBAction func openInAppleMaps(sender: AnyObject)
{
    let placemark = MKPlacemark(coordinate: destinationCoordinate!, addressDictionary: nil)

    mapItem = MKMapItem(placemark: placemark)

    mapItem.openInMapsWithLaunchOptions(
        [MKLaunchOptionsDirectionsModeKey: MKLaunchOptionsDirectionsModeDriving,
        MKLaunchOptionsMapTypeKey: MKMapType.Standard.rawValue,
        MKLaunchOptionsShowsTrafficKey: true ])

}

Это прекрасно открывает приложение «Карты», но я не могу понять, как передать конкретную выбранную информацию MKRoute, чтобы пользователю не приходилось повторно выбирать из всех возможных маршрутов в приложении Apple Maps.

Я не уверен, что это вообще возможно, поэтому любые указатели действительно помогут. Спасибо!


person sh4k    schedule 19.06.2015    source источник


Ответы (2)


В документации не сказано, что можно пройти предварительно настроенный путь к родному приложению Карт. Поэтому невозможно делать то, что вы хотите.

Если здесь есть недокументированный способ добиться этого, я хотел бы знать.

person Ramis    schedule 18.03.2016
comment
Хотя это не тот ответ, который я хотел, он правильный;) - person arnoapp; 25.03.2016

Да, вы можете сделать это с помощью MapLink:

Согласно документации MapLink, вы легко можете заполнить параметры «saddr» и «daddr». Нравится:

if (UIApplication.sharedApplication().canOpenURL(NSURL(string:"http://maps.apple.com")!)) {
      UIApplication.sharedApplication().openURL(NSURL(string:
        "http://maps.apple.com:/?saddr=\(YOUR_SOURCE_LATITUDE),\(YOUR_SOURCE_LONGITUDE)&daddr=\(YOUR_DESTINATION_LATITUDE),\(YOUR_DESTINATION_LONGITUDE)&dirflg=d")!)

    }
person Allan Scofield    schedule 21.03.2016
comment
Это не позволяет вам открыть конкретный маршрут, а просто добавляет два местоположения. - person arnoapp; 21.03.2016