[OpenLayers-Commits] r11797 - in trunk/openlayers:
lib/OpenLayers/Handler tests/Handler
commits-20090109 at openlayers.org
commits-20090109 at openlayers.org
Wed Mar 30 10:38:36 EDT 2011
Author: bartvde
Date: 2011-03-30 07:38:32 -0700 (Wed, 30 Mar 2011)
New Revision: 11797
Modified:
trunk/openlayers/lib/OpenLayers/Handler/Path.js
trunk/openlayers/tests/Handler/Path.html
Log:
add support for maxVertices in Hander.Path, p=me,r=erilem, thanks erilem for the updated patch and your great work on this (closes #2779)
Modified: trunk/openlayers/lib/OpenLayers/Handler/Path.js
===================================================================
--- trunk/openlayers/lib/OpenLayers/Handler/Path.js 2011-03-30 14:37:59 UTC (rev 11796)
+++ trunk/openlayers/lib/OpenLayers/Handler/Path.js 2011-03-30 14:38:32 UTC (rev 11797)
@@ -27,6 +27,15 @@
line: null,
/**
+ * APIProperty: maxVertices
+ * {Number} The maximum number of vertices which can be drawn by this
+ * handler. When the number of vertices reaches maxVertices, the
+ * geometry is automatically finalized. This property doesn't
+ * apply if freehand is set. Default is null.
+ */
+ maxVertices: null,
+
+ /**
* Property: freehand
* {Boolean} In freehand mode, the handler starts the path on mouse down,
* adds a point for every mouse move, and finishes the path on mouse up.
@@ -328,6 +337,9 @@
}
this.addPoint(evt.xy);
this.lastUp = evt.xy;
+ if(this.line.geometry.components.length === this.maxVertices + 1) {
+ this.finishGeometry();
+ }
}
}
}
Modified: trunk/openlayers/tests/Handler/Path.html
===================================================================
--- trunk/openlayers/tests/Handler/Path.html 2011-03-30 14:37:59 UTC (rev 11796)
+++ trunk/openlayers/tests/Handler/Path.html 2011-03-30 14:38:32 UTC (rev 11797)
@@ -524,6 +524,43 @@
map.destroy();
}
+ function test_maxVertices(t) {
+ t.plan(1);
+ var map = new OpenLayers.Map("map", {
+ resolutions: [1]
+ });
+ var layer = new OpenLayers.Layer.Vector("foo", {
+ maxExtent: new OpenLayers.Bounds(-10, -10, 10, 10),
+ isBaseLayer: true
+ });
+ map.addLayer(layer);
+ var control = new OpenLayers.Control({});
+ var log = {};
+ var doneCallback = function(evt) {
+ t.ok(evt, 'When maxVertices is reached, the geometry is finalized automatically');
+ };
+ var handler = new OpenLayers.Handler.Path(control, {'done': doneCallback}, {maxVertices: 2});
+ control.handler = handler;
+ map.addControl(control);
+ map.setCenter(new OpenLayers.LonLat(0, 0), 0);
+
+ // mock up feature drawing
+ handler.activate();
+ var evt = {xy: new OpenLayers.Pixel(0, 0)};
+ handler.mousemove(evt);
+ handler.mousedown(evt);
+ handler.mouseup(evt);
+ evt = {xy: new OpenLayers.Pixel(20, 20)};
+ handler.mousemove(evt);
+ handler.mousedown(evt);
+ handler.mouseup(evt);
+ evt = {xy: new OpenLayers.Pixel(40, 40)};
+ handler.mousemove(evt);
+ handler.mousedown(evt);
+ handler.mouseup(evt);
+ map.destroy();
+ }
+
//
// Sequence tests
//
More information about the Commits
mailing list