当我触摸MKMapView上的商业图标时,我花了好几个小时试图找出如何获取本地商家名称,但在我看来,苹果公司不希望你获得这些信息。
例如,我正试图让这个Kroger的地标位于这个纬度/长度:
Kroger, 536 Centennial Blvd, Richardson, TX 75081, United States
<+32.93644619,-96.72057518>
使用此EXACT位置的反向地理位置,我将街道的placemark.name设置为“Centennial Blvd”,而不是像我期望的那样“Kroger”。
但是如果我使用带有naturalLanguageQuery =“Kroger”的MKLocalSearchRequest(),我会在其中找回包含此Kroger的地标列表(加上其他9个),但地标名称已正确设置为“Kroger”。< / p>
我需要点击手势才能在不使用任何naturalLanguageQuery文本的情况下查找商家名称。但它似乎并不可行。我该怎么做呢?
以下是两个代码块。
1)此代码返回“Centennial Blvd”
let geoCoder = CLGeocoder()
let kroger = CLLocation(latitude: +32.93644619, longitude: -96.72057518)
geoCoder.reverseGeocodeLocation(kroger, completionHandler: { (placemarks, error) -> Void in
// Place details
var placeMark: CLPlacemark!
placeMark = placemarks?[0]
//print(placeMark.addressDictionary)
// Location name
if let locationName = placeMark.name {
print("locationName: \(locationName)")
}
})
2)在此代码中,返回“Kroger”@&lt; + 32.93644619,-96.72057518&gt;
let request = MKLocalSearchRequest()
request.naturalLanguageQuery = "Kroger"
let kroger2 = CLLocationCoordinate2D(latitude: +32.93644619, longitude: -96.72057518)
let span = self.mapView.region.span
request.region = MKCoordinateRegion(center: kroger2, span: span)
let search = MKLocalSearch(request: request)
search.start { response, error in
guard let response = response else {
print("There was an error searching for: \(request.naturalLanguageQuery) error: \(error)")
return
}
print("There are \(response.mapItems.count)")
for item in response.mapItems {
print("Item Placemark Name: \(item.placemark.name!)")
}
}
编辑:我读过谷歌有API可以提供帮助,但我不想使用任何其他第三方API,我需要使用MapKit / CoreLocation来做到这一点。