不基于仅地址的 MapKit 转发地理编码?

MapKit forward geocoding that is not based on ONLY addresses?

所以我用 MapKit 做了一个超级简单的前向地理编码函数:

func getCoordinates(from address: String) {
    CLGeocoder().geocodeAddressString(address) { placemark, error in
        guard error == nil && placemark != nil else {
            return
        }
        for index in 0..<placemark!.count {
            let number = index + 1
            print("Location \(number): \(placemark?[index].location?.coordinate)")
        }
    }
}

现在有两件事:第一点是(澄清一下),mapkit 地理编码函数只是 return 输入字符串的顶部命中,它不是 return 数组结果——有办法改变吗?我注意到的第二件事是此函数不适用于 'Point of Interest' 个位置——例如,如果您输入“McDonalds”作为字符串,您将得不到返回结果,因为它在技术上不是地址。有人有什么建议吗?

尝试使用 MKLocalSearch 代替:

let request = MKLocalSearch.Request()
request.region = region
request.naturalLanguageQuery =  "McDonalds"
let search = MKLocalSearch(request: request)
search.start { (response, error) in

}