#swift #coordinates #mapkit #geocode #clgeocoder
#swift #координаты #mapkit #геокодирование #clgeocoder
Вопрос:
Итак, я создал супер простую функцию прямого геокодирования с помощью MapKit:
func getCoordinates(from address: String) {
CLGeocoder().geocodeAddressString(address) { placemark, error in
guard error == nil amp;amp; placemark != nil else {
return
}
for index in 0..<placemark!.count {
let number = index 1
print("Location (number): (placemark?[index].location?.coordinate)")
}
}
}
Теперь 2 вещи: первая заключается в том, что (просто для уточнения) функция геокодирования mapkit возвращает только верхний хит для введенной строки, она не возвращает массив результатов — есть ли способ это изменить? Второе, что я заметил, это то, что эта функция не работает для местоположений «Точек интереса» — например, если вы введете «McDonalds» в качестве строки, вы не получите никаких результатов, потому что технически это не адрес. У кого-нибудь есть какие-либо предложения?
Ответ №1:
Попробуйте использовать MKLocalSearch
вместо:
let request = MKLocalSearch.Request()
request.region = region
request.naturalLanguageQuery = "McDonalds"
let search = MKLocalSearch(request: request)
search.start { (response, error) in
}