如何通过GMSPlace Types组件按场所类型过滤显示结果

时间:2018-08-30 08:27:19

标签: ios swift google-places-api google-maps-sdk-ios google-places

当前,我正在使用iOS版Google Places SDK并阅读this example code from Google。我尝试阅读它,并弄清楚如何根据GMSPlace对地点类型进行分类,并且有一个名为types的组件可供我分类。经过进一步的研究,我发现Google在此list中支持这些场所类型,但是我只能通过解析https://maps.googleapis.com/maps/api/place/findplacefromtext/output?parameters的请求结果(尝试打印出{{ 1}}至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) } 时返回此数组,这意味着我可以按地点类型对它进行排序,但到目前为止,对于该示例项目,我仍然不知道如何对结果进行排序并将其显示在地图视图中。有想法吗?

更新1:This是该存储库中的简化项目,仍然包含与我相同的问题。特别是["cafe", "store", "restaurant", "food", "point_of_interest", "establishment"]在该项目中仍然是likelyPlaces

更新2:到目前为止,对于GMSPlace,我可以使用{

likelyPlaces

但是当我将其转换为删除在possiblePlaces数组中不包含types的任何元素时,我得到了var likelyPlaces: [GMSPlace] = [] var lengthOfArray: Int = 0 for i in 0..<lengthOfArray { if (likelyPlaces[i].types.contains("store")) { print(likelyPlaces[i]) } }

store

The result我注意到结果在崩溃前重复了4次。

这两个都是关于GMSPlace的主题,所以我认为我可以将其保留在同一问题中。

更新3:刚刚找到了第二个更新的解决方案。创建一个数组以放置排序的位置。就我而言,我创建了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) } } 创建了一个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])
        }
    }

那。仍在计算第一个。

0 个答案:

没有答案