9

的文档

- (void)geocodeAddressString:(NSString *)addressString completionHandler:(CLGeocodeCompletionHandler)completionHandler;

该文件明确指出:

在前向地理编码请求的情况下,如果提供的信息产生多个可能的位置,则可能会返回多个地标对象。

声明它返回一个地标数组。然而,即使我搜索我知道肯定有多个条目的对象(好莱坞、华盛顿、丹麦、主要街道等),我总是只能得到一个条目。

有些人只是耸耸肩说改用 google API,但我担心请求限制。

是否有一些设置或破解来解决这个问题,或者CLGeocoder只是坏了?

4

2 回答 2

2

我肯定会建议使用谷歌地理编码 API - 它简直是优越的。我还认为,您不应该担心 Google Geocoding API 请求的使用限制。

如果您正在开发移动应用程序,我建议实施客户端地理编码 - 这意味着每个设备都直接查询 Google API。正如谷歌自己的文档中直接说明的那样

地理编码限制是每个用户会话的,随着用户群的增长,您的应用程序不会达到全局限制。

地理编码策略文档地理编码文档中的更多信息。

于 2012-12-14T12:10:15.367 回答
0

MKLocalSearch 是这里的答案:

let request = MKLocalSearch.Request()
request.naturalLanguageQuery = "addressToBeSearched"
request.region = MKCoordinateRegion(center: span: )
let localSearch = MKLocalSearch(request: request)

localSearch.start { response, error in
    // returns (MKLocalSearch.Response?, Error?) -> Void
    // which ultimately has an array of MKMapItem from which you can extract a placemark.
}

这不仅返回附近的兴趣点、地点等。我能想到的唯一缺点是您必须在初始化程序中为 MKCoordinateRegion 和跨度提供当前位置。

于 2020-09-29T14:54:25.760 回答