используя координаты из коллекции объектов, чтобы найти координаты центроида - PullRequest
0 голосов
/ 06 ноября 2019

Извинения, я новичок в javascript!

У меня есть 8 коллекций объектов в моем скрипте, которые создают 8 слоев многоугольников на моей веб-карте, представляющих распределение видов для 8 различных видов лягушек. Каждый из них соответствует кнопке (img каждой лягушки) на странице, и onclick загружает многоугольник, запускает всплывающее окно в центре и меняет setView на центр. Для этого мне понадобится многоугольный центроид.

Каждая из 8 коллекций объектов имеет координаты угловых точек многоугольника. Я хочу использовать эти координаты в преобразовании дерна, чтобы найти центроид (центральную точку) каждого многоугольника. Мне нужны центроиды, чтобы я мог установить центр карты так, чтобы, когда карта перемещалась на слой многоугольника, она центрировалась в центре многоугольника, и в этом центре появлялся всплывающий маркер.

I может введите координаты вручную из коллекции объектов каждого слоя в элемент turf.centroid (многоугольник), но каждый многоугольник имеет МНОЖЕСТВО точек и 8 многоугольников. Затем я также должен был бы скопировать результат операции в L.LatLng и L.Marker.

Мне нужен способ получить координаты углов из коллекции объектов в операцию дерновины, изатем помещая полученные координаты центроида в функции L.LatLng и L.Marker. Есть идеи?

Вот код для функции addFrog1Layer (), в которую я добавляю слой с полигоном и всплывающее окно на карту:

var polygon = turf.polygon([[[a, b], [c, d], [e, f], [g, h], [i, j], [k, l]]]);

var centroid = turf.centroid(polygon);

map.setView(new L.LatLng(x,y), 1);

Frog1Layer = L.geoJson(Frog1, { 
        style: {
            weight: 0.5,
            color: 'white',
            fillOpacity: 1,
            fillColor: 'red',
        }

}).addTo(map);


var frogIcon = L.icon({
iconUrl: 'frogIcon.png',

iconSize:     [30, 30],
iconAnchor:   [30, 30], 
popupAnchor:  [-3, -76]

L.marker([x,y], {icon: frogIcon}).bindPopup("I am a pop-up").addTo(map);

1 Ответ

0 голосов
/ 09 ноября 2019

Вот предлагаемый код, который может быть вашим решением. Код демонстрирует, как получить нужные вам координаты x и y.

console.log("Hello World of Turf! ");

var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });
var centroid = turf.centroid(polygon);

// get coordinates of the centroid
var centroid_xy = centroid.geometry.coordinates;

// get x and y
var x = centroid_xy[0];
var y = centroid_xy[1];
console.log("Centroid x: " + x);
console.log("Centroid y: " + y);
  
console.log("Goodbye Turf! ");
<script src='https://npmcdn.com/@turf/turf/turf.min.js'></script>
...