Leaflet JS menambahkan bentuk GeoJSON sebagai lubang di poligon

9

Saya memiliki dataset yang sudah berisi geojson. Saya dapat menambahkannya ke peta saya dengan baris kode berikut.

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

Dan saya mengerti geojson diplot di peta

Tapi saya ingin mencapai ini, di mana daerah sekitarnya ditutupi dan bentuk geojson saya adalah lubang di tengahnya.

geojson sebagai lubang di peta

Menurut dokumentasi selebaran

Anda juga dapat membuat poligon berlubang dengan melewatkan array array latlng, dengan array latlng pertama mewakili cincin eksterior sedangkan sisanya mewakili lubang di dalamnya.

Jadi secara teori kira-kira seperti:

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

Masalah saya adalah fungsi ini sepertinya tidak suka saya meneruskan data.geojson atau data.geojson.coordinates sebagai parameter kedua (koordinatOfShapeHole);

Apakah ada cara untuk mengubah data.geojson ke dalam format yang disukai oleh fungsi L.Polygon?

Atau alternatifnya melakukan hal yang sama tetapi dengan L.geoJson?

elMarquis
sumber

Jawaban:

7

Ini seharusnya bekerja. Versi Leaflet mana yang Anda gunakan?

Di sini, lihat jsFiddle ini .

Penting bagi Anda untuk mengatur array dengan benar.

Array pertama adalah objek poligon [di sini cincin luar [di sini beberapa [lat, lon], [,] tutup cincin luar], kemudian cincin bagian dalam [di sini beberapa [lat, lon], [,] tutup cincin dalam] tutup poligon].

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
sumber
1
Hai terima kasih. Itu bekerja dengan baik jika saya berurusan dengan poligon langsung, tetapi data saya dalam format geojson. Apakah Anda tahu jika ada cara untuk mengubah geojson menjadi koordinat poligon. Atau mencapainya menggunakan L.geoJson?
elMarquis
Itu seharusnya tidak menjadi masalah. Saya memotong jsFiddle untuk menggunakan L.geoJson. jsfiddle.net/goldrydigital/xa6vg5zj
Dennis Bauszus
Terima kasih brilian. Saya tidak menyadari geojson berisi definisi poligon yang dapat dilewatkan multi-array yang mirip dengan poligon standar.
elMarquis