Javascript 我可以用传单更改GeoJSON行字符串的填充颜色吗

Javascript 我可以用传单更改GeoJSON行字符串的填充颜色吗,javascript,leaflet,geojson,Javascript,Leaflet,Geojson,我有一个GeoJSON,里面有很多线串(高程等高线),我想在地图盒/传单地图上绘制 打印时,所有线串似乎形成多边形(即数组中的第一个和最后一个坐标是等效的) 如果线条看起来像多边形,是否可以更改其填充颜色 编辑 以下是我目前拥有的代码: var elevation950Style = { color : "yellow", fillColor : "yellow", opacity : 0.4, weight : 2, }; $.getJSON('950.geo.json', function

我有一个GeoJSON,里面有很多线串(高程等高线),我想在地图盒/传单地图上绘制

打印时,所有线串似乎形成多边形(即数组中的第一个和最后一个坐标是等效的)

如果线条看起来像多边形,是否可以更改其填充颜色

编辑

以下是我目前拥有的代码:

var elevation950Style = {
color : "yellow",
fillColor : "yellow",
opacity : 0.4,
weight : 2,
};

$.getJSON('950.geo.json', function(file) {
   L.geoJson( file ,  { style: elevation950Style } ).addTo(map);
});

这当然是可能的

一个好的方法可能是首先确保您的行字符串实际上是一个循环(如您所说,如果第一个和最后一个坐标相等)。然后简单地将其转换为多边形(基于相同的坐标创建一个新多边形,删除线串),它将根据
fillColor
选项由传单填充


编辑:

您可以在
L.geoJson()
工厂创建循环线字符串后检测它们,使用创建等效的geoJson功能,并用geoJson图层组中新创建的多边形替换循环线字符串:

var myGeoJsonGroup=L.geoJson(myGeoJsonData),//构建您的geoJson层组。
geo,coords,first,last;
myGeoJsonGroup.eachLayer(函数(层){
geo=layer.feature.geometry;
坐标=地理坐标;
第一个=坐标[0];
last=coords[coords.length-1];
如果(geo.type===“LineString”&&first[0]===last[0]&&first[1]==last[1]){
myGeoJsonGroup.removeLayer(层);
myGeoJsonGroup.addData({
键入:“功能”,
属性:layer.feature.properties,
几何图形:{
键入:“多边形”,
坐标:[
coords//外线性环
]
}
});
}
});
myGeoJsonGroup.addTo(map);
免责声明:按原样编写,未经测试


注意:在您的情况下,肯定会有一个接一个的高程等高线。您可能希望为嵌入轮廓构建带有孔的多边形。否则,填充将堆叠,如果它们是透明的,您可能无法获得所需的结果。

如果打印线是SVG的唯一标准,请检查。您可以在SVG路径元素或基本SVG样式中使用CSS类。详细检查以了解此小模块


免责声明:我是geojson2svg的作者

我相信,你可以改变它。你看过文件了吗?谢谢。我将检查每一行字符串以进行双重检查。同时,您能否详细说明“简单地将其转换为多边形(基于相同的坐标创建一个新多边形,删除线串)”?你的意思是改变我将GeoJSON加载到地图上的方式吗?或者修改实际的GeoJSON?我将编辑上面的答案,以便更具体地说明conversion.ghybs。很抱歉成为一个noob,但我认为上面的代码没有向我的“map”变量添加任何内容,对吗?另外,“newPolygons”用于什么?@Rodrigo thx用于指向无用的
newPolygons
。当然,你会在地图的末尾添加
myGeoJsonGroup
!我感谢你在那里付出的努力。因为我几乎完成了这个项目,我将尝试用传单来完成它,但在将来要记住geojson2svg。