使用要素集中的坐标查找质心坐标

时间:2019-11-06 00:28:00

标签: javascript coordinates geojson turfjs

抱歉,我是javascript新手!

我的脚本中有8个要素集,这些要素集在我的网络地图上形成8个多边形层,代表8种不同的青蛙物种的物种分布。每个对应于页面上的一个按钮(每个青蛙的img),并且onclick加载多边形,触发中心弹出窗口并将setView更改为中心。为此,我需要多边形质心。

8个要素集合中的每个要素都有多边形角点的坐标。我想在草皮转换中使用这些坐标来查找每个多边形的质心(中心点)。我需要质心,因此我可以设置地图的中心,因此当地图平移到多边形图层时,它将以多边形的中心为中心,并且在该中心出现一个弹出标记。

可以将每个图层的要素集合中的坐标手动输入到turf.centroid(polygon)要素中,但是每个多边形都有很多点,并且有8个多边形。然后,我还必须将运算结果复制到L.LatLng和L.Marker中。

我需要一种方法,将要素集合中的角坐标放入草皮操作中,然后将所得的质心坐标放入L.LatLng和L.Marker要素中。有什么想法吗?

这是一个名为addFrog1Layer()的函数的代码,在其中我向地图添加了一个多边形层和一个弹出窗口:

OkHttpClientProvider.setOkHttpClientFactory(new CustomClientFactory());

1 个答案:

答案 0 :(得分:0)

这是一个建议的代码,可能是您的解决方案。该代码演示了如何获取所需的坐标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>