Nur für den Fall, beachten Sie zuerst, dass Leaflet-PIP eine L.GeoJSON
Gruppe als zweites Argument übergeben werden muss. Es ist trivial, einen aus Ihren GeoJSON-Daten zu erstellen (L.geoJson(myGeoJSONdata)
). Eigentlich braucht es sogar nur eine L.LayerGroup
.
Dann scheint es, dass Leaflet-PIP nicht verschachtelte Layer-Gruppen behandelt.
Ihre Daten bestehen aus MultiPolygons, die Leaflet in Gruppen von L.Polygon
innerhalb der L.GeoJSON-Gruppe konvertiert. Daher verarbeitet Leaflet-PIP sie nicht.
Sie müssen also nur Ihre Gruppe "abflachen", bevor Sie sie richtig mit Leaflet-PIP verwenden können. Parsen Sie die Gruppe und extrahieren Sie alle Nichtgruppenebenen in eine andere Gruppe.
var gjLayer = L.geoJson(myGeoJSONdata).addTo(map);
var groupOfNonGroup = L.layerGroup();
function copyToGroupOfNonGroup(group) {
group.eachLayer(function (layer) {
if (layer instanceof L.LayerGroup) {
copyToGroupOfNonGroup(layer);
} else {
layer.addTo(groupOfNonGroup);
}
});
}
copyToGroupOfNonGroup(gjLayer);
var results = leafletPip.pointInLayer([lng, lat], groupOfNonGroup);
Demo: https://plnkr.co/edit/6hRKHHtvWOVdWg4jZ8AJ?p=preview
ich das Faltblatt-pip auf einen Arbeits Link aktualisiert haben, aber das scheint nicht mehr zu funktionieren, das resultierende Array leer http://plnkr.co/edit/ WtLDY9eL6ZpBUdeV8VQm – Sam
@Sam danke für die Köpfe hoch. Ich habe die Demo aktualisiert, um das neue CDN für Flugblätter und Flugblätter zu verwenden, aber immer noch Version 0.7.7. Nicht sicher, was sich in Flugblatt-Pip für Flugblatt 1.0 geändert hat? – ghybs
Scheint so, als ob das Flugblatt 1.0 nicht von pip unterstützt wird (noch?) Aufgrund von Änderungen in der Art, wie Polygon-Klassen in das "draw: created" -Argument eingegeben werden (e.layer ist nicht mehr dieselbe Signatur) ... schade :( – Sam