Выбор рандомной (случайной) точки (метки) внутри полигона. yandex-maps-jsapi ; yandex-geocoding-api

Мне нужно сделать так, чтобы JS скрипт ставил рандомную точку внутри полигона. Например здесь: https://jsfiddle.net/epav10545/u8Lwv05p/8/, в Коломенском должна быть выбрана случайная точка на территориии этого полигона. Я попытался реализовать это таким образом: https://jsfiddle.net/epav10545/u8Lwv05p/7/, с 98 по 112 строки код посвящен этой рандомной точке, но проблема заключается в том, что иногда она вылезает за границы полигона.

Вот код с 98 по 112 строки, где вычисляются рандомные координаты метки, и собственно она добавляется на карту:

            // Получаем границы полигона
            var bounds = myGeoObject.geometry.getBounds();
                        // Генерируем случайные координаты внутри границ
            var randomLat = Math.random() * (bounds[1][0] - bounds[0][0]) + bounds[0][0];
            var randomLng = Math.random() * (bounds[1][1] - bounds[0][1]) + bounds[0][1];

            // Создаем новую точку внутри полигона
            randomPoint = new ymaps.GeoObject({
                geometry: {
                    type: "Point",
                    coordinates: [randomLat, randomLng]
                },
                properties: {}
            });
            myMap1.geoObjects.add(randomPoint);

Помогите пожалуйста.


Ответы (1 шт):

Автор решения: YaSupport

Готовых методов генерации объекта внутри полигона в API нет. Но вы можете после генерации метки проверять, попадает ли она в сам полигон при помощи geoQuery и пересоздавать метку, пока она не окажется в границах многоугольника.

Пример работы с geoQuery есть в нашей песочнице: https://yandex.ru/dev/maps/jsbox/2.1/placemarks_in_circle

→ Ссылка