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?

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);

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.