致敬所有人和节日快乐。 我在尝试用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]
]);
现在,两者都在各自的背景下工作。我只是想知道为什么必须反映L.polygon()中的坐标矩阵,以便在传递到L.goeJson()时显示出人们期望的位置:
var jsonPoly = L.geoJson(polygonCoords, {
style: function(feature) {
if (feature.properties.group == "Violations") {
return {color: "#ff0000"};
}
}
});
或者这是传单内的疏忽吗?另外,有没有办法用toGeoJson(多边形)自动化这种反射?
非常感谢。
答案 0 :(得分:4)
创建geoJson图层时,坐标应符合GeoJSON标准(x,y,z或lng,纬度,高度)(GeoJSON position specs)
如果您的坐标不是这种格式的GeoJSON字符串,您可以使用自定义coordsToLatLng函数创建GeoJSON图层,该函数将处理此标准格式的转换(Leaflet Doc)< / p>
如果您有一个多边形图层并希望将其添加到现有的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());