Как открыть направление движения Apple Maps, пропуская адрес

Я пытаюсь реализовать функцию, открывающую экран направления движения приложения Apple Map, путем передачи фактического адреса.

Адрес – это не просто случайные адреса, а бизнес-адреса, которые в основном зарегистрированы и доступны для поиска на картах Apple. Поэтому, передавая адрес, он должен быть сопоставлен и корректно показывать направление для этого бизнеса, а не указывать на неизвестную аннотацию на карте. Такой случай случается, когда я передаю долготу и широту напрямую, поэтому я не хочу использовать geocodeAddressString () для преобразования адреса в геокоординацию.

Как я могу это достичь?

Просто используйте API Apple Maps. Если вы можете найти бизнес, набрав его имя в Apple Maps, вы можете найти его через API. В вашем случае правильным параметром является daddr , например:

http://maps.apple.com/?daddr=1+Infinite+Loop,+Cupertino,+CA

Вы можете комбинировать несколько параметров, например, начальное местоположение:

http://maps.apple.com/?saddr=1024+Market+St,+San+Francisco,+CA&daddr=1+Infinite+Loop,+Cupertino,+CA

Здесь вы можете найти список поддерживаемых параметров.

Не забудьте открыть URL-адрес через UIApplication.shared().open(url: URL, options: [String: AnyObject], completionHandler: ((Bool) -> Void)?) – в iOS 10 или UIApplication.shared.open(url: URL)

Вы могли бы называть карты с помощью url (как подробно описано Nicola), но для этого также есть подходящий api: MKMapItem

  1. в основном вы создаете элементы карты для POI / адресов [1 или более]
  2. открыть Карты с ними [использовать startOptions для начала с указаний]

     func showMap() { //--- //create item 1 //address let coords = CLLocationCoordinate(coordinateField.doubleValue!,coordinateField.doubleValue!) let addressDict = [CNPostalAddressStreetKey: address.text!, CNPostalAddressCityKey: city.text!, CNPostalAddressStateKey: state.text!, CNPostalAddressPostalCodeKey: zip.text!] //item let place = MKPlacemark(coordinate: coords!, addressDictionary: addressDict) let mapItem = MKMapItem(placemark: place) //--- //create item 2 //address let coords2 = CLLocationCoordinate(coordinateField2.doubleValue!,coordinateField2.doubleValue!) let addressDict2 = [CNPostalAddressStreetKey: address2.text!, CNPostalAddressCityKey: city2.text!, CNPostalAddressStateKey: state2.text!, CNPostalAddressPostalCodeKey: zip2.text!] //item2 let place2 = MKPlacemark(coordinate: coords2!, addressDictionary: addressDict2) let mapItem2 = MKMapItem(placemark: place2) //----- //launch it let options = [MKLaunchOptionsDirectionsModeKey: MKLaunchOptionsDirectionsModeDriving] //for 1 only. mapItem.openInMaps(launchOptions: options) //for 1 or N items var mapItems = [mapItem, mapItem2] //src to destination MKMapItem.openMaps(withItems:mapItems, launchOptions: options) } 
  • Как вращать узел перпендикулярно другому узлу после контакта с физикой
  • XLFormDescriptor инициализируется заголовком в Swift
  • Почему добавление пустого метода center () приводит к сбою устройства, но не на симуляторе?
  • Неопределенные символы для архитектуры armv7: «_OBJC_CLASS _ $ _ UBSDKConfiguration», на которые ссылаются
  • Невозможно отрегулировать расстояние между элементами UICollectionView
  • UIScrollView не будет зажимать для увеличения. (Swift)
  • Каковы возможные причины перехода страницы на завихрение в конце анимации?
  • Swift - ImagePicker не выполняет делегат
  • после обновления до версии 9.3.3 iOS, перенаправить URL-адрес для запуска приложения не работает
  • Программно изменить UILabel с помощью UISlider в Swift
  • Стиль Swift Map с GMS
  • Давайте будем гением компьютера.