202 lines
5.5 KiB
HTML
202 lines
5.5 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<script src="../OLLoader.js"></script>
|
|
<script type="text/javascript">
|
|
|
|
function test_Pan_constructor (t) {
|
|
t.plan( 2 );
|
|
|
|
// setup
|
|
var control = new OpenLayers.Control.Pan(
|
|
"Gargoyle" // the direction, here mocked up
|
|
);
|
|
|
|
// tests
|
|
//
|
|
t.ok(
|
|
control instanceof OpenLayers.Control.Pan,
|
|
"new OpenLayers.Control.Pan returns object"
|
|
);
|
|
t.eq(
|
|
control.displayClass, "olControlPanGargoyle",
|
|
"displayClass is correct"
|
|
);
|
|
|
|
// tear down
|
|
control.destroy();
|
|
}
|
|
|
|
function test_Pan_type (t) {
|
|
t.plan( 1 );
|
|
|
|
// setup
|
|
var control = new OpenLayers.Control.Pan();
|
|
|
|
// tests
|
|
//
|
|
t.eq(
|
|
control.type,
|
|
OpenLayers.Control.TYPE_BUTTON,
|
|
"Pan control is of type OpenLayers.Control.TYPE_BUTTON"
|
|
);
|
|
|
|
// tear down
|
|
control.destroy();
|
|
}
|
|
|
|
function test_Pan_constants (t) {
|
|
var dirs = [
|
|
'North',
|
|
'East',
|
|
'South',
|
|
'West'
|
|
],
|
|
numDirs = dirs.length,
|
|
dir, uc_dir;
|
|
|
|
t.plan(numDirs);
|
|
|
|
for ( ; numDirs > 0; numDirs-- ) {
|
|
dir = dirs[numDirs - 1 ];
|
|
uc_dir = dir.toUpperCase();
|
|
|
|
t.eq(
|
|
OpenLayers.Control.Pan[ uc_dir ],
|
|
dir,
|
|
"A constant 'OpenLayers.Control.Pan." + uc_dir + "' is defined "+
|
|
"and has the correct value of '" + dir + "'."
|
|
);
|
|
}
|
|
}
|
|
|
|
function test_Pan_trigger (t) {
|
|
t.plan( 12 );
|
|
|
|
// set up
|
|
var controls = {
|
|
n: new OpenLayers.Control.Pan(OpenLayers.Control.Pan.NORTH),
|
|
e: new OpenLayers.Control.Pan(OpenLayers.Control.Pan.EAST),
|
|
s: new OpenLayers.Control.Pan(OpenLayers.Control.Pan.SOUTH),
|
|
w: new OpenLayers.Control.Pan(OpenLayers.Control.Pan.WEST)
|
|
},
|
|
controlKey, control,
|
|
zoomlevel = 5,
|
|
center = new OpenLayers.LonLat(25,25),
|
|
log = {
|
|
dx: null,
|
|
dy: null
|
|
},
|
|
map = new OpenLayers.Map("map", {
|
|
allOverlays: true,
|
|
layers: [
|
|
new OpenLayers.Layer.Vector()
|
|
],
|
|
center: center,
|
|
zoom: zoomlevel
|
|
}),
|
|
oldZoom;
|
|
|
|
// overwrite native Map::pan
|
|
map.pan = function(dx, dy) {
|
|
log = {
|
|
dx: dx,
|
|
dy: dy
|
|
};
|
|
OpenLayers.Map.prototype.pan.apply(map, arguments);
|
|
};
|
|
|
|
oldCenter = map.getCenter().toString();
|
|
|
|
for (controlKey in controls) {
|
|
if (controls.hasOwnProperty(controlKey)) {
|
|
control = controls[controlKey];
|
|
// trigger the control; nothing should change, we aren't added yet.
|
|
control.trigger();
|
|
|
|
t.ok(
|
|
log.dx === null && log.dy === null,
|
|
'Calling trigger on a non added control doesn\'t do anything.'
|
|
);
|
|
|
|
// reset log object
|
|
log = {
|
|
dx: null,
|
|
dy: null
|
|
};
|
|
}
|
|
}
|
|
|
|
// now lets add the controls, and trigger them again
|
|
for (controlKey in controls) {
|
|
if (controls.hasOwnProperty(controlKey)) {
|
|
control = controls[controlKey];
|
|
map.addControl(control);
|
|
// trigger again, now ...
|
|
control.trigger();
|
|
|
|
// ... the center should change ...
|
|
t.ok(
|
|
log.dx !== null && log.dy !== null,
|
|
'Calling trigger on an added pan control calls map.pan()... '
|
|
);
|
|
|
|
// ... with sane arguments according to the passed direction.
|
|
switch (control.direction) {
|
|
case OpenLayers.Control.Pan.NORTH:
|
|
t.ok(
|
|
log.dx === 0 && log.dy < 0,
|
|
'... with sane arguments: pan north only results in ' +
|
|
'negative delta y'
|
|
);
|
|
break;
|
|
case OpenLayers.Control.Pan.SOUTH:
|
|
t.ok(
|
|
log.dx === 0 && log.dy > 0,
|
|
'... with sane arguments: pan south only results in ' +
|
|
'positive delta y'
|
|
);
|
|
break;
|
|
case OpenLayers.Control.Pan.WEST:
|
|
t.ok(
|
|
log.dx < 0 && log.dy === 0,
|
|
'... with sane arguments: pan west only results in ' +
|
|
'negative delta x'
|
|
);
|
|
break;
|
|
case OpenLayers.Control.Pan.EAST:
|
|
t.ok(
|
|
log.dx > 0 && log.dy === 0,
|
|
'... with sane arguments: pan east only results in ' +
|
|
'positive delta x'
|
|
);
|
|
break;
|
|
}
|
|
|
|
// reset log-object
|
|
log = {
|
|
dx: null,
|
|
dy: null
|
|
};
|
|
// always set to initial center and zoom:
|
|
map.setCenter(center, zoomlevel);
|
|
}
|
|
}
|
|
|
|
// tear down
|
|
for (controlKey in controls) {
|
|
if (controls.hasOwnProperty(controlKey)) {
|
|
control = controls[controlKey];
|
|
control.destroy();
|
|
}
|
|
}
|
|
map.destroy();
|
|
}
|
|
|
|
</script>
|
|
</head>
|
|
<body>
|
|
<div id="map" style="width: 1000px; height: 1000px;"></div>
|
|
</body>
|
|
</html>
|