google 新文本搜索 API 返回数据超出范围

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

我正在使用 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 那样

node.js google-maps google-maps-api-3 google-api google-places-api
1个回答
0
投票

你说得有道理,文档缺少一个有效的示例。

对于文本搜索(新),您需要使用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."
© www.soinside.com 2019 - 2024. All rights reserved.