Кластеризация результатов геокодирования средствами geoQuery

Open in CodeSandbox

В выборку GeoQueryResult можно добавить результаты геокодирования и поиска по адресам. Далее можно использовать стандартные методы GeoQueryResult, например чтобы определить, попадает ли адрес в заданную область, или найти ближайший объект к точке.

Пример показывает, как с помощью applyBoundsToMap установить границы видимой области карты, чтобы в нее попали все объекты выборки. С помощью метода clusterize объекты можно добавлять в кластеризатор.

<!DOCTYPE html>

<html>
    <head>
        <title>
            Кластеризация результатов геокодирования средствами geoQuery
        </title>
        <meta
            http-equiv="Content-Type"
            content="text/html; charset=utf-8"
        />
        <!--
        Укажите свой API-ключ. Тестовый ключ НЕ БУДЕТ работать на других сайтах.
        Получить ключ можно в Кабинете разработчика: https://developer.tech.yandex.ru/keys/
    -->
        <script
            src="https://api-maps.yandex.ru/2.1/?lang=ru_RU&amp;apikey=<ваш API-ключ>"
            type="text/javascript"
        ></script>
        <script
            src="apply_bounds_and_clusterize.js"
            type="text/javascript"
        ></script>
        <style>
            body,
            html {
                font-family: Arial;
                font-size: 11pt;
                padding: 0;
                margin: 0;
                width: 100%;
                height: 95%;
                background-color: white;
            }
            p {
                padding: 10px;
            }
            #map {
                width: 100%;
                height: 90%;
            }
        </style>
    </head>
    <body>
        <p>Показаны кластеризованные результаты по запросу "Арбат"</p>
        <div id="map"></div>
    </body>
</html>
function init() {
    var myMap = new ymaps.Map(
        "map",
        {
            center: [55.73, 37.75],
            zoom: 10,
        },
        {
            searchControlProvider: "yandex#search",
        }
    );

    // Сделаем запрос на геокодирование, а затем спозиционируем карту, чтобы
    // все объекты попадали в видимую область карты и коэффициент масштабирования был
    // максимально возможным.
    var result = ymaps
        .geoQuery(ymaps.geocode("Арбат"))
        .applyBoundsToMap(myMap, { checkZoomRange: true });
    // Откластеризуем полученные объекты и добавим кластеризатор на карту.
    // Обратите внимание, что кластеризатор будет создан сразу, а объекты добавлены в него
    // только после того, как будет получен ответ от сервера.
    myMap.geoObjects.add(result.clusterize());
}
ymaps.ready(init);