Получить информацию о городе с помощью CoreLocation - PullRequest
1 голос
/ 15 октября 2019

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

@IBAction func onEditZipCodeField(_ sender: UITextField) {

    if let zipCode = self.zipCodeField.text {

        let geoCoder = CLGeocoder()
        geoCoder.geocodeAddressString(zipCode) {
            (placemarks, error) -> Void in

            if let placemark = placemarks?[0] {
                NSLog("Placemark \(placemark)")
                NSLog("administrativeArea: \(placemark.administrativeArea!)")
                NSLog("subAdministrativeArea: \(placemark.subAdministrativeArea!)")
                NSLog("locality: \(placemark.locality!)")
                NSLog("subLocality: \(placemark.subLocality!)")
                NSLog("region: \(placemark.region!)")

                if let thoroughfare = placemark.thoroughfare {
                    NSLog("thoroughfare: \(thoroughfare)")
                }

                if let subThoroughfare = placemark.subThoroughfare {
                    NSLog("subthoroughfare: \(subThoroughfare)")
                }

                if let state = placemark.administrativeArea {
                    self.stateField.text = state
                    self.stateField.isEnabled = false
                }

            }
        }

    }
}

Вот результат, если я введу 11105 в качестве почтового индекса:

2019-10-15 13:51:28.929733-0400 Tello EHR[41880:1614567] Placemark 11105, Astoria, NY  11105, United States @ <+40.77799870,-73.89392290> +/- 100.00m, region CLCircularRegion (identifier:'<+40.77819340,-73.89023345> radius 3741.17', center:<+40.77819340,-73.89023345>, radius:3741.17m)
2019-10-15 13:51:28.929904-0400 Tello EHR[41880:1614567] administrativeArea: NY
2019-10-15 13:51:28.930025-0400 Tello EHR[41880:1614567] subAdministrativeArea: Queens
2019-10-15 13:51:28.930151-0400 Tello EHR[41880:1614567] locality: New York
2019-10-15 13:51:28.930264-0400 Tello EHR[41880:1614567] subLocality: Queens
2019-10-15 13:51:28.930373-0400 Tello EHR[41880:1614567] region: CLCircularRegion (identifier:'<+40.77819340,-73.89023345> radius 3741.17', center:<+40.77819340,-73.89023345>, radius:3741.17m)

Как видите, в объекте метки места есть информация о городе Астория. Однако метка вернула «Нью-Йорк» и «Квинс», когда я попытался получить доступ к методу метки (местность, подобласть).

Кто-нибудь здесь знает, что я должен получить доступ к объекту метки, чтобы он мог вернуть значениеAstoria?

Спасибо.

...