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

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.1/?lang=ru_RU&amp;apikey=<ваш API-ключ>"
            type="text/javascript"
        ></script>
        <script
            src="placemarks_in_circle.js"
            type="text/javascript"
        ></script>
        <style>
            body,
            html {
                font-family: Arial;
                font-size: 11pt;
                padding: 0;
                margin: 0;
                width: 100%;
                height: 95%;
            }
            p {
                padding: 10px;
            }
            #map {
                width: 100%;
                height: 90%;
            }
        </style>
    </head>
    <body>
        <p>Перетаскивайте круг и следите за цветом меток</p>
        <div id="map"></div>
    </body>
</html>
ymaps.ready(init);

function init() {
    var myMap = new ymaps.Map(
            "map",
            {
                center: [55.43, 37.75],
                zoom: 8,
            },
            {
                searchControlProvider: "yandex#search",
            }
        ),
        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", "islands#redIcon");
        // Оставшиеся объекты - синими.
        objects
            .remove(objectsInsideCircle)
            .setOptions("preset", "islands#blueIcon");
    });
    myMap.geoObjects.add(circle);
}