Google Maps Places API 返回不一致的结果(以及某种解决方案)

问题描述 投票:0回答:1

对于遇到类似问题的任何人来说,这部分是问题,部分是解决方案。

使用 Google Maps API 的附近搜索时,增加搜索半径有时不会增加返回结果的数量,在某些情况下还会减少返回结果的数量。查询如下:

val uri = "https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=${currentLocation.latitude},${currentLocation.longitude}&fields=geometry, name, vicinity, price_level, rating&name=$cuisineType&radius=$distance&rating=$rating&maxprice=$price&key=(my key)"

例如,如果我在 4000 米半径内搜索“古巴美食”并得到 4 个结果,增加到 6000 米现在将仅返回 3 个结果,更远的距离会返回几个结果,并且无法返回之前的几个较小半径结果.

我通过包含“rankBy=distance”并删除半径参数解决了这个问题,现在似乎返回最多 20 个从 lang/lat 坐标向外移动的结果。

问题部分是:为什么。

好的,谢谢。

kotlin google-maps google-maps-api-3
1个回答
0
投票

Google 地图附近搜索中的显着性和距离

突出(默认)。此选项根据结果对结果进行排序 重要性。排名将有利于设定半径内的突出位置 覆盖附近匹配但不太突出的地方。突出 可能会受到 Google 索引中某个地点的全球排名的影响 人气等因素。当指定显着性时, 需要半径参数。

以上说法来自附近搜索| Places API 文档,提到突出是附近搜索的默认排名行为。话虽如此,如果您正在搜索提供古巴美食的地方,返回的结果主要根据这些地方的知名度进行排序。

这意味着扩大

radius
参数的值可能会引入新的、高度显着的结果,并有可能取代以前返回的显着性较低的结果。

另请注意,由于 Google 地图的分布式和不断发展的性质等因素,即使多次执行相同的附近搜索查询也可能返回略有不同的结果。这是 Google 公共问题跟踪器中提出的错误中提到的预期行为:https://issuetracker.google.com/119250563

使用

rankby=distance
时,您可能会获得更多结果,因为此选项严格根据距指定位置的升序距离进行排序,如文档中所确认:

距离。此选项按升序偏向搜索结果 他们距指定位置的距离。当距离为 指定,需要关键字、名称或类型中的一个或多个,并且 半径是不允许的。

但是,这种严格的基于距离的优先级意味着您将放弃距离较远的高评价地点,以查看严格按距离排序的结果。

© www.soinside.com 2019 - 2024. All rights reserved.