В настоящее время я использую Google Places SDK для iOS и читаю этот пример кода от Google . Я попытался прочитать его и выяснить, как сортировать типы мест на основе GMSPlace , и есть компонент под названием types
, который я могу отсортировать. Дальнейшие исследования показали, что Google поддерживает эти типы мест в этом списке , но все, что я могу найти, - это использовать его с Google Place API, анализируя результат запроса из https://maps.googleapis.com/maps/api/place/findplacefromtext/output?parameters
При попытке распечатать GMSPlace.types
через place.types
override func viewDidLoad() {
super.viewDidLoad()
// Configure the table
tableDataSource =
PlaceDetailTableViewDataSource(place: place,
extensionConstraint: headerHeightExtensionConstraint,
tableView: tableView)
tableView.backgroundView = tableBackgroundView
tableView.dataSource = tableDataSource
tableView.delegate = tableDataSource
// Configure the UI elements
lookupPhoto()
configureMap()
configureBars()
print(place.types)
}
Они возвращают этот массив при выборе местоположения ["cafe", "store", "restaurant", "food", "point_of_interest", "establishment"]
Это означает, что я могу отсортировать это по типам мест, но до сих пор я не могу понять, как отсортировать и отобразить результат в виде карты для этого примера проекта. Есть идеи?
Обновление 1: Этот является упрощенным проектом в этом репо и все еще содержит тот же вопрос, что и я. Особенно likelyPlaces
все еще GMSPlace
в этом проекте.
Обновление 2: пока что для likelyPlaces
я могу сортировать базу по types
, используя эту
var likelyPlaces: [GMSPlace] = []
var lengthOfArray: Int = 0
for i in 0..<lengthOfArray {
if (likelyPlaces[i].types.contains("store")) {
print(likelyPlaces[i])
}
}
, но когда я преобразую его в удаление любого элемента, который не содержит store
в массиве Вероятно, я получил Thread 1: Fatal error: Index out of range
for i in 0..<lengthOfArray {
if !(likelyPlaces[i].types.contains("store")) {
print(likelyPlaces[i])
likelyPlaces.remove(at: i)
}
}
Результат Я заметил, что результат повторяется 4 раза до его сбоя.
Обе они в одной теме о GMSPlace, поэтому я думаю, что могу оставить это в одном и том же вопросе.
Обновление 3: только что нашел решение для второго обновления. Создать массив для размещения отсортированных мест. В моем случае я создаю var restaurant: [GMSPlace] = []
, затем создаю if else
условие для likelyPlaces
, чтобы отсортировать его.
for i in 0..<likelyPlaces.count {
if (likelyPlaces[i].types.contains("restaurant") && !restaurant.contains(likelyPlaces[i])) {
restaurant.append(likelyPlaces[i])
}
}
Затем очистите likelyPlaces
и заполните его только что созданным массивом
likelyPlaces.removeAll()
likelyPlaces = restaurant
Вот оно. Все еще выясняю первый, хотя.