Remove static members from Draw interaction
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
import Map from '../src/ol/Map.js';
|
import Map from '../src/ol/Map.js';
|
||||||
import View from '../src/ol/View.js';
|
import View from '../src/ol/View.js';
|
||||||
import Polygon from '../src/ol/geom/Polygon.js';
|
import Polygon from '../src/ol/geom/Polygon.js';
|
||||||
import Draw from '../src/ol/interaction/Draw.js';
|
import Draw, {createRegularPolygon, createBox} from '../src/ol/interaction/Draw.js';
|
||||||
import TileLayer from '../src/ol/layer/Tile.js';
|
import TileLayer from '../src/ol/layer/Tile.js';
|
||||||
import VectorLayer from '../src/ol/layer/Vector.js';
|
import VectorLayer from '../src/ol/layer/Vector.js';
|
||||||
import OSM from '../src/ol/source/OSM.js';
|
import OSM from '../src/ol/source/OSM.js';
|
||||||
@@ -35,10 +35,10 @@ function addInteraction() {
|
|||||||
let geometryFunction;
|
let geometryFunction;
|
||||||
if (value === 'Square') {
|
if (value === 'Square') {
|
||||||
value = 'Circle';
|
value = 'Circle';
|
||||||
geometryFunction = Draw.createRegularPolygon(4);
|
geometryFunction = createRegularPolygon(4);
|
||||||
} else if (value === 'Box') {
|
} else if (value === 'Box') {
|
||||||
value = 'Circle';
|
value = 'Circle';
|
||||||
geometryFunction = Draw.createBox();
|
geometryFunction = createBox();
|
||||||
} else if (value === 'Star') {
|
} else if (value === 'Star') {
|
||||||
value = 'Circle';
|
value = 'Circle';
|
||||||
geometryFunction = function(coordinates, geometry) {
|
geometryFunction = function(coordinates, geometry) {
|
||||||
|
|||||||
+57
-47
@@ -22,7 +22,6 @@ import MultiPolygon from '../geom/MultiPolygon.js';
|
|||||||
import MouseSource from '../pointer/MouseSource.js';
|
import MouseSource from '../pointer/MouseSource.js';
|
||||||
import Point from '../geom/Point.js';
|
import Point from '../geom/Point.js';
|
||||||
import Polygon, {fromCircle, makeRegular} from '../geom/Polygon.js';
|
import Polygon, {fromCircle, makeRegular} from '../geom/Polygon.js';
|
||||||
import DrawEventType from '../interaction/DrawEventType.js';
|
|
||||||
import PointerInteraction, {handleEvent as handlePointerEvent} from '../interaction/Pointer.js';
|
import PointerInteraction, {handleEvent as handlePointerEvent} from '../interaction/Pointer.js';
|
||||||
import InteractionProperty from '../interaction/Property.js';
|
import InteractionProperty from '../interaction/Property.js';
|
||||||
import VectorLayer from '../layer/Vector.js';
|
import VectorLayer from '../layer/Vector.js';
|
||||||
@@ -43,13 +42,59 @@ const Mode = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @enum {string}
|
||||||
|
*/
|
||||||
|
const DrawEventType = {
|
||||||
|
/**
|
||||||
|
* Triggered upon feature draw start
|
||||||
|
* @event ol.interaction.Draw.Event#drawstart
|
||||||
|
* @api
|
||||||
|
*/
|
||||||
|
DRAWSTART: 'drawstart',
|
||||||
|
/**
|
||||||
|
* Triggered upon feature draw end
|
||||||
|
* @event ol.interaction.Draw.Event#drawend
|
||||||
|
* @api
|
||||||
|
*/
|
||||||
|
DRAWEND: 'drawend'
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @classdesc
|
||||||
|
* Events emitted by {@link ol.interaction.Draw} instances are instances of
|
||||||
|
* this type.
|
||||||
|
*
|
||||||
|
* @constructor
|
||||||
|
* @extends {ol.events.Event}
|
||||||
|
* @implements {oli.DrawEvent}
|
||||||
|
* @param {ol.interaction.DrawEventType} type Type.
|
||||||
|
* @param {ol.Feature} feature The feature drawn.
|
||||||
|
*/
|
||||||
|
const DrawEvent = function(type, feature) {
|
||||||
|
|
||||||
|
Event.call(this, type);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The feature being drawn.
|
||||||
|
* @type {ol.Feature}
|
||||||
|
* @api
|
||||||
|
*/
|
||||||
|
this.feature = feature;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
inherits(DrawEvent, Event);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @classdesc
|
* @classdesc
|
||||||
* Interaction for drawing feature geometries.
|
* Interaction for drawing feature geometries.
|
||||||
*
|
*
|
||||||
* @constructor
|
* @constructor
|
||||||
* @extends {ol.interaction.Pointer}
|
* @extends {ol.interaction.Pointer}
|
||||||
* @fires ol.interaction.Draw.Event
|
* @fires ol.interaction.DrawEvent
|
||||||
* @param {olx.interaction.DrawOptions} options Options.
|
* @param {olx.interaction.DrawOptions} options Options.
|
||||||
* @api
|
* @api
|
||||||
*/
|
*/
|
||||||
@@ -290,7 +335,7 @@ const Draw = function(options) {
|
|||||||
wrapX: options.wrapX ? options.wrapX : false
|
wrapX: options.wrapX ? options.wrapX : false
|
||||||
}),
|
}),
|
||||||
style: options.style ? options.style :
|
style: options.style ? options.style :
|
||||||
Draw.getDefaultStyleFunction(),
|
getDefaultStyleFunction(),
|
||||||
updateWhileInteracting: true
|
updateWhileInteracting: true
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -331,12 +376,12 @@ inherits(Draw, PointerInteraction);
|
|||||||
/**
|
/**
|
||||||
* @return {ol.StyleFunction} Styles.
|
* @return {ol.StyleFunction} Styles.
|
||||||
*/
|
*/
|
||||||
Draw.getDefaultStyleFunction = function() {
|
function getDefaultStyleFunction() {
|
||||||
const styles = Style.createDefaultEditing();
|
const styles = Style.createDefaultEditing();
|
||||||
return function(feature, resolution) {
|
return function(feature, resolution) {
|
||||||
return styles[feature.getGeometry().getType()];
|
return styles[feature.getGeometry().getType()];
|
||||||
};
|
};
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -589,7 +634,7 @@ Draw.prototype.startDrawing_ = function(event) {
|
|||||||
}
|
}
|
||||||
this.sketchFeature_.setGeometry(geometry);
|
this.sketchFeature_.setGeometry(geometry);
|
||||||
this.updateSketchFeatures_();
|
this.updateSketchFeatures_();
|
||||||
this.dispatchEvent(new Draw.Event(DrawEventType.DRAWSTART, this.sketchFeature_));
|
this.dispatchEvent(new DrawEvent(DrawEventType.DRAWSTART, this.sketchFeature_));
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -751,7 +796,7 @@ Draw.prototype.finishDrawing = function() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// First dispatch event to allow full set up of feature
|
// First dispatch event to allow full set up of feature
|
||||||
this.dispatchEvent(new Draw.Event(DrawEventType.DRAWEND, sketchFeature));
|
this.dispatchEvent(new DrawEvent(DrawEventType.DRAWEND, sketchFeature));
|
||||||
|
|
||||||
// Then insert feature
|
// Then insert feature
|
||||||
if (this.features_) {
|
if (this.features_) {
|
||||||
@@ -797,7 +842,7 @@ Draw.prototype.extend = function(feature) {
|
|||||||
this.finishCoordinate_ = last.slice();
|
this.finishCoordinate_ = last.slice();
|
||||||
this.sketchCoords_.push(last.slice());
|
this.sketchCoords_.push(last.slice());
|
||||||
this.updateSketchFeatures_();
|
this.updateSketchFeatures_();
|
||||||
this.dispatchEvent(new Draw.Event(DrawEventType.DRAWSTART, this.sketchFeature_));
|
this.dispatchEvent(new DrawEvent(DrawEventType.DRAWSTART, this.sketchFeature_));
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -854,13 +899,8 @@ Draw.prototype.updateState_ = function() {
|
|||||||
* polygon.
|
* polygon.
|
||||||
* @api
|
* @api
|
||||||
*/
|
*/
|
||||||
Draw.createRegularPolygon = function(opt_sides, opt_angle) {
|
export function createRegularPolygon(opt_sides, opt_angle) {
|
||||||
return (
|
return (
|
||||||
/**
|
|
||||||
* @param {ol.Coordinate|Array.<ol.Coordinate>|Array.<Array.<ol.Coordinate>>} coordinates
|
|
||||||
* @param {ol.geom.SimpleGeometry=} opt_geometry
|
|
||||||
* @return {ol.geom.SimpleGeometry}
|
|
||||||
*/
|
|
||||||
function(coordinates, opt_geometry) {
|
function(coordinates, opt_geometry) {
|
||||||
const center = coordinates[0];
|
const center = coordinates[0];
|
||||||
const end = coordinates[1];
|
const end = coordinates[1];
|
||||||
@@ -874,7 +914,7 @@ Draw.createRegularPolygon = function(opt_sides, opt_angle) {
|
|||||||
return geometry;
|
return geometry;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -884,13 +924,8 @@ Draw.createRegularPolygon = function(opt_sides, opt_angle) {
|
|||||||
* @return {ol.DrawGeometryFunctionType} Function that draws a box-shaped polygon.
|
* @return {ol.DrawGeometryFunctionType} Function that draws a box-shaped polygon.
|
||||||
* @api
|
* @api
|
||||||
*/
|
*/
|
||||||
Draw.createBox = function() {
|
export function createBox() {
|
||||||
return (
|
return (
|
||||||
/**
|
|
||||||
* @param {Array.<ol.Coordinate>} coordinates
|
|
||||||
* @param {ol.geom.SimpleGeometry=} opt_geometry
|
|
||||||
* @return {ol.geom.SimpleGeometry}
|
|
||||||
*/
|
|
||||||
function(coordinates, opt_geometry) {
|
function(coordinates, opt_geometry) {
|
||||||
const extent = boundingExtent(coordinates);
|
const extent = boundingExtent(coordinates);
|
||||||
const geometry = opt_geometry || new Polygon(null);
|
const geometry = opt_geometry || new Polygon(null);
|
||||||
@@ -904,7 +939,7 @@ Draw.createBox = function() {
|
|||||||
return geometry;
|
return geometry;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -931,29 +966,4 @@ function getMode(type) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @classdesc
|
|
||||||
* Events emitted by {@link ol.interaction.Draw} instances are instances of
|
|
||||||
* this type.
|
|
||||||
*
|
|
||||||
* @constructor
|
|
||||||
* @extends {ol.events.Event}
|
|
||||||
* @implements {oli.DrawEvent}
|
|
||||||
* @param {ol.interaction.DrawEventType} type Type.
|
|
||||||
* @param {ol.Feature} feature The feature drawn.
|
|
||||||
*/
|
|
||||||
Draw.Event = function(type, feature) {
|
|
||||||
|
|
||||||
Event.call(this, type);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The feature being drawn.
|
|
||||||
* @type {ol.Feature}
|
|
||||||
* @api
|
|
||||||
*/
|
|
||||||
this.feature = feature;
|
|
||||||
|
|
||||||
};
|
|
||||||
inherits(Draw.Event, Event);
|
|
||||||
|
|
||||||
export default Draw;
|
export default Draw;
|
||||||
|
|||||||
@@ -1,21 +0,0 @@
|
|||||||
/**
|
|
||||||
* @module ol/interaction/DrawEventType
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @enum {string}
|
|
||||||
*/
|
|
||||||
export default {
|
|
||||||
/**
|
|
||||||
* Triggered upon feature draw start
|
|
||||||
* @event ol.interaction.Draw.Event#drawstart
|
|
||||||
* @api
|
|
||||||
*/
|
|
||||||
DRAWSTART: 'drawstart',
|
|
||||||
/**
|
|
||||||
* Triggered upon feature draw end
|
|
||||||
* @event ol.interaction.Draw.Event#drawend
|
|
||||||
* @api
|
|
||||||
*/
|
|
||||||
DRAWEND: 'drawend'
|
|
||||||
};
|
|
||||||
@@ -12,7 +12,7 @@ import MultiPoint from '../../../../src/ol/geom/MultiPoint.js';
|
|||||||
import MultiPolygon from '../../../../src/ol/geom/MultiPolygon.js';
|
import MultiPolygon from '../../../../src/ol/geom/MultiPolygon.js';
|
||||||
import Point from '../../../../src/ol/geom/Point.js';
|
import Point from '../../../../src/ol/geom/Point.js';
|
||||||
import Polygon from '../../../../src/ol/geom/Polygon.js';
|
import Polygon from '../../../../src/ol/geom/Polygon.js';
|
||||||
import Draw from '../../../../src/ol/interaction/Draw.js';
|
import Draw, {createRegularPolygon, createBox} from '../../../../src/ol/interaction/Draw.js';
|
||||||
import Interaction from '../../../../src/ol/interaction/Interaction.js';
|
import Interaction from '../../../../src/ol/interaction/Interaction.js';
|
||||||
import VectorLayer from '../../../../src/ol/layer/Vector.js';
|
import VectorLayer from '../../../../src/ol/layer/Vector.js';
|
||||||
import PointerEvent from '../../../../src/ol/pointer/PointerEvent.js';
|
import PointerEvent from '../../../../src/ol/pointer/PointerEvent.js';
|
||||||
@@ -1054,13 +1054,13 @@ describe('ol.interaction.Draw', function() {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('ol.interaction.Draw.createRegularPolygon', function() {
|
describe('createRegularPolygon', function() {
|
||||||
it('creates a regular polygon in Circle mode', function() {
|
it('creates a regular polygon in Circle mode', function() {
|
||||||
const draw = new Draw({
|
const draw = new Draw({
|
||||||
source: source,
|
source: source,
|
||||||
type: 'Circle',
|
type: 'Circle',
|
||||||
geometryFunction:
|
geometryFunction:
|
||||||
Draw.createRegularPolygon(4, Math.PI / 4)
|
createRegularPolygon(4, Math.PI / 4)
|
||||||
});
|
});
|
||||||
map.addInteraction(draw);
|
map.addInteraction(draw);
|
||||||
|
|
||||||
@@ -1084,12 +1084,12 @@ describe('ol.interaction.Draw', function() {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('ol.interaction.Draw.createBox', function() {
|
describe('createBox', function() {
|
||||||
it('creates a box-shaped polygon in Circle mode', function() {
|
it('creates a box-shaped polygon in Circle mode', function() {
|
||||||
const draw = new Draw({
|
const draw = new Draw({
|
||||||
source: source,
|
source: source,
|
||||||
type: 'Circle',
|
type: 'Circle',
|
||||||
geometryFunction: Draw.createBox()
|
geometryFunction: createBox()
|
||||||
});
|
});
|
||||||
map.addInteraction(draw);
|
map.addInteraction(draw);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user