javascript - 使用特征集合中的坐标来查找质心坐标
问题描述
抱歉,我是 javascript 新手!
我的脚本中有 8 个要素集合,它们在我的 web 地图上创建了 8 个多边形图层,代表 8 种不同青蛙物种的物种分布。每个对应页面上的一个按钮(每只青蛙的一个img),onclick加载多边形,在中心触发一个弹窗,将setView改为中心。为此,我需要多边形质心。
8 个要素集合中的每一个都具有多边形角点的坐标。我想在草皮变换中使用这些坐标来找到每个多边形的质心(中心点)。我需要质心,这样我就可以设置地图的中心,这样当地图平移到多边形图层上时,它会以多边形中心为中心,并且会在该中心出现一个弹出标记。
我可以将每个图层的特征集合中的坐标手动输入到 turf.centroid(polygon) 特征中,但是每个多边形都有很多点并且有 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);
解决方案
这是一个建议的代码,可能是您的解决方案。该代码演示了如何获取所需的坐标 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>
推荐阅读
- angular - Angular 6 - Firebase - 成功登录后路由不正确
- c# - 线程(任务)中的异常不会像示例所暗示的那样传播
- python - 如何迭代numpy数组的第n维?
- c++ - 使用 glutPostRedisplay() 绘制之字形线
- c++ - 如何使用 VS 编译器将预处理文件编译成目标文件
- symfony4 - API 平台:将许多资源关联到同一个实体
- javascript - 从另一个页面导航到另一个页面
- javascript - 如何确定屏幕上是否显示 HighChart?
- ios - 如何强制 WKWebView 忽略 iOS 上的硬件静音开关?
- javascript - 从 id => javascript/jquery 获取标签