#javascript #leaflet #polygon #geojson #leaflet-geoman
#javascript #листовка #полигон #geojson #листовка-geoman
Вопрос:
Я создаю приложение, которое требует выбора нескольких объектов polygon из файла GeoJSON и выделения их.
Мне удалось добиться этого с помощью плагина Leaflet-Geoman и прикрепления listener map.on(‘pm:create’) и используя LatLngBounds нарисованной фигуры, чтобы сделать выделение из файла с использованием intersects.
Однако, поскольку я также использую LatLngBounds из объектов GeoJSON, он выбирает объекты, которые находятся за пределами экстентов нарисованной фигуры. Я знаю, что это связано с использованием LatLngBounds, который создает ограничивающую рамку, используя северо-восточный и юго-западный углы объекта, а не просто геометрию самого объекта.
Есть ли способ сделать правильный выбор с помощью плагина pm: create или есть лучший способ сделать это?
Ниже приведен фрагмент кода, который я использую.
Ответ №1:
Вы можете использовать мощную библиотеку Turf.js : Turf CDN
map.on('pm:create',function (e) {
if(e.shape == 'Rectangle' || e.shape == "Polygon"){
geoJsonSelect = e.layer.toGeoJSON();
var layers = map.pm.getGeomanLayers();
layers = layers.filter(x => x !== e.layer);
layers.forEach((layer)=>{
if(turf.booleanContains(geoJsonSelect,layer.toGeoJSON())){
console.log("Contains")
}
});
e.layer.remove();
}
});