我正在使用 Google 的新 Places API 和文本搜索功能,但遇到了问题。通常,当我在特定位置搜索关键字时,得到的结果远远超出了所需区域。例如,如果我在德国 Niedeck 5 搜索“废料回收”,我会得到来自美国和英国的结果,这是没有意义的。我设置了半径为 50,000 米(最大限制)的位置偏差,但它不遵守该边界。旧的 Places API 工作得更好,因为它返回指定半径内的结果。有什么办法可以在新的 API 中解决这个问题吗? 在我提到的差异所在处附加一个卷曲(注意:通常在我使用 nextPageToken 时发生)
curl --location 'https://places.googleapis.com/v1/places:searchText' \
--header 'Content-Type: application/json' \
--header 'X-Goog-Api-Key: KEY\
--header 'X-Goog-FieldMask: *' \
--data '{
"textQuery": "scrap recycling",
"locationBias": {
"circle": {
"center": {
"latitude": 51.49998193374399,
"longitude": 10.064777998776602
},
"radius": 50000.0
}
},
"pageToken":”XXXX"
}
我在 https://issuetracker.google.com/ 上发布了同样的问题,他们按预期将其标记为使用 locationRestriction 而不是 locationBias https://developers.google.com/maps/documentation/places/网络服务/文本搜索#位置限制。但是文档没有提到如何使用 locationRestriction ,尝试了多种方法实现但找不到正确的方法。
至少需要一些可靠性和准确性,就像我以前使用旧 API 那样
你说得有道理,文档缺少一个有效的示例。
对于文本搜索(新),您需要使用locationRestriction
SearchTextRequest
,仅支持rectangle
:
curl -X POST -d '{
"textQuery" : "scrap recycling",
"pageSize" : "20",
"locationBias": {
"rectangle": {
"low": {
"latitude": 51.497,
"longitude": 10.063
},
"high": {
"latitude": 51.500,
"longitude": 10.065
}
}
}
}' \
-H 'Content-Type: application/json' \
-H 'X-Goog-Api-Key: ...' \
-H 'X-Goog-FieldMask: places.id,places.formattedAddress' \
'https://places.googleapis.com/v1/places:searchText'
注意:还有 other
locationRestriction
支持 circle
,但文本搜索(新)不支持,并且会用 拒绝它
"Invalid JSON payload received. Unknown name \"circle\" at 'location_restriction': Cannot find field."