Увеличение результатов для адресной строки CLGeocoder - PullRequest
0 голосов
/ 23 марта 2020

Я создаю панель поиска в моем приложении, которая позволяет пользователю искать любой город в мире. Я использую CLGeocoder () и использую geocodeAddressString, который принимает то, что пользователь вводит в качестве параметра. Проблема в том, что результаты поиска всегда показывают только 1 элемент. Есть ли способ увеличить количество результатов?

func getSearch(fragment: String) -> [String]() {
    let geocoder = CLGeocoder()
    var results = [Search]()

    geocoder.geocodeAddressString(fragment) { (placemarks, err) in
        guard let placemarks = placemarks else { return }
        for mark in placemarks {
            var name = ""
            if let city = mark.locality {
                name += city
            }
            if let country = mark.country {
                if(country == "United States") {
                    if let state = mark.administrativeArea {
                        if(name.count > 2) {
                            name += ", " + state + ", US"
                        } else {
                            name += state + ", US"
                        }
                    }
                } else {
                    if(name.count > 0) {
                        name += ", " + country
                    } else {
                        name += country
                    }
                }
            }
            if let location = mark.location {
                results.append(Search(name: name, location: CLLocationCoordinate2D(latitude: location.coordinate.latitude, longitude: location.coordinate.longitude)))
            }
        }
        return results
    }
}
...