give ModifyFeature control a vertexRenderIntent property. r=tschaub (closes #2955)
git-svn-id: http://svn.openlayers.org/trunk/openlayers@10938 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
@@ -114,6 +114,15 @@ OpenLayers.Control.ModifyFeature = OpenLayers.Class(OpenLayers.Control, {
|
|||||||
*/
|
*/
|
||||||
virtualStyle: null,
|
virtualStyle: null,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* APIProperty: vertexRenderIntent
|
||||||
|
* {String} The renderIntent to use for vertices. If no <virtualStyle> is
|
||||||
|
* provided, this renderIntent will also be used for virtual vertices, with
|
||||||
|
* a fillOpacity and strokeOpacity of 0.3. Default is null, which means
|
||||||
|
* that the layer's default style will be used for vertices.
|
||||||
|
*/
|
||||||
|
vertexRenderIntent: null,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* APIProperty: mode
|
* APIProperty: mode
|
||||||
* {Integer} Bitfields specifying the modification mode. Defaults to
|
* {Integer} Bitfields specifying the modification mode. Defaults to
|
||||||
@@ -193,11 +202,14 @@ OpenLayers.Control.ModifyFeature = OpenLayers.Class(OpenLayers.Control, {
|
|||||||
* control.
|
* control.
|
||||||
*/
|
*/
|
||||||
initialize: function(layer, options) {
|
initialize: function(layer, options) {
|
||||||
|
options = options || {};
|
||||||
this.layer = layer;
|
this.layer = layer;
|
||||||
this.vertices = [];
|
this.vertices = [];
|
||||||
this.virtualVertices = [];
|
this.virtualVertices = [];
|
||||||
this.virtualStyle = OpenLayers.Util.extend({},
|
this.virtualStyle = OpenLayers.Util.extend({},
|
||||||
this.layer.style || this.layer.styleMap.createSymbolizer());
|
this.layer.style ||
|
||||||
|
this.layer.styleMap.createSymbolizer(null, options.vertexRenderIntent)
|
||||||
|
);
|
||||||
this.virtualStyle.fillOpacity = 0.3;
|
this.virtualStyle.fillOpacity = 0.3;
|
||||||
this.virtualStyle.strokeOpacity = 0.3;
|
this.virtualStyle.strokeOpacity = 0.3;
|
||||||
this.deleteCodes = [46, 68];
|
this.deleteCodes = [46, 68];
|
||||||
@@ -622,6 +634,7 @@ OpenLayers.Control.ModifyFeature = OpenLayers.Class(OpenLayers.Control, {
|
|||||||
if(geometry.CLASS_NAME == "OpenLayers.Geometry.Point") {
|
if(geometry.CLASS_NAME == "OpenLayers.Geometry.Point") {
|
||||||
vertex = new OpenLayers.Feature.Vector(geometry);
|
vertex = new OpenLayers.Feature.Vector(geometry);
|
||||||
vertex._sketch = true;
|
vertex._sketch = true;
|
||||||
|
vertex.renderIntent = control.vertexRenderIntent;
|
||||||
control.vertices.push(vertex);
|
control.vertices.push(vertex);
|
||||||
} else {
|
} else {
|
||||||
var numVert = geometry.components.length;
|
var numVert = geometry.components.length;
|
||||||
@@ -633,6 +646,7 @@ OpenLayers.Control.ModifyFeature = OpenLayers.Class(OpenLayers.Control, {
|
|||||||
if(component.CLASS_NAME == "OpenLayers.Geometry.Point") {
|
if(component.CLASS_NAME == "OpenLayers.Geometry.Point") {
|
||||||
vertex = new OpenLayers.Feature.Vector(component);
|
vertex = new OpenLayers.Feature.Vector(component);
|
||||||
vertex._sketch = true;
|
vertex._sketch = true;
|
||||||
|
vertex.renderIntent = control.vertexRenderIntent;
|
||||||
control.vertices.push(vertex);
|
control.vertices.push(vertex);
|
||||||
} else {
|
} else {
|
||||||
collectComponentVertices(component);
|
collectComponentVertices(component);
|
||||||
|
|||||||
@@ -473,9 +473,13 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
function test_onModificationStart(t) {
|
function test_onModificationStart(t) {
|
||||||
t.plan(1);
|
t.plan(5);
|
||||||
var map = new OpenLayers.Map("map");
|
var map = new OpenLayers.Map("map");
|
||||||
var layer = new OpenLayers.Layer.Vector();
|
var layer = new OpenLayers.Layer.Vector(null, {
|
||||||
|
styleMap: new OpenLayers.StyleMap({
|
||||||
|
"vertex": new OpenLayers.Style({foo: "bar"})
|
||||||
|
}, {extendDefault: false})
|
||||||
|
});
|
||||||
map.addLayer(layer);
|
map.addLayer(layer);
|
||||||
var control = new OpenLayers.Control.ModifyFeature(layer);
|
var control = new OpenLayers.Control.ModifyFeature(layer);
|
||||||
map.addControl(control);
|
map.addControl(control);
|
||||||
@@ -483,14 +487,38 @@
|
|||||||
|
|
||||||
// make sure onModificationStart is called on feature selection
|
// make sure onModificationStart is called on feature selection
|
||||||
var testFeature = new OpenLayers.Feature.Vector(
|
var testFeature = new OpenLayers.Feature.Vector(
|
||||||
new OpenLayers.Geometry.Point(Math.random(), Math.random())
|
OpenLayers.Geometry.fromWKT("LINESTRING(3 4,10 50,20 25)")
|
||||||
);
|
);
|
||||||
|
layer.addFeatures([testFeature]);
|
||||||
control.onModificationStart = function(feature) {
|
control.onModificationStart = function(feature) {
|
||||||
t.eq(feature.id, testFeature.id,
|
t.eq(feature.id, testFeature.id,
|
||||||
"onModificationStart called with the right feature");
|
"onModificationStart called with the right feature");
|
||||||
};
|
};
|
||||||
control.selectFeature(testFeature);
|
control.selectFeature(testFeature);
|
||||||
|
|
||||||
|
// make sure styles are set correctly from default style
|
||||||
|
t.eq(control.virtualStyle, OpenLayers.Util.applyDefaults({
|
||||||
|
strokeOpacity: 0.3,
|
||||||
|
fillOpacity: 0.3
|
||||||
|
}, OpenLayers.Feature.Vector.style["default"]), "virtual style set correctly");
|
||||||
|
var vertex = layer.features[layer.features.length-1];
|
||||||
|
t.eq(vertex.renderIntent, null, "vertex style set correctly - uses default style");
|
||||||
|
control.unselectFeature(testFeature);
|
||||||
|
|
||||||
|
// make sure styles are set correctly with vertexRenderIntent
|
||||||
|
control = new OpenLayers.Control.ModifyFeature(layer, {vertexRenderIntent: "vertex"});
|
||||||
|
map.addControl(control);
|
||||||
|
control.activate();
|
||||||
|
control.selectFeature(testFeature);
|
||||||
|
t.eq(control.virtualStyle, {
|
||||||
|
strokeOpacity: 0.3,
|
||||||
|
fillOpacity: 0.3,
|
||||||
|
foo: "bar"
|
||||||
|
}, "virtual style set correctly");
|
||||||
|
var vertex = layer.features[layer.features.length-1];
|
||||||
|
t.eq(vertex.renderIntent, "vertex", "vertex style set correctly - uses 'vertex' renderIntent");
|
||||||
|
control.unselectFeature(testFeature);
|
||||||
|
|
||||||
map.destroy();
|
map.destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user