Adding a featureadded event to the draw feature control event types. First tests ever for the draw feature control. Thanks sbenthall for the patch. r=me (closes #1508)
git-svn-id: http://svn.openlayers.org/trunk/openlayers@7601 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
@@ -29,6 +29,14 @@ OpenLayers.Control.DrawFeature = OpenLayers.Class(OpenLayers.Control, {
|
|||||||
*/
|
*/
|
||||||
callbacks: null,
|
callbacks: null,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constant: EVENT_TYPES
|
||||||
|
*
|
||||||
|
* Supported event types:
|
||||||
|
* - *featureadded* Triggered when a feature is added
|
||||||
|
*/
|
||||||
|
EVENT_TYPES: ["featureadded"],
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* APIProperty: featureAdded
|
* APIProperty: featureAdded
|
||||||
* {Function} Called after each feature is added
|
* {Function} Called after each feature is added
|
||||||
@@ -50,6 +58,13 @@ OpenLayers.Control.DrawFeature = OpenLayers.Class(OpenLayers.Control, {
|
|||||||
* options - {Object}
|
* options - {Object}
|
||||||
*/
|
*/
|
||||||
initialize: function(layer, handler, options) {
|
initialize: function(layer, handler, options) {
|
||||||
|
|
||||||
|
// concatenate events specific to vector with those from the base
|
||||||
|
this.EVENT_TYPES =
|
||||||
|
OpenLayers.Control.DrawFeature.prototype.EVENT_TYPES.concat(
|
||||||
|
OpenLayers.Control.prototype.EVENT_TYPES
|
||||||
|
);
|
||||||
|
|
||||||
OpenLayers.Control.prototype.initialize.apply(this, [options]);
|
OpenLayers.Control.prototype.initialize.apply(this, [options]);
|
||||||
this.callbacks = OpenLayers.Util.extend({done: this.drawFeature},
|
this.callbacks = OpenLayers.Util.extend({done: this.drawFeature},
|
||||||
this.callbacks);
|
this.callbacks);
|
||||||
@@ -64,6 +79,7 @@ OpenLayers.Control.DrawFeature = OpenLayers.Class(OpenLayers.Control, {
|
|||||||
var feature = new OpenLayers.Feature.Vector(geometry);
|
var feature = new OpenLayers.Feature.Vector(geometry);
|
||||||
this.layer.addFeatures([feature]);
|
this.layer.addFeatures([feature]);
|
||||||
this.featureAdded(feature);
|
this.featureAdded(feature);
|
||||||
|
this.events.triggerEvent("featureadded",{feature : feature});
|
||||||
},
|
},
|
||||||
|
|
||||||
CLASS_NAME: "OpenLayers.Control.DrawFeature"
|
CLASS_NAME: "OpenLayers.Control.DrawFeature"
|
||||||
|
|||||||
@@ -0,0 +1,38 @@
|
|||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<script src="../../lib/OpenLayers.js"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
function test_initialize(t) {
|
||||||
|
t.plan(2);
|
||||||
|
var control = new OpenLayers.Control.DrawFeature("foo", function() {});
|
||||||
|
t.ok(control instanceof OpenLayers.Control.DrawFeature,
|
||||||
|
"constructor returns an instance");
|
||||||
|
t.ok(OpenLayers.Util.indexOf(control.EVENT_TYPES, "featureadded") > -1,
|
||||||
|
"featureadded event in EVENT_TYPES");
|
||||||
|
}
|
||||||
|
|
||||||
|
function test_drawFeature(t) {
|
||||||
|
t.plan(2);
|
||||||
|
var layer = new OpenLayers.Layer.Vector();
|
||||||
|
var control = new OpenLayers.Control.DrawFeature(layer, function() {});
|
||||||
|
var geom = {};
|
||||||
|
|
||||||
|
layer.addFeatures = function(features) {
|
||||||
|
t.ok(features[0].geometry == geom, "layer.addFeatures called");
|
||||||
|
};
|
||||||
|
function test_featureadded(event) {
|
||||||
|
t.ok(event.feature.geometry == geom, "featureadded triggered");
|
||||||
|
}
|
||||||
|
control.events.on({"featureadded": test_featureadded});
|
||||||
|
control.drawFeature(geom);
|
||||||
|
control.events.un({"featureadded": test_featureadded});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="map" style="width: 400px; height: 250px;"/>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -90,6 +90,7 @@
|
|||||||
<li>Control/Button.html</li>
|
<li>Control/Button.html</li>
|
||||||
<li>Control/DragFeature.html</li>
|
<li>Control/DragFeature.html</li>
|
||||||
<li>Control/DragPan.html</li>
|
<li>Control/DragPan.html</li>
|
||||||
|
<li>Control/DrawFeature.html</li>
|
||||||
<li>Control/LayerSwitcher.html</li>
|
<li>Control/LayerSwitcher.html</li>
|
||||||
<li>Control/ModifyFeature.html</li>
|
<li>Control/ModifyFeature.html</li>
|
||||||
<li>Control/MousePosition.html</li>
|
<li>Control/MousePosition.html</li>
|
||||||
|
|||||||
Reference in New Issue
Block a user