Я создаю небольшое маленькое приложение для себя - прямо сейчас у него есть функция, называемая performSearch, которая выполняет поиск в вашей локальной области из всех близлежащих кофейных мест, спортивных залов и ресторанов, затем бросает булавки в каждом из этих мест. Однако я смущен тем, как я могу получить аннотацию, чтобы отобразить имя местоположения, как показано на фактическом виде карты. У кого-нибудь есть опыт?iOS Обратное геокодирование (получение имени пользователя из его координат, а не только адреса)
В принципе, вместо того, чтобы отображать только адрес, я хочу аннотацию сказать «Старбакс Адреса ...» Код
Примера:
Это делает поиск с любым заданным полем поиска и каплями штырьков на отображение всех местоположений в данной области с этим полем поиска.
var matchingItems: [MKMapItem] = [MKMapItem]()
@IBOutlet weak var map: MKMapView!
func performSearch(searchField: String) {
matchingItems.removeAll()
//search request
let request = MKLocalSearchRequest()
request.naturalLanguageQuery = searchField
request.region = self.map.region
// process the request
let search = MKLocalSearch(request: request)
search.startWithCompletionHandler { response, error in
guard let response = response else {
print("There was an error searching for: \(request.naturalLanguageQuery) error: \(error)")
return
}
for item in response.mapItems {
// customize your annotations here, if you want
var annotation = item.placemark
self.reverseGeocoding(annotation.coordinate.latitude, longitude: allData.coordinate.longitude)
self.map.addAnnotation(annotation)
self.matchingItems.append(item)
}
}
}
func reverseGeocoding(latitude: CLLocationDegrees, longitude: CLLocationDegrees) {
let location = CLLocation(latitude: latitude, longitude: longitude)
CLGeocoder().reverseGeocodeLocation(location, completionHandler: {(placemarks, error) -> Void in
if error != nil {
print(error)
return
}
else if placemarks?.count > 0 {
let pm = placemarks![0]
let address = ABCreateStringWithAddressDictionary(pm.addressDictionary!, false)
print("\n\(address)")
if pm.areasOfInterest?.count > 0 {
let areaOfInterest = pm.areasOfInterest?[0]
print(areaOfInterest!)
} else {
print("No area of interest found.")
}
}
})
}