O folheto JS adiciona a forma GeoJSON como um furo em um polígono

9

Eu tenho um conjunto de dados que já contém geojson. Posso adicioná-lo ao meu mapa com a seguinte linha de código.

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

E eu entendo isso geojson plotado no mapa

Mas eu quero conseguir isso, onde a área circundante é coberta e minha forma geojson é um buraco no meio dela.

geojson como um buraco no mapa

De acordo com a documentação do folheto

Você também pode criar um polígono com furos passando uma matriz de matrizes de latlngs, com a primeira matriz de latlngs representando o anel externo, enquanto o restante representa os orifícios internos.

Então, em teoria, algo como:

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

Meu problema é que essa função não parece gostar de eu passar data.geojson ou data.geojson.coordinates como o segundo parâmetro (coordatesOfShapeHole);

Existe alguma maneira de converter data.geojson em um formato com o qual a função L.Polygon esteja satisfeita?

Ou, alternativamente, fazer a mesma coisa, mas com L.geoJson?

elMarquis
fonte

Respostas:

7

Isso deve funcionar. Qual versão do Leaflet você está usando?

Aqui, dê uma olhada neste jsFiddle.

É importante que você arrume as matrizes corretamente.

A primeira matriz é o objeto de polígono [aqui o anel externo [aqui alguns [lat, lon], [,] fecham o anel externo], depois o anel interno [aqui alguns [lat, lon], [,] fecha o anel interno] feche o polígono].

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);
Dennis Bauszus
fonte
11
Oi obrigado Isso funciona muito bem se eu estiver lidando com um polígono direto, mas meus dados estão no formato geojson. Você sabe se existe uma maneira de converter o geojson em coordenadas poligonais. Ou alcançá-lo usando L.geoJson?
elMarquis
Isso não deveria ser um problema. Bifurquei o jsFiddle para usar L.geoJson. jsfiddle.net/goldrydigital/xa6vg5zj
Dennis Bauszus
Agradecimentos brilhantes. Eu não tinha percebido que o geojson continha uma definição de polígono que pode ser transmitida em uma matriz múltipla semelhante ao polígono padrão.
elMarquis