let ol = require('openlayers');
let jsts = require('jsts/dist/jsts');
let parser = new jsts.io.OL3Parser(undefined, ol);
let AbstractOperation = require('../operations/abstract');
let BufferResult = require('./types/bufferResult');
/**
* Класс Buffer
* @extends AbstractOperation
*/
class Buffer extends AbstractOperation {
/**
* Создает экземпляр класса Buffer
*/
constructor() {
super();
}
/**
*
* @param feature
* @param radius
* @return {BufferResult}
*/
execute(feature, radius) {
let buffer = getFeatureBuffer(feature, radius);
return new BufferResult({
geometry: buffer.getGeometry(),
feature: buffer
});
}
}
function getFeatureBuffer(feature, bufferSize) {
let geom = parser.read(feature.getGeometry());
let buffer = geom.buffer(bufferSize);
return new ol.Feature({
geometry: parser.write(buffer)
});
}
module.exports = Buffer;