Here Rest API: 如何限制某个区域的建议结果?

Here Rest API: How to limit the suggestion result in an area?

我需要 Here map API 来自动完成地址。我正在尝试使用记录在案的地点建议 API:https://developer.here.com/api-explorer/rest/places-search/search-suggestion

然而 API 的行为让我感到惊讶。我试图通过查询“20”(部分门牌号)在华盛顿地区获得建议:

curl -X GET -H "X-Map-Viewport: -125.0061,45.6674,-120.6775,48.7269" -H "Cache-Control: no-cache" "https://places.demo.api.here.com/places/v1/suggest?q=20&app_id=DemoAppId01082013GAL&app_code=AJKnXv84fjrb0KIHawS0Tg&size=5"

{
  "suggestions": [
    "205th Ave KP S, Lakebay, WA 98349, USA",
    "Mall 205",
    "204th Avenue KP S, Lakebay, WA 98349, USA",
    "202nd Avenue KP S, Lakebay, WA 98349, USA",
    "McMenamins"
  ]
}

我觉得这很好。

但令我惊讶的是,当我开始查询“2021”时,它返回给我在墨西哥的地址:

curl -X GET -H "X-Map-Viewport: -125.0061,45.6674,-120.6775,48.7269" -H "Cache-Control: no-cache" "https://places.demo.api.here.com/places/v1/suggest?q=2021&app_id=DemoAppId01082013GAL&app_code=AJKnXv84fjrb0KIHawS0Tg&size=10"

{
  "suggestions": [
    "2021 California",
    "20218, Aguascalientes, Mexico",
    "Taco Bell",
    "20219, Aguascalientes, Mexico",
    "2021 Restaurant",
    "20216, Aguascalientes, Mexico",
    "2021 Wireless",
    "20210, Aguascalientes, Mexico",
    "2021.Interactive, LLC",
    "20213, Peñas Blancas, Costa Rica"
  ]
}

如果在区域内找不到匹配项,我宁愿得不到任何结果,也不愿在边界框外得到结果。

我的问题:我怎样才能真正限制搜索区域?另一个问题是如何过滤掉不是地址的结果?

您可以使用地址解析器 api 吗?这是我用于 "autocomplete suggestion" 输入字段的内容,您可以将建议结果限制在边界框内并指定确切的状态。它还会告诉您每个结果的位置类型,以及更详细的信息。

例如:

https://geocoder.api.here.com/6.2/geocode.json?mapview=16.6,-170.2;76.0,-45.4&state=wa&searchtext=2021&gen=9&app_id=APP_ID&app_code=APP_CODE&size=10

api 的地方我没有用过,但听起来地理编码器也能满足你的要求。

似乎还无法将“地点建议”API 结果限制在特定国家/地区。您可以尝试使用显式位置上下文 (?in=[your-country-polygon]),但随后您不能使用隐式位置上下文(例如 X-Map-Viewport header)来关注较小的边界框 - 您会得到分散的结果遍布全国。

如果您可以在没有 "places" 的情况下生活,并且只需要街道,您可以使用地理编码 API - 有了它,您可以按国家软或硬过滤结果。

Places 和 Geocoding 似乎是两个截然不同的软件,两者之间几乎没有内聚性 API