【问题标题】:HERE Geocoder Autocomplete API matchLevel parameterHERE Geocoder Autocomplete API matchLevel 参数
【发布时间】:2019-10-30 08:03:28
【问题描述】:

有没有办法根据 matchLevel 限制结果? 因此,如果我们使用地理编码来搜索城市,我们可以使用:

matchLevel : 'city'

只有这样才能得到结果?

目前,当发送带有查询(例如“伦敦”)的请求时,我们会得到各种地区、县、市的结果。我看不到将这些结果限制在城市的方法。使用resultType=areas 是不够的。对于当前的解决方法,我们在响应后过滤结果以仅显示带有matchLevel=city 的结果,但我们增加了maxresults 以获得足够的过滤结果。是否有一些我们可以使用的 beta/hidden 参数?

【问题讨论】:

  • 您好,您可以通过循环代码来过滤响应结果。或者您可以提供您的代码,然后我们可以提供帮助。
  • @HEREDeveloperSupport 是的,正如我所写,我们目前正在过滤结果。我只是希望你有一些可以简化事情的参数。在数据库查询级别限制结果通常比过滤更有效。无论如何,感谢您的关注。 :o)
  • 有什么解决办法吗?
  • @harunB10 不幸的是没有。您唯一能做的就是拉取数据,并使用 JS 函数过滤结果。效率不高,但这是唯一的方法。

标签: geocoding here-api


【解决方案1】:

由于无法直接在 API 中进行,唯一的解决方案实际上是过滤结果。对于任何有需要的人,这就是我使用的。您可以根据自己的需要进行调整。

request.onload = function () {
    if (request.status >= 200 && request.status < 400) {
        // Success!
        var data = JSON.parse(request.responseText);

        var list = [];
        var total = 0;
        for (var i = 0; i < data.suggestions.length; i++) {
            if (data.suggestions[i].matchLevel == "city" && list.indexOf(data.suggestions[i].address.city + ', ' + data.suggestions[i].address.country) < 0) {
                list.push(data.suggestions[i].address.city + ', ' + data.suggestions[i].address.country);
            }
        }

    }
};

【讨论】:

    猜你喜欢
    • 2018-09-23
    • 1970-01-01
    • 2021-08-17
    • 1970-01-01
    • 2019-12-20
    • 2018-05-20
    • 1970-01-01
    • 2020-01-06
    • 1970-01-01
    相关资源
    最近更新 更多