In der Broschüre JS wird die GeoJSON-Form als Loch in einem Polygon hinzugefügt

9

Ich habe einen Datensatz, der bereits Geojson enthält. Ich kann es mit der folgenden Codezeile zu meiner Karte hinzufügen.

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

Und ich verstehe das Geojson auf Karte gezeichnet

Aber ich möchte dies erreichen, wo die Umgebung bedeckt ist und meine Geojson-Form ein Loch in der Mitte ist.

Geojson als Loch in der Karte

Gemäß der Packungsbeilage

Sie können auch ein Polygon mit Löchern erstellen, indem Sie ein Array von Latlngs-Arrays übergeben, wobei das erste Latlngs-Array den Außenring darstellt, während die übrigen die Löcher im Inneren darstellen.

Also theoretisch so etwas wie:

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

Mein Problem ist, dass diese Funktion es nicht zu mögen scheint, wenn ich data.geojson oder data.geojson.coordinates als zweiten Parameter (koordinatesOfShapeHole) übergebe.

Gibt es eine Möglichkeit, data.geojson in ein Format zu konvertieren, mit dem die L.Polygon-Funktion zufrieden ist?

Oder alternativ das Gleiche tun, aber mit L.geoJson?

elMarquis
quelle

Antworten:

7

Das sollte funktionieren. Welche Version von Leaflet verwenden Sie?

Schauen Sie sich hier diese jsFiddle an.

Es ist wichtig, dass Sie die richtigen Arrays haben.

Das erste Array ist das Polygonobjekt [hier der äußere Ring [hier einige [lat, lon], [,] schließen den äußeren Ring], dann der innere Ring [hier einige [lat, lon], [,] schließen die Innenring] Polygon schließen].

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
quelle
1
Hallo danke. Das funktioniert gut, wenn ich es mit einem einfachen Polygon zu tun habe, meine Daten jedoch im Geojson-Format vorliegen. Wissen Sie, ob es eine Möglichkeit gibt, den Geojson in Polygonkoordinaten umzuwandeln? Oder erreichen Sie es mit L.geoJson?
ElMarquis
Das sollte kein Problem sein. Ich gabelte die jsFiddle, um L.geoJson zu verwenden. jsfiddle.net/goldrydigital/xa6vg5zj
Dennis Bauszus
Genial danke. Ich hatte nicht bemerkt, dass der Geojson eine Polygondefinition enthält, die einem Multi-Array ähnlich dem Standardpolygon übergeben werden kann.
ElMarquis