我使用leaflet-pip时遇到问题: 我从这里得到geojson数据:http://polygons.openstreetmap.fr/get_geojson.py?id=1320234¶ms=0
我应该如何用这样的数据调用leafletPip.pointInLayer? 我有几次尝试,但它返回空数组,但我知道这些层中有一些标记。
答案 0 :(得分:0)
为了以防万一,请先注意Leaflet-PIP需要将L.GeoJSON
组作为第二个参数传递。从GeoJSON数据(L.geoJson(myGeoJSONdata)
)构建一个数据是微不足道的。实际上,它甚至只需要一个L.LayerGroup
。
然后,似乎Leaflet-PIP不处理嵌套的图层组。
您的数据由MultiPolygons组成,Leaflet在L.GeoJSON组内转换为L.Polygon
组。因此,Leaflet-PIP不会处理它们。
所以你只需要'#34; flatten"您的小组才能正确使用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);