祝大家节日快乐。 我在尝试使用 L.geoJson() 绘制多边形图层时注意到一个有趣的行为怪癖。考虑以下代码:
var polygonCoords = [
{"type": "Feature",
"properties": {"group": "Violations"},
"geometry": {
"type" : "Polygon",
"coordinates": [[
[-107.69348, 43.22519],
[-105.48523, 42.99259],
[-107.7594, 42.26105]
]]
}
}];
和
var polygons = L.polygon([
[43.22519, -107.69348],
[42.99259, -105.48523],
[42.26105, -107.7594]
]);
现在,两者都在各自的上下文中工作。我只是想知道为什么必须反射(reflect) L.polygon() 中的坐标矩阵才能显示传入 L.goeJson() 时所期望的位置,如下所示:
var jsonPoly = L.geoJson(polygonCoords, {
style: function(feature) {
if (feature.properties.group == "Violations") {
return {color: "#ff0000"};
}
}
});
或者这是传单中的疏忽?另外,有没有办法通过 toGeoJson(polygons) 来自动执行此反射?
非常感谢大家。
最佳答案
创建 geoJson 图层时,坐标应符合 GeoJSON 标准(x、y、z 或 lng、lat、海拔)( GeoJSON position specs )
如果您的 GeoJSON 字符串的坐标不是这种格式,您可以使用自定义 coordsToLatLng 函数创建 GeoJSON 图层,该函数将处理到标准格式的转换 ( Leaflet Doc )
如果您有一个多边形图层并希望将其添加到现有的 GeoJSON 要素组中,您可以执行以下操作:
var polygons = L.polygon([
[43.22519, -107.69348],
[42.99259, -105.48523],
[42.26105, -107.7594]
]);
var gg = polygons.toGeoJSON();
var jsonFeatureGroup = L.geoJson().addTo(map);
jsonFeatureGroup.addData(gg);
map.fitBounds(jsonFeatureGroup.getBounds());
关于javascript - 与传单协调反射问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20663604/