Ich baue eine kleine App für mich selbst - im Moment hat es eine Funktion namens performSearch, die eine Suche in Ihrem lokalen Bereich durchführt von allen in der Nähe befindlichen Kaffees, Fitnessstudios und Restaurants fallen dann an jedem dieser Orte Stifte. Ich bin jedoch verwirrt, wie ich die Anmerkung erhalten kann, um den Namen des Ortes anzuzeigen, der auf der tatsächlichen Kartenansicht gezeigt wird. Hat jemand Erfahrung?iOS Reverse-Geocodierung (NAME eines Ortes aus seinen Koordinaten, nicht nur die Adresse)
Grundsätzlich stattdessen die Adresse der Anzeige nur, möchte ich die Anmerkung sagen: „Starbucks Adresse ...“
Beispielcode:
Dies macht eine Suche mit jedem Suchfeld gegeben und fällt Pins auf ein Kartenansicht aller Orte in dem angegebenen Gebiet mit diesem Suchfeld.
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.")
}
}
})
}