Выбор рандомной (случайной) точки (метки) внутри полигона. 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 шт):
Готовых методов генерации объекта внутри полигона в API нет. Но вы можете после генерации метки проверять, попадает ли она в сам полигон при помощи geoQuery и пересоздавать метку, пока она не окажется в границах многоугольника.
Пример работы с geoQuery есть в нашей песочнице: https://yandex.ru/dev/maps/jsbox/2.1/placemarks_in_circle