Skip to content

Commit

Permalink
Snap immediately on starting a sketch. r=ahocevar (closes #2039)
Browse files Browse the repository at this point in the history
git-svn-id: http://svn.openlayers.org/trunk/openlayers@9270 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
  • Loading branch information
tschaub committed Apr 12, 2009
1 parent dfcf680 commit 29ba60e
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 2 deletions.
2 changes: 2 additions & 0 deletions lib/OpenLayers/Control/Snapping.js
Expand Up @@ -298,6 +298,7 @@ OpenLayers.Control.Snapping = OpenLayers.Class(OpenLayers.Control, {
if(activated) {
if(this.layer && this.layer.events) {
this.layer.events.on({
sketchstarted: this.onSketchModified,
sketchmodified: this.onSketchModified,
vertexmodified: this.onVertexModified,
scope: this
Expand All @@ -317,6 +318,7 @@ OpenLayers.Control.Snapping = OpenLayers.Class(OpenLayers.Control, {
if(deactivated) {
if(this.layer && this.layer.events) {
this.layer.events.un({
sketchstarted: this.onSketchModified,
sketchmodified: this.onSketchModified,
vertexmodified: this.onVertexModified,
scope: this
Expand Down
26 changes: 24 additions & 2 deletions tests/Control/Snapping.html
Expand Up @@ -175,7 +175,7 @@

function test_snapping(t) {

t.plan(33);
t.plan(46);

var map = new OpenLayers.Map("map", {
resolutions: [1],
Expand Down Expand Up @@ -298,7 +298,29 @@
// unsnap & reset
drag(-100, -50);
control.greedy = true;
events = [];
events = [];

// demonstrate snapping on sketchstarted
var p = new OpenLayers.Geometry.Point(0, 1);
layer1.events.triggerEvent("sketchstarted", {
vertex: p,
feature: new OpenLayers.Feature.Vector(p)
});
t.eq(events.length, 2, "[sketchstarted] 2 events triggered");
t.eq(events[0].type, "beforesnap", "[sketchstarted] beforesnap triggered");
t.eq(events[0].snapType, "node", "[sketchstarted] beforesnap triggered for node");
t.ok(events[0].point === p, "[sketchstarted] beforesnap triggered with vertex");
t.eq(events[0].x, 0, "[sketchstarted] beforesnap triggered correct x");
t.eq(events[0].y, 0, "[sketchstarted] beforesnap triggered with correct y");
t.eq(events[1].type, "snap", "[sketchstarted] snap triggered");
t.eq(events[1].snapType, "node", "[sketchstarted] snap triggered for node");
t.ok(events[1].point === p, "[sketchstarted] snap triggered with point");
t.eq(events[1].distance, 1, "[sketchstarted] snap triggered correct distance");
t.ok(events[1].layer === layer1, "[sketchstarted] snap triggered with correct target layer");
t.eq(p.x, 0, "[sketchstarted] vertex x modified");
t.eq(p.y, 0, "[sketchstarted] vertex y modified");
// reset
events = [];

map.destroy();

Expand Down

0 comments on commit 29ba60e

Please sign in to comment.