geocodePostalAddress - 从邮政编码获取地址
Posted
技术标签:
【中文标题】geocodePostalAddress - 从邮政编码获取地址【英文标题】:geocodePostalAddress - get Address from zip code 【发布时间】:2019-11-06 19:10:52 【问题描述】:我正在尝试从邮政编码中获取地址,但我收到了错误并且没有地标。设备似乎找不到该位置。这是为什么呢?
语言环境无所谓,有无我都试过了,结果都是一样的。
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
【问题讨论】:
developer.apple.com/documentation/corelocation/clerror/… 一个邮政编码可能太模糊了? 试过这个postalAddress.isoCountryCode = "US"
,但是一样
请尝试 geocodeAddressString。
@matt 我试过但结果相同,只是注意到它在模拟器上工作但在设备上没有。仍在寻找问题。
哇真的很有趣,感谢您的实验。设备是否在进行地理编码?很奇怪。
【参考方案1】:
我猜你的测试程序或设备有问题,因为我无法重现问题。我没有完成处理程序,所以我将代码更改为:
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...
这是正确的。也许你一直在敲击地理编码器,所以你被限制了?或者您的设备上可能有一些不好的设置?或者它可能是更微妙的东西。
【讨论】:
是的,我猜我的设备出了点问题。有什么我会跟进的。 您在在美国吗?也许有一些我们不知道的规则。 他们也为我工作——在设备、模拟器和(令人惊讶的!)在操场上。我假设您在设备和模拟器上使用了相同的 zip? 是的,但可能设备工作方式不同。这才是最重要的。【参考方案2】:CLGeocoder 也适用于我,但如果它不适合您,请尝试使用 MKLocalSearch Playground:
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
【讨论】:
以上是关于geocodePostalAddress - 从邮政编码获取地址的主要内容,如果未能解决你的问题,请参考以下文章