let ol = require('openlayers');
let jsts = require('jsts/dist/jsts');
let parser = new jsts.io.OL3Parser(undefined, ol);
let AbstractOperation = require('../operations/abstract');
let IntersectsResult = require('../operations/types/intersectsResult');
/**
* Класс Intersects
* @extends AbstractOperation
*/
class Intersects extends AbstractOperation {
/**
* Создает экземпляр класса Intersects
*/
constructor() {
super()
}
/**
*
* @param params
* @return {IntersectsResult}
*/
execute(params) {
let intersects = operation(params.featureA, params.featureB);
return new IntersectsResult({
feature: intersects,
geometry: intersects.getGeometry()
})
}
}
function operation(featureA, featureB) {
let geomA = parser.read(featureA.getGeometry());
let geomB = parser.read(featureB.getGeometry());
let result = geomA.intersection(geomB);
return new ol.Feature({
geometry: parser.write(result)
});
}
module.exports = Intersects;