make it possible to pan the map while drawing geometries, r=tschaub (closes #3052)
git-svn-id: http://svn.openlayers.org/trunk/openlayers@11381 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
@@ -60,7 +60,7 @@
|
||||
}
|
||||
|
||||
function test_sketch_events(t) {
|
||||
t.plan(6);
|
||||
t.plan(12);
|
||||
var map = new OpenLayers.Map("map", {
|
||||
resolutions: [1]
|
||||
});
|
||||
@@ -69,37 +69,62 @@
|
||||
isBaseLayer: true
|
||||
});
|
||||
var control = new OpenLayers.Control.DrawFeature(
|
||||
layer, OpenLayers.Handler.Point
|
||||
layer, OpenLayers.Handler.Path, {
|
||||
handlerOptions: {persist: true}
|
||||
}
|
||||
);
|
||||
map.addLayer(layer);
|
||||
map.addControl(control);
|
||||
map.zoomToMaxExtent();
|
||||
control.activate();
|
||||
|
||||
var log = {};
|
||||
var log;
|
||||
layer.events.on({
|
||||
sketchstarted: function(event) {
|
||||
log.event = event;
|
||||
log['sketchstarted'] = event;
|
||||
},
|
||||
sketchmodified: function(event) {
|
||||
log.event = event;
|
||||
log['sketchmodified'] = event;
|
||||
},
|
||||
sketchcomplete: function(event) {
|
||||
log.event = event;
|
||||
log['sketchcomplete'] = event;
|
||||
}
|
||||
});
|
||||
|
||||
// mock up draw/modify of a point
|
||||
log = {};
|
||||
control.activate();
|
||||
t.eq(log.sketchstarted.type, "sketchstarted", "[activate] sketchstarted triggered");
|
||||
t.geom_eq(log.sketchstarted.vertex, new OpenLayers.Geometry.Point(-250, 175), "[activate] correct vertex");
|
||||
|
||||
log = {};
|
||||
map.events.triggerEvent("mousemove", {xy: new OpenLayers.Pixel(0, 0)});
|
||||
t.eq(log.sketchmodified.type, "sketchmodified", "[mousemove] sketchmodified triggered");
|
||||
t.geom_eq(log.sketchmodified.vertex, new OpenLayers.Geometry.Point(-200, 125), "[mousemove] correct vertex");
|
||||
|
||||
map.events.triggerEvent("mousedown", {xy: new OpenLayers.Pixel(0, 0)});
|
||||
t.eq(log.event.type, "sketchstarted", "[mousedown] sketchstarted triggered");
|
||||
t.geom_eq(log.event.vertex, new OpenLayers.Geometry.Point(-200, 125), "[mousedown] correct vertex");
|
||||
|
||||
log = {};
|
||||
map.events.triggerEvent("mouseup", {xy: new OpenLayers.Pixel(0, 0)});
|
||||
t.eq(log.sketchmodified.type, "sketchmodified", "[mouseup] sketchmodified triggered");
|
||||
t.geom_eq(log.sketchmodified.vertex, new OpenLayers.Geometry.Point(-200, 125), "[mouseup] correct vertex");
|
||||
|
||||
log = {};
|
||||
map.events.triggerEvent("mousemove", {xy: new OpenLayers.Pixel(10, 10)});
|
||||
t.eq(log.event.type, "sketchmodified", "[mousemove] sketchmodified triggered");
|
||||
t.geom_eq(log.event.vertex, new OpenLayers.Geometry.Point(-190, 115), "[mousemove] correct vertex");
|
||||
map.events.triggerEvent("mouseup", {xy: new OpenLayers.Pixel(10, 10)});
|
||||
t.eq(log.event.type, "sketchcomplete", "[mouseup] sketchcomplete triggered");
|
||||
t.geom_eq(log.event.feature.geometry, new OpenLayers.Geometry.Point(-190, 115), "[mouseup] correct geometry");
|
||||
|
||||
t.eq(log.sketchmodified.type, "sketchmodified", "[mousemove] sketchmodified triggered");
|
||||
t.geom_eq(log.sketchmodified.vertex, new OpenLayers.Geometry.Point(-190, 115), "[mousemove] correct vertex");
|
||||
|
||||
log = {};
|
||||
map.events.triggerEvent("dblclick", {xy: new OpenLayers.Pixel(10, 10)});
|
||||
t.eq(log.sketchcomplete.type, "sketchcomplete", "[dblclick] sketchcomplete triggered");
|
||||
t.geom_eq(log.sketchcomplete.feature.geometry,
|
||||
new OpenLayers.Geometry.LineString([
|
||||
new OpenLayers.Geometry.Point(-200, 125),
|
||||
new OpenLayers.Geometry.Point(-190, 115)
|
||||
]),
|
||||
"[dblclick] correct geometry");
|
||||
t.eq(log.sketchstarted.type, "sketchstarted", "[dblclick] sketchstarted triggered");
|
||||
t.geom_eq(log.sketchstarted.vertex, new OpenLayers.Geometry.Point(-250, 175), "[dblclick] correct vertex");
|
||||
|
||||
map.destroy();
|
||||
}
|
||||
|
||||
|
||||
@@ -52,6 +52,7 @@
|
||||
xy: new OpenLayers.Pixel(x, y)
|
||||
})
|
||||
};
|
||||
trigger("mousemove", 0, 0);
|
||||
trigger("mousedown", 0, 0);
|
||||
trigger("mouseup", 0, 0);
|
||||
trigger("mousemove", 10, 10);
|
||||
@@ -60,9 +61,10 @@
|
||||
|
||||
// confirm that the sketch persists
|
||||
t.eq(control.handler.layer.features.length, 1, "feature persists");
|
||||
// cancel and see that sketch is gone
|
||||
// cancel and see that sketch is gone (do not forget that
|
||||
// cancel will create the new feature)
|
||||
control.cancel();
|
||||
t.eq(control.handler.layer.features.length, 0, "feature is gone after cancel");
|
||||
t.eq(control.handler.layer.features.length, 2, "feature is gone after cancel");
|
||||
|
||||
map.destroy();
|
||||
|
||||
@@ -112,6 +114,7 @@
|
||||
var delay = control.partialDelay / 1000;
|
||||
|
||||
// establish first point
|
||||
trigger("mousemove", 0, 0);
|
||||
trigger("mousedown", 0, 0);
|
||||
trigger("mouseup", 0, 0);
|
||||
|
||||
@@ -187,6 +190,7 @@
|
||||
log = [];
|
||||
|
||||
// f) establish first freehand point
|
||||
trigger("mousemove", 0, 0);
|
||||
trigger("mousedown", 0, 0);
|
||||
t.eq(log.length, 0, "f) no event fired yet")
|
||||
|
||||
@@ -203,14 +207,14 @@
|
||||
t.eq(log.length, 2, "h) event logged");
|
||||
t.ok(log[1] && log[1].type == "measurepartial", "h) correct type");
|
||||
t.ok(log[1] && log[1].measure == 20, "h) correct measure");
|
||||
|
||||
|
||||
// i) mouse up to finish
|
||||
trigger("mouseup", 20, 0);
|
||||
|
||||
t.eq(log.length, 3, "i) event logged");
|
||||
t.ok(log[2] && log[2].type == "measure", "i) correct type");
|
||||
t.ok(log[2] && log[2].measure == 20, "i) correct measure");
|
||||
|
||||
|
||||
// j) clean up
|
||||
log = [];
|
||||
map.destroy();
|
||||
@@ -224,7 +228,7 @@
|
||||
}
|
||||
|
||||
function test_immediate(t) {
|
||||
t.plan(29);
|
||||
t.plan(32);
|
||||
|
||||
var map = new OpenLayers.Map({
|
||||
div: "map",
|
||||
@@ -237,7 +241,7 @@
|
||||
],
|
||||
center: new OpenLayers.LonLat(0, 0)
|
||||
});
|
||||
|
||||
|
||||
var log = [];
|
||||
var control = new OpenLayers.Control.Measure(
|
||||
OpenLayers.Handler.Path, {
|
||||
@@ -255,7 +259,7 @@
|
||||
);
|
||||
map.addControl(control);
|
||||
control.activate();
|
||||
|
||||
|
||||
// convenience function to trigger mouse events
|
||||
function trigger(type, x, y) {
|
||||
map.events.triggerEvent(type, {
|
||||
@@ -267,6 +271,7 @@
|
||||
var delay = control.partialDelay / 1000;
|
||||
|
||||
// a) establish first point
|
||||
trigger("mousemove", 0, 0);
|
||||
trigger("mousedown", 0, 0);
|
||||
trigger("mouseup", 0, 0);
|
||||
|
||||
@@ -274,7 +279,7 @@
|
||||
trigger("mousemove", 0, 10);
|
||||
|
||||
t.eq(log.length, 0, "a) no event fired yet");
|
||||
|
||||
|
||||
t.delay_call(
|
||||
delay, function() {
|
||||
// confirm measurepartial is fired
|
||||
@@ -334,18 +339,21 @@
|
||||
|
||||
// i) double click to finish
|
||||
trigger("mousedown", 0, 60);
|
||||
t.eq(log.length, 7, "i) event logged");
|
||||
t.eq(log[6] && log[6].type, "measurepartial", "i) correct type");
|
||||
t.eq(log[6] && log[6].measure, 60, "i) correct measure");
|
||||
trigger("mouseup", 0, 60);
|
||||
t.eq(log.length, 6, "i) no event fired yet");
|
||||
t.eq(log.length, 7, "i) no event fired yet");
|
||||
},
|
||||
delay, function() {
|
||||
t.eq(log.length, 7, "i) event logged");
|
||||
t.ok(log[6] && log[6].type == "measurepartial", "i) correct type");
|
||||
t.ok(log[6] && log[6].measure == 60, "i) correct measure");
|
||||
|
||||
trigger("dblclick", 0, 60);
|
||||
t.eq(log.length, 8, "i) event logged");
|
||||
t.ok(log[7] && log[7].type == "measure", "i) correct type");
|
||||
t.ok(log[7] && log[7].measure == 60, "i) correct measure");
|
||||
t.eq(log[7] && log[7].type, "measurepartial", "i) correct type");
|
||||
t.eq(log[7] && log[7].measure, 60, "i) correct measure");
|
||||
|
||||
trigger("dblclick", 0, 60);
|
||||
t.eq(log.length, 9, "i) event logged");
|
||||
t.eq(log[8] && log[8].type, "measure", "i) correct type");
|
||||
t.eq(log[8] && log[8].measure, 60, "i) correct measure");
|
||||
// clear log
|
||||
log = [];
|
||||
|
||||
|
||||
@@ -35,13 +35,20 @@
|
||||
function test_setSource(t) {
|
||||
t.plan(5);
|
||||
|
||||
var layer1 = new OpenLayers.Layer.Vector();
|
||||
var layer2 = new OpenLayers.Layer.Vector();
|
||||
var layer1 = new OpenLayers.Layer.Vector("foo", {
|
||||
maxExtent: new OpenLayers.Bounds(-10, -10, 10, 10),
|
||||
isBaseLayer: true
|
||||
});
|
||||
var layer2 = new OpenLayers.Layer.Vector("foo", {
|
||||
maxExtent: new OpenLayers.Bounds(-10, -10, 10, 10),
|
||||
isBaseLayer: true
|
||||
});
|
||||
|
||||
var control = new OpenLayers.Control.Split({layer: layer1});
|
||||
|
||||
var map = new OpenLayers.Map("map");
|
||||
map.addLayers([layer1, layer2]);
|
||||
map.zoomToMaxExtent();
|
||||
map.addControl(control);
|
||||
control.activate();
|
||||
|
||||
@@ -64,12 +71,16 @@
|
||||
function test_activate(t) {
|
||||
t.plan(8);
|
||||
|
||||
var layer = new OpenLayers.Layer.Vector();
|
||||
var layer = new OpenLayers.Layer.Vector("foo", {
|
||||
maxExtent: new OpenLayers.Bounds(-10, -10, 10, 10),
|
||||
isBaseLayer: true
|
||||
});
|
||||
var control = new OpenLayers.Control.Split({layer: layer});
|
||||
var map = new OpenLayers.Map("map");
|
||||
map.addLayer(layer);
|
||||
map.zoomToMaxExtent();
|
||||
map.addControl(control);
|
||||
|
||||
|
||||
// test activation with no source layer
|
||||
control.activate();
|
||||
t.eq(control.active, true, "control is active");
|
||||
@@ -93,12 +104,16 @@
|
||||
|
||||
t.plan(7);
|
||||
|
||||
var layer = new OpenLayers.Layer.Vector();
|
||||
var layer = new OpenLayers.Layer.Vector("foo", {
|
||||
maxExtent: new OpenLayers.Bounds(-10, -10, 10, 10),
|
||||
isBaseLayer: true
|
||||
});
|
||||
var control = new OpenLayers.Control.Split({layer: layer});
|
||||
var map = new OpenLayers.Map("map");
|
||||
map.addLayer(layer);
|
||||
map.zoomToMaxExtent();
|
||||
map.addControl(control);
|
||||
|
||||
|
||||
// activate and check sketch handler
|
||||
control.activate();
|
||||
t.ok(control.handler, "sketch handler present");
|
||||
|
||||
Reference in New Issue
Block a user