OpenLayers. Как работает оператор intersects в функции filter?

Я создаю инструмент для выборки объектов карты через полигоны, созданные функцией Draw и при попытке использования оператора intersects в функции filter ничего не меняется, ошибок программа не выдает, но продолжает выделять объекты внутри extent'а созданного вокруг полигона, т.е. фильтр будто бы просто игнорируется. Помогите разобраться с фильтрацией ибо на официальном сайте про это практически ничего не сказано.

// Импорт используемых ресурсов
import {Map, View} from 'ol';
import VectorSource from 'ol/source/Vector.js';
import GeoJSON from 'ol/format/GeoJSON.js';
import VectorImageLayer from 'ol/layer/VectorImage.js';
import {Fill, Stroke, Style} from 'ol/style.js';
import {DragBox, Select} from 'ol/interaction.js';
import Draw from 'ol/interaction/Draw.js';
import * as olExtent from 'ol/extent';
import {all, platformModifierKeyOnly} from 'ol/events/condition.js';
import Intersects from 'ol/format/filter/Intersects.js';
import {useGeographic} from 'ol/proj.js';
useGeographic();

// Добавляем слой с субъектами РФ:
const SourceSubjectsRF = new VectorSource({  // Источник с субъектами РФ
  url: "./source/SubjectsRF.geojson",
  format: new GeoJSON(),
});

const SubjectsRF = new VectorImageLayer({  // Слой карты с субъектами РФ
title: "Субъекты РФ",
source: SourceSubjectsRF,
 style: new Style({
  fill: new Fill({
     color: 'transparent',
    }),
  stroke: new Stroke({
     width: '2.5',
     color: '#008080    '
    })
    }),
}); 

// Добавляем слой с МО РФ
const SourceRaionRF = new VectorSource({   // Источник с МО РФ
  url: "./source/RaionRF.geojson",
    format: new GeoJSON(),
});

const RaionRF = new VectorImageLayer({   // Слой с  МО РФ
  title: "Муниципальные районы РФ",
  visible: true,
  source: SourceRaionRF,
  style: new Style({
    fill: new Fill({
      color: 'transparent',
    }),
    stroke: new Stroke({
      width: '1.5',
      color: '#20B2AA'
     })
    }),
}); 

const selectedFeatures = new VectorSource;  // Источник с выделенными объектами

const SelectFeatures = new VectorImageLayer({  // Слой с выделенными объектами
  title: "Выделенные объекты",
  visible: true,
  source: selectedFeatures,
  style: new Style({
    fill: new Fill({
      color: '#E0FFFF   ',
    }),
    stroke: new Stroke({
      color: '#00CED1',
      width: 2.5,
    }),
  }),
}); 

// Добавляем карту
const map = new Map({
  layers: [SelectFeatures,SubjectsRF],
  target: 'map',
  view: new View({
    center: [37.617520, 55.755865 ],
    zoom: 5,
    constrainRotation: 16,
  }),
}); 


// Функция выборки, основанная на нарисованном полигоне
const DrawSource = new VectorSource;  // Источник с нарисованными объектами
const Polygon = new Draw({
  condition: platformModifierKeyOnly,
  type: 'Polygon',
  geometryName: 'DrawPolygon', // Название нарисованных полигонов
  source: DrawSource,
});
map.addInteraction(Polygon);

DrawSource.on('addfeature', function () {
  console.log(DrawSource.getFeatures());
  const PolyExtent = DrawSource.getExtent();  // Охват нарисованного объекта
  const ExtentFeatures = SourceSubjectsRF.getFeaturesInExtent(PolyExtent)  // Объекты карты, попавшие в охват (массив)
  .filter((feature) =>  // "feature" - текущий обрабатываемый элемент полученного массива
    new Intersects(feature, 'DrawPolygon',),
  );  
  selectedFeatures.addFeatures(ExtentFeatures);
  console.log(selectedFeatures); 

})

// Добавление счетчика выделенных объектов
const FCounter = document.getElementById('FCounter');  // Счетчик выделенных объектов из html
selectedFeatures.on(['addfeature','removefeature'], function () {
FCounter.innerHTML = ' ' +selectedFeatures.getFeatures().length+ " выделенных объектов";
console.log(FCounter);
})

// Очистка выделения
Polygon.on('drawstart', function () {
  selectedFeatures.clear();
  DrawSource.clear();
});


Ответы (0 шт):