ЗДЕСЬ Параметр matchLevel API автозаполнения геокодера

Есть ли способ ограничить результаты на основе matchLevel? Итак, если мы используем геокодирование для поиска городов, мы могли бы использовать:

matchLevel : 'city'

получить результаты только с этим?

В настоящее время при отправке запроса с запросом например «Лондон» мы получаем всевозможные результаты с округами, округами, городами. Я не вижу способа ограничить эти результаты только городом. Недостаточно использовать resultType=areas. В настоящее время для обходного пути мы фильтруем результаты после ответа, чтобы отображать только те, которые имеют matchLevel=city, но мы увеличили maxresults, чтобы получить достаточно для фильтрации. Может быть, мы могли бы использовать какой-нибудь бета / скрытый параметр?


person Kokers    schedule 16.06.2019    source источник
comment
Привет, вы, вероятно, можете отфильтровать результат ответа, зациклившись в своем коде. Или вы можете предоставить свой код, тогда мы сможем помочь.   -  person HERE Developer Support    schedule 17.06.2019
comment
@HEREDeveloperSupport Да, как я уже писал, в настоящее время мы фильтруем результаты. Я просто надеялся, что у вас есть какой-то параметр, который может упростить ситуацию. Ограничение результатов на уровне запроса к базе данных обычно более эффективно, чем фильтрация. В любом случае, спасибо за интерес. : o)   -  person Kokers    schedule 17.06.2019
comment
Любое решение для этого?   -  person harunB10    schedule 18.09.2019
comment
@ harunB10, к сожалению, нет. Единственное, что вы можете сделать, это извлечь данные и отфильтровать результаты с помощью функции JS. Не очень эффективно, но это единственный способ.   -  person Kokers    schedule 20.09.2019


Ответы (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);
            }
        }

    }
};
person Kokers    schedule 20.09.2019