【发布时间】:2019-11-06 00:28:00
【问题描述】:
抱歉,我是 javascript 新手!
我的脚本中有 8 个要素集合,它们在我的 web 地图上创建了 8 个多边形图层,代表 8 种不同青蛙物种的物种分布。每个对应页面上的一个按钮(每只青蛙的一个img),onclick加载多边形,在中心触发一个popup,并将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);
【问题讨论】:
-
对我的回答有任何评论。
标签: javascript coordinates geojson turfjs