ba0ba64c74
With the map's applyTransform method, the control does not need and have its own applyTransform and center management any more.
135 lines
3.9 KiB
HTML
135 lines
3.9 KiB
HTML
<html>
|
|
<head>
|
|
<script src="../OLLoader.js"></script>
|
|
<script type="text/javascript">
|
|
|
|
function test_constructor(t) {
|
|
t.plan(2);
|
|
var control = new OpenLayers.Control.PinchZoom();
|
|
t.ok(control instanceof OpenLayers.Control.PinchZoom, "got an instance");
|
|
t.ok(control.handler instanceof OpenLayers.Handler.Pinch, "control has pinch handler");
|
|
control.destroy();
|
|
}
|
|
|
|
function test_destroy(t) {
|
|
t.plan(1);
|
|
var control = new OpenLayers.Control.PinchZoom();
|
|
control.destroy();
|
|
t.ok(!control.handler, "handler destroyed");
|
|
}
|
|
|
|
function test_activate(t) {
|
|
t.plan(3);
|
|
var control = new OpenLayers.Control.PinchZoom();
|
|
t.ok(!control.active, "control not activated after construction");
|
|
|
|
var map = new OpenLayers.Map({
|
|
div: "map",
|
|
controls: [control]
|
|
});
|
|
t.ok(control.active, "control activated after being added to the map");
|
|
|
|
control.deactivate();
|
|
t.ok(!control.active, "control deactivated");
|
|
|
|
map.destroy();
|
|
}
|
|
|
|
function test_pinchMove(t) {
|
|
|
|
var control = new OpenLayers.Control.PinchZoom();
|
|
|
|
var map = new OpenLayers.Map({
|
|
div: "map",
|
|
controls: [control]
|
|
});
|
|
|
|
var log = [];
|
|
map.applyTransform = function(x, y, scale) {
|
|
log.push([x, y, scale]);
|
|
}
|
|
|
|
map.layerContainerOriginPx = {
|
|
x: -50, y: -50
|
|
};
|
|
|
|
control.pinchOrigin = {
|
|
x: 100, y: 50
|
|
};
|
|
|
|
var cases = [
|
|
{x: 100, y: 60, scale: 1, transform: [-50, -40, 1]},
|
|
{x: 150, y: 60, scale: 1, transform: [0, -40, 1]},
|
|
{x: 150, y: 60, scale: 2, transform: [-150, -140, 2]},
|
|
{x: 50, y: 20, scale: 2.5, transform: [-325, -230, 2.5]},
|
|
{x: 150, y: 60, scale: 2, transform: [-150, -140, 2]},
|
|
{x: 50, y: 20, scale: 0.25, transform: [13, -5, 0.25]}
|
|
];
|
|
|
|
var len = cases.length;
|
|
t.plan(len*2);
|
|
|
|
var c;
|
|
for (var i=0; i<len; ++i) {
|
|
c = cases[i];
|
|
control.pinchMove({xy: {x: c.x, y: c.y}}, {scale: c.scale});
|
|
t.eq(log.length, i+1, i + " called once");
|
|
t.eq(log[i], c.transform, i + " correct transform");
|
|
}
|
|
|
|
}
|
|
|
|
function test_pinchMove_preservecenter(t) {
|
|
|
|
var control = new OpenLayers.Control.PinchZoom({
|
|
preserveCenter: true
|
|
});
|
|
|
|
var map = new OpenLayers.Map({
|
|
div: "map",
|
|
controls: [control],
|
|
layers: [new OpenLayers.Layer('fake', {isBaseLayer: true})]
|
|
});
|
|
map.zoomToMaxExtent();
|
|
|
|
var centerPx = map.getPixelFromLonLat(map.getCenter());
|
|
|
|
control.pinchStart = function(evt, pinchData) {
|
|
t.eq(map.layerContainerOriginPx, {x: 0, y: 0}, "center preserved");
|
|
t.eq(map.getPixelFromLonLat(map.getCenter()), centerPx, "center preserved");
|
|
}
|
|
|
|
control.pinchStart(null);
|
|
|
|
var log = [];
|
|
map.applyTransform = function(x, y, scale) {
|
|
log.push([x, y, scale]);
|
|
}
|
|
control.pinchOrigin = map.getPixelFromLonLat(map.getCenter());
|
|
|
|
var cases = [
|
|
{scale: 1, transform: [0, 0, 1]},
|
|
{scale: 2, transform: [-128, -128, 2]},
|
|
{scale: 2.5, transform: [-192, -192, 2.5]},
|
|
{scale: 0.25, transform: [96, 96, 0.25]}
|
|
];
|
|
|
|
var len = cases.length;
|
|
t.plan(2 + len*2);
|
|
|
|
var c;
|
|
for (var i=0; i<len; ++i) {
|
|
c = cases[i];
|
|
control.pinchMove(null, {scale: c.scale});
|
|
t.eq(log.length, i+1, i + " called once");
|
|
t.eq(log[i], c.transform, i + " correct transform");
|
|
}
|
|
}
|
|
|
|
</script>
|
|
</head>
|
|
<body>
|
|
<div id="map" style="width: 256px; height: 256px;"></div>
|
|
</body>
|
|
</html>
|