Попадание точек в окружность

Open in CodeSandbox

С помощью класса GeoQueryResult можно формировать набор меток на карте из JSON-описаний их геометрий.

В данном примере показано, как проверять попадание объектов в окружность и изменять их опции через GeoQueryResult.

<!DOCTYPE html>

<html>
    <head>
        <title>Примеры. Попадание объектов в окружность.</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.0.31/?load=package.standard,package.geoObjects,package.geoQuery&amp;lang=ru-RU&amp;apikey=<ваш API-ключ>"
            type="text/javascript"
        ></script>

        <script
            src="placemarks_in_circle.js"
            type="text/javascript"
        ></script>
    </head>
    <style>
        body {
            font-family: Arial;
            font-size: 11pt;
        }
    </style>
    <body>
        <p>Перетаскивайте круг и следите за цветом меток</p>
        <div id="map" style="width:400px; height:300px"></div>
    </body>
</html>
ymaps.ready(init);

function init() {
    var myMap = new ymaps.Map("map", {
            center: [55.43, 37.75],
            zoom: 8,
        }),
        objects = ymaps
            .geoQuery([
                {
                    type: "Point",
                    coordinates: [55.73, 37.75],
                },
                {
                    type: "Point",
                    coordinates: [55.1, 37.45],
                },
                {
                    type: "Point",
                    coordinates: [55.25, 37.35],
                },
            ])
            .addToMap(myMap),
        circle = new ymaps.Circle([[55.43, 37.7], 10000], null, {
            draggable: true,
        });

    circle.events.add("drag", function () {
        // Объекты, попадающие в круг, будут становиться красными.
        var objectsInsideCircle = objects.searchInside(circle);
        objectsInsideCircle.setOptions("preset", "twirl#redIcon");
        // Оставшиеся объекты - синими.
        objects
            .remove(objectsInsideCircle)
            .setOptions("preset", "twirl#blueIcon");
    });
    myMap.geoObjects.add(circle);
}