Leaflet-PIPは、L.GeoJSON
グループが第2引数として渡される必要があることに注意してください。あなたのGeoJSONデータ(L.geoJson(myGeoJSONdata)
)からビルドするのは簡単です。実際には、ちょうどL.LayerGroup
が必要です。
次に、Leaflet-PIPはネストされたレイヤーグループを処理していないようです。
データはMultiPolygonsで作成され、リーフレットはL.GeoJSONグループ内のL.Polygon
のグループに変換されます。したがってリーフレット-PIPはそれらを処理しません。
Leaflet-PIPで正しく使用するには、グループを「平坦化」する必要があります。グループを解析して、グループ以外のすべてのレイヤーを別のグループに抽出します。
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);
デモ:https://plnkr.co/edit/6hRKHHtvWOVdWg4jZ8AJ?p=preview
私は作業リンクにリーフレット-PIPを更新したが、これはもう動作するようには思えない、結果の配列が空であるhttp://plnkr.co/edit/ WtLDY9eL6ZpBUdeV8VQm – Sam
@Samは頭をアップしてくれてありがとう。私はリーフレットピップとリーフレットに新しいCDNを使用するようにデモを更新しましたが、それでも0.7.7です。リーフレット1.0のためにリーフレットピップに何が変わったのか分かりませんか? – ghybs
Polygonクラスが 'draw:created'引数でどのようにタイプされているかの変更により、チラシ1.0のようなものはpip(まだ?)でサポートされていません(e.layerはもう同じシグネチャではありません)... shame :( – Sam