リーフレットJSがGeoJSONシェイプをポリゴンの穴として追加する


9

geojsonがすでに含まれているデータセットがあります。次のコード行でマップに追加できます。

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

そして私はこれを手に入れます 地図にプロットされたgeojson

しかし、私はこれを達成したいと思います。周囲の領域が覆われ、私のgeojson形状がその中央にある穴です。

地図の穴としてのgeojson

リーフレットのドキュメントによると

latlngsの配列の配列を渡すことにより、穴のあるポリゴンを作成することもできます。最初のlatlngs配列は外部リングを表し、残りは内部の穴を表します。

理論的には次のようなものです:

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

私の問題は、この関数がdata.geojsonまたはdata.geojson.coordinatesを2番目のパラメーター(coordinatesOfShapeHole)として渡すことを好まないようです。

L.Polygon関数が満足できる形式にdata.geojsonを変換する方法はありますか?

あるいは、同じことをL.geoJsonで行いますか?

回答:


7

これはうまくいくはずです。使用しているリーフレットのバージョンは何ですか?

ここで、この 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

それは問題ではないはずです。jsFiddleをフォークしてL.geoJsonを使用しました。jsfiddle.net/goldrydigital/xa6vg5zj
Dennis Bauszus

素晴らしい感謝。geojsonに、標準のポリゴンと同様のマルチ配列を渡すことができるポリゴン定義が含まれていることに気付きませんでした。
elMarquis 2015年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.