Source: geometry/operations/intersects.js

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;