For drawing Polygon in OpenLayers 2 we could use as follow:
function drawEnd(){
...
}
function putPoint(){
...
}
function sketchModified(){
...
}
function cancel(){
...
}
var callBackParams = {
"done": drawEnd,
"point": putPoint,
"modify": sketchModified,
"cancel": cancel
}
var drawCrtl = new OpenLayers.Control.DrawFeature(layer, OpenLayers.Handler.Polygon, {callbacks: callBackParams});
map.addControls([drawCrtl]);
drawCrtl.activate();
When we put point to drawing the polygon, the system call putPoint function
. When mouse move over the map, it call sketchModified function
. I want to use these two Event in OpenLayers 3. I define my layer as follow:
var source = new ol.source.Vector({wrapX: false});
var vector = new ol.layer.Vector({
source: source
});
draw = new ol.interaction.Draw({
source: source,
type: 'Polygon'
});
drawStart = function(){
console.log("Salam Bar Mahdi");
}
drawEnd = function(){
console.log("Ya Mahdi");
}
draw.on('drawstart', drawStart);
draw.on('drawend', drawEnd);
var map = new ol.Map({
interactions: ol.interaction.defaults().extend([select, modify, draw]),
target: 'map',
layers: [
new ol.layer.Tile({
title: "Global Imagery",
source: new ol.source.TileWMS({
url: 'http://localhost:8080/geoserver/world/wms?service=WMS',
params: {LAYERS: 'world:worldRaster', VERSION: '1.1.1'}
})
}),
vector
],
view: new ol.View({
projection: 'EPSG:4326',
center: [0, 0],
zoom: 4
})
});
But in Openlayers 3 I saw only drawEnd and DrawStart Event.
How Can I do?
Best Answer
OpenLayers v3.5.0 does not easily support the feature you're looking for, but there is a feature currently in development that you can use.
On
ol.interaction.Draw
, you can specify anol.interaction.DrawGeometryFunctionType
function to handle updates to the current geometry.An example I've written up is shown below:
This is pretty much what the default
geometryFunction
function does, without the new point identification and console logging.A fully functional example is here: http://jsfiddle.net/1a948faa/2/
Note the following caveats: