Leaflet JS将GeoJSON形状添加为多边形中的孔


9

我有一个已经包含geojson的数据集。我可以使用以下代码将其添加到地图中。

L.geoJson(data.geojson).addTo(map);

我明白了 在地图上绘制的geojson

但我想实现这一目标,将周围的区域覆盖起来,我的geojson形状在其中部形成一个孔。

geojson作为地图中的孔

根据传单文档

您还可以通过传递latlngs数组的数组来创建带有孔的多边形,第一个latlngs数组代表外环,其余的latlngs数组代表内部的孔。

所以从理论上说:

var scotland = [[60,-13],[60,0],[50,4],[50,-13]];
L.Polygon([scotland,coordinatesOfShapeHole].addTo(map);

我的问题是此函数似乎不像我传入data.geojson或data.geojson.coordinates作为第二个参数(coordinatesOfShapeHole);

有什么方法可以将data.geojson转换为L.Polygon函数满意的格式?

还是用L.geoJson做同样的事情?

Answers:


7

这应该工作。您正在使用哪个版本的Leaflet?

在这里,看看这个 jsFiddle。

重要的是您要正确设置数组。

第一个数组是多边形对象[在这里外环[在这里[lat,lon],[,]关闭外环],然后是内环[在这里一些[lat,lon],[,]关闭内环[关闭多边形]。

scotland = L.polygon([[[60,-13],[60,0],[50,4],[50,-13]],
                  [[55.7,-4.5],[56,-4.5],[56,-4],[55.7,-4]]]);
scotland.addTo(map);

1
你好谢谢。如果我要处理一个简单的多边形,那很好用,但是我的数据是geojson格式。您是否知道是否可以将geojson转换为多边形坐标。还是使用L.geoJson实现它?
elMarquis 2015年

那不应该是问题。我分叉了jsFiddle以使用L.geoJson。jsfiddle.net/goldrydigital/xa6vg5zj
Dennis Bauszus 2015年

非常感谢。我还没有意识到geojson包含可以通过类似于标准多边形的多数组传递的多边形定义。
elMarquis 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.