1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
|
<html>
<head>
<script src="../OLLoader.js"></script>
<script type="text/javascript">
var layer;
function test_Layer_FixedZoomLevels (t) {
t.plan( 39 );
var layer = { 'MIN_ZOOM_LEVEL': 5,
'MAX_ZOOM_LEVEL': 10 };
//defaults
layer = p_createLayer(layer);
p_minMaxNum(t, layer, layer.MIN_ZOOM_LEVEL, layer.MAX_ZOOM_LEVEL, "nothing specified");
//layer.options
// min,num
layer = p_createLayer(layer, {}, { minZoomLevel: 3, numZoomLevels: 12});
p_minMaxNum(t, layer, layer.MIN_ZOOM_LEVEL, layer.MAX_ZOOM_LEVEL, "min too low num too high(layer.options)");
layer = p_createLayer(layer, {}, { minZoomLevel: 6, numZoomLevels: 3 });
p_minMaxNum(t, layer, 6, 8, "valid min,num(layer.options)");
// max
layer = p_createLayer(layer, {}, { maxZoomLevel: 9 });
p_minMaxNum(t, layer, layer.MIN_ZOOM_LEVEL, 9, "valid max(layer.options)");
layer = p_createLayer(layer, {}, { maxZoomLevel: 12 });
p_minMaxNum(t, layer, layer.MIN_ZOOM_LEVEL, layer.MAX_ZOOM_LEVEL, "invalid max(layer.options)");
//map
// min,num
layer = p_createLayer(layer, { minZoomLevel: 3, numZoomLevels: 12});
p_minMaxNum(t, layer, layer.MIN_ZOOM_LEVEL, layer.MAX_ZOOM_LEVEL, "min too low num too high(map)");
layer = p_createLayer(layer, { minZoomLevel: 6, numZoomLevels: 3 });
p_minMaxNum(t, layer, 6, 8, "valid min,num(map)");
// max
layer = p_createLayer(layer, { maxZoomLevel: 9 });
p_minMaxNum(t, layer, layer.MIN_ZOOM_LEVEL, 9, "valid max(map)");
layer = p_createLayer(layer, { maxZoomLevel: 12 });
p_minMaxNum(t, layer, layer.MIN_ZOOM_LEVEL, layer.MAX_ZOOM_LEVEL, "invalid max(map)");
//map vs. options
layer = p_createLayer(layer, {minZoomLevel: 6, numZoomLevels: 2}, { minZoomLevel: 7, numZoomLevels: 3});
p_minMaxNum(t, layer, 7, 9, "min,num(layer.options) wins over (map)");
layer = p_createLayer(layer, {minZoomLevel: 6, maxZoomLevel: 8}, { minZoomLevel: 7, maxZoomLevel: 9});
p_minMaxNum(t, layer, 7, 9, "min,max(layer.options) wins over (map)");
// numZoomLevels vs. maxZoomLevel
layer = p_createLayer(layer, {maxZoomLevel: 8, numZoomLevels: 6});
p_minMaxNum(t, layer, layer.MIN_ZOOM_LEVEL, 10, "min,max(layer.options) wins over (map)");
// resolutions array
var resolutions = Array(20);
for (var i = 0; i < 20; i++) {
resolutions[i] = Math.random();
}
OpenLayers.Util.extend(layer, {RESOLUTIONS:resolutions});
var minZoomLevel = 6;
var numZoomLevels = 2;
layer = p_createLayer(layer, {}, {minZoomLevel: minZoomLevel, numZoomLevels: numZoomLevels});
t.eq( layer.resolutions.length, numZoomLevels, "length of resolutions array ok");
for (var i = 0; i < numZoomLevels; i++) {
t.eq( layer.resolutions[i], resolutions[i + minZoomLevel], "resolutions array at index " + i + " ok");
}
}
function test_getMapObjectZoomFromOLZoom(t) {
t.plan(4);
var map = new OpenLayers.Map("map", {allOverlays: true});
var xyz = new OpenLayers.Layer.XYZ("xyz", "${x}${y}${z}", {
sphericalMercator: true,
resolutions: [39135.7584765625, 19567.87923828125, 9783.939619140625]
});
var fixed = new (OpenLayers.Class(OpenLayers.Layer, OpenLayers.Layer.FixedZoomLevels, {
initialize: function() {
OpenLayers.Layer.prototype.initialize.apply(this, arguments);
}
}))("fixed", {
resolutions: [156543.03390625, 78271.516953125, 39135.7584765625, 19567.87923828125, 9783.939619140625],
minZoomLevel: 1
});
map.addLayers([xyz, fixed]);
map.setCenter(new OpenLayers.LonLat(0, 0), 2);
// map.getZoom() returns 2
t.eq(fixed.getMapObjectZoomFromOLZoom(map.getZoom()), 4, "correct return value from getMapObjectZoomFromOLZoom");
t.eq(fixed.getOLZoomFromMapObjectZoom(4), map.getZoom() - fixed.minZoomLevel, "correct return value from getOLZoomFromMapObjectZoom");
map.setBaseLayer(fixed);
// map.getZoom() returns 4 now
t.eq(fixed.getMapObjectZoomFromOLZoom(map.getZoom()), 5, "correct return value from getMapObjectZoomFromOLZoom");
t.eq(fixed.getOLZoomFromMapObjectZoom(5), map.getZoom(), "correct return value from getOLZoomFromMapObjectZoom");
}
function p_createLayer(layer, mapOptions, layerOptions) {
layer.map = mapOptions || {};
layer.options = layerOptions || {};
OpenLayers.Layer.FixedZoomLevels.prototype.initResolutions.apply(layer);
return layer;
}
function p_minMaxNum(t, layer, min, max, msg) {
t.eq( layer.minZoomLevel, min, "min zoom level inherited from layer constant: " + msg);
t.eq( layer.maxZoomLevel, max, "max zoom level inherited from layer constant: " + msg);
t.eq( layer.numZoomLevels, max - min + 1, "num zoom levels correctly calcuated: " + msg);
}
</script>
</head>
<body>
<div id="map" style="width:256px;height:256px"></div>
</body>
</html>
|