Яндекс карты. Как получить равномерно распределенные точки по региону?

101
01 июля 2021, 22:20

У меня есть координаты границы региона Москвы, и мне необходимо равномерно распределить точки по этому и региону и узнать их координаты. Есть ли какие то готовые решения такой задачи?

Answer 1

Вот Вам решение на turf.js, логика как в комментарии господина @MBo

ymaps.ready(function() { 
    let map = new ymaps.Map("map", { 
        center: turf.center(area).geometry.coordinates, 
        zoom: 9, 
        controls: [] 
    }); 
    map.geoObjects.add(new ymaps.GeoObject(area)) 
    var bbox = turf.bbox(area); 
    let count = 15 
    for (var x=0; x< count; x++){ 
      for (var y=0; y< count; y++){ 
        let obj = {geometry: {type:'Point', coordinates:[ 
            bbox[0] + (bbox[2]-bbox[0])/count*x,   
            bbox[1] + (bbox[3]-bbox[1])/count*y 
        ]}}; 
        if (turf.booleanPointInPolygon(obj, area)) 
        map.geoObjects.add(new ymaps.GeoObject(obj)) 
      } 
    } 
}); 
 
 
let area = { 
  "type": "Feature", 
  "geometry": { 
    "type": "Polygon", 
    "coordinates": [[ 
        [37.34527587890625,55.95381321086168], 
        [37.32330322265625,55.66209476458093], 
        [37.0843505859375,55.593867449197575], 
        [37.12005615234375,55.44771083630114], 
        [36.8426513671875,55.5099714998319], 
        [36.83990478515625,55.39471190628709], 
        [37.04315185546875,55.14277943861009], 
        [37.42218017578125,55.26972780710658], 
        [37.60894775390625,55.56747507540018], 
        [37.8973388671875,55.699259616176356], 
        [37.8533935546875,55.824430445857764], 
        [37.562255859375,55.95381321086168], 
        [37.34527587890625,55.95381321086168] 
     ]] 
  } 
} 
 
area.geometry.coordinates[0] = area.geometry.coordinates[0].map(e=>[e[1],e[0]])
body { 
  overflow: hidden; 
  margin: 0; 
}  
 
#map {  
    width: 100vw; 
    height: 100vh; 
}
<script src="https://cdn.jsdelivr.net/npm/@turf/turf@5/turf.min.js"></script> 
<script src="https://api-maps.yandex.ru/2.1/?lang=ru_RU"></script> 
<div id="map"></div>

READ ALSO
Как выровнять по центру баннер?

Как выровнять по центру баннер?

Как сделать чтобы баннер выравнивался по центру, а не с левой стороныИспользую CMS Xenforo 2

113
Как подсветить или изменить стиль некоторых букв в строке

Как подсветить или изменить стиль некоторых букв в строке

Как сделать подобие подсветки синтаксиса?

90
Нету стилей css в php

Нету стилей css в php

http://robloxsellerru/pages/account//account

353
Как передать массив переменных в template? [закрыт]

Как передать массив переменных в template? [закрыт]

Хотите улучшить этот вопрос? Добавьте больше подробностей и уточните проблему, отредактировав это сообщение

148