geocodePostalAddress - получить адрес из почтового индекса - PullRequest
0 голосов
/ 06 ноября 2019

Я пытаюсь получить адрес из почтового индекса, но я получаю сообщение об ошибке и никаких меток. Кажется, устройство не может найти местоположение. Почему это так?

Язык не имеет значения, я пробовал с и без, и результат один и тот же.

let geocoder = CLGeocoder()

let postalAddress = CNMutablePostalAddress()
postalAddress.postalCode = zipCode

geocoder.geocodePostalAddress(postalAddress, preferredLocale: Locale(identifier: "en_US")) { (placemarks, err) in
        if let placemark = placemarks?[0] {
            completionHandler(placemark)
            return
        }
        completionHandler(nil)
}
err = (Error?)  domain: "kCLErrorDomain" - code: 8

Ответы [ 2 ]

0 голосов
/ 07 ноября 2019

CLGeocoder также работает для меня, но если он не работает для вас, попробуйте эту площадку MKLocalSearch вместо:

import UIKit
import MapKit

let searchRequest = MKLocalSearch.Request()
searchRequest.naturalLanguageQuery = "93023"
let search = MKLocalSearch(request: searchRequest)
search.start { response, error in
    guard let response = response else {
        print(error?.localizedDescription ?? "This should be impossible")
        return
    }
  print(response.mapItems.first?.placemark.title ?? "No Placemarks")
}

вывод:

Ojai, CA  93023, United States
0 голосов
/ 06 ноября 2019

Я предполагаю, что что-то не так с вашей процедурой тестирования или вашим устройством, потому что я не могу воспроизвести проблему. У меня нет обработчика завершения, поэтому я изменил код так:

    let geocoder = CLGeocoder()
    let postalAddress = CNMutablePostalAddress()
    postalAddress.postalCode = "93023"
    geocoder.geocodePostalAddress(postalAddress, preferredLocale: Locale(identifier: "en_US")) { (placemarks, err) in
            if let placemark = placemarks?[0] {
                print(placemark)
                return
            }
            print(err)
    }

Я получил

93023, Ojai, CA  93023, United States...

, что правильно. Может быть, вы били геокодер, чтобы вас задохнули? Или, может быть, на вашем устройстве есть плохие настройки? Или это может быть что-то более тонкое.

...