Поиск адреса с помощью SWIFT

В моем приложении мне нужно, чтобы пользователь вводил свой домашний адрес, но я не могу получить способ, чтобы отображаемые адреса были только в области пользователей и были полными адресами, такими как 225e 57th st, NY, New York .

Я хочу предоставить пользователю все перечисленные параметры в представлении таблицы и отфильтровать их, когда пользователь вводит свой адрес.

Вы можете определить локальный поиск :

 let completer = MKLocalSearchCompleter() 

А затем поставьте фрагмент запроса:

 completer.delegate = self completer.region = MKCoordinateRegionMakeWithDistance(currentCoordinate, 10_000, 10_000) completer.queryFragment = "300 S Orange" 

И реализовать протокол MKLocalSearchCompleterDelegate

 extension ViewController: MKLocalSearchCompleterDelegate { func completerDidUpdateResults(_ completer: MKLocalSearchCompleter) { let addresses = completer.results.map { result in result.title + ", " + result.subtitle } // use addresses, eg update model and call `tableView.reloadData() } } 

И это дает:

 ["300 S Orange Grove Blvd, Пасадена, Калифорния, США",
  «300 S Orange Ave, Монтерей Парк, Калифорния, США»,
  «300 S Orange St, Глендейл, Калифорния, США»,
  «300 S Orange Dr, Лос-Анджелес, Калифорния, США»,
  «300 S Orange Ave, Azusa, CA, США»,
  «300 S Orange Grove Ave, Лос-Анджелес, Калифорния, США»,
  «300 S Orange Ave, Brea, CA, США»,
  «300 S Orange Ave, Fullerton, CA, США»,
  «300 S Orange St, Orange, CA, США»,
  «300 S Orange Ave, Риальто, Калифорния, США»,
  «300 S Orange Ave, Фоллбрук, Калифорния, США»,
  «300 S Orange St, Escondido, CA, США»,
  «300 S Orange Ave, Эль-Каджон, Калифорния, США»,
  «300 S Orange Cir, Туларе, Калифорния, США»,
  «300 S Orange Ave, Эксетер, Калифорния, США»]

Или вы можете выполнить локальный поиск:

 let request = MKLocalSearchRequest() request.region = MKCoordinateRegionMakeWithDistance(currentCoordinate, 10_000, 10_000) request.naturalLanguageQuery = "300 S Pumpkin" let search = MKLocalSearch(request: request) search.start { response, error in let addresses = response?.mapItems.map { item -> String in if let addressLines = item.placemark.addressDictionary?["FormattedAddressLines"] as? [String] { return addressLines.joined(separator: " ") } return item.name ?? "Unknown" } print(addresses) } 

Предполагая, что он находит совпадения, это показывает что-то вроде:

 ["300 S Pumpkin Blvd, Лос-Анджелес, Калифорния, 92108, США",
  «300 S Pumpkin Pkwy, Лос-Анджелес, Калифорния 92103, США»,
  «300 S Pumpkin Dr, San Gabriel, CA 91776, United States»])

Теперь, независимо от того, хотите ли вы FormattedAddressLines или извлекаете отдельные компоненты из addressDictionary , вам, но, надеюсь, это иллюстрирует идею.

  • расстояние поездки, необходимое для значительного обновления местоположения и точности заданного местоположения
  • Приложение для iPhone на основе iPhone
  • Как включить службу определения местоположения
  • Создание уведомлений на основе локального местоположения в быстром
  • Как передать широту и долготу другой функции - быстрое местоположение
  • Есть ли API для частой истории местоположений в iOS?
  • Обновление местоположения, даже когда приложение убито / завершено
  • Функция «didUpdateToLocation» вызывается без изменений
  • Как проверить, включены ли службы определения местоположения для определенного приложения в iOS 7?
  • IOS Искать список ТОЛЬКО ГОРОД / ГОСУДАРСТВ
  • как конвертировать gps на север и gps на запад до lat / long в объективе c
  • Давайте будем гением компьютера.