3 <script src="../../lib/OpenLayers.js"></script>
4 <script type="text/javascript">
6 function test_activate(t) {
9 var featureList = ['foo', 'bar'];
12 read: function(options) {
13 options.callback.call(options.scope, {features: featureList});
17 // Create a dummy layer that can act as the map base layer.
18 // This will be unnecessary if #1920 is addressed or if base layer
19 // handling is changed.
20 var dummy = new OpenLayers.Layer(null, {isBaseLayer: true});
22 var layer = new OpenLayers.Layer.Vector("Vector Layer", {
23 strategies: [new OpenLayers.Strategy.Fixed()],
25 addFeatures: function(features) {
26 t.eq(features, featureList, "Features added to the layer");
30 var layerp = new OpenLayers.Layer.Vector("Hidden preload Layer", {
31 strategies: [new OpenLayers.Strategy.Fixed({preload:true})],
34 addFeatures: function(features) {
35 t.ok(!this.visibility, "Features preloaded before visible");
39 var s = new OpenLayers.Strategy.Fixed();
40 var layer2 = new OpenLayers.Layer.Vector("Hidden lazyload Layer", {
44 addFeatures: function(features) {
45 t.ok(this.visibility, "Layer visible when features added");
49 var map = new OpenLayers.Map('map');
50 map.addLayers([dummy, layer, layerp, layer2]);
52 t.ok(layer2.events.listeners["visibilitychanged"][0].obj == s &&
53 layer2.events.listeners["visibilitychanged"][0].func == s.load,
54 "activate registers visibilitychanged listener if layer hidden"+
55 " and is lazyloading");
57 layer2.setVisibility(true);
59 t.ok(layer2.events.listeners["visibilitychanged"] == false,
60 "visibilitychanged listener unregistered");
63 function test_events(t) {
72 var map = new OpenLayers.Map("map");
73 var layer = new OpenLayers.Layer.Vector(null, {
74 strategies: [new OpenLayers.Strategy.Fixed()],
75 protocol: new OpenLayers.Protocol({
76 read: function(config) {
77 config.callback.call(config.scope, {});
82 loadstart: function() {
92 map.zoomToMaxExtent();
94 t.eq(log.loadstart, 1, "loadstart triggered");
95 t.eq(log.loadend, 1, "loadend triggered");
97 layer.protocol.read = function(obj) {
100 layer.refresh({whee: 'chicken'});
102 t.eq(log.obj && log.obj.whee, "chicken", "properties passed to read on refresh correctly.");
109 function test_merge(t) {
113 var strategy = new OpenLayers.Strategy.Fixed();
115 // create map with default projection
116 var map = new OpenLayers.Map("map");
122 // create layer with custom projection
123 var layer = new OpenLayers.Layer.Vector(null, {
125 strategies: [strategy],
126 protocol: new OpenLayers.Protocol(),
127 projection: new OpenLayers.Projection("EPSG:900913"),
129 loadend: function() {
135 // give the layer some existing features (one)
137 new OpenLayers.Feature.Vector(
138 new OpenLayers.Geometry.Point(0, 0)
143 map.zoomToMaxExtent();
145 // create some features
147 new OpenLayers.Geometry.Point(100, 200),
148 new OpenLayers.Geometry.Point(1000, 2000)
151 new OpenLayers.Feature.Vector(geometries[0].clone()),
152 new OpenLayers.Feature.Vector(geometries[1].clone())
155 // call merge with a mocked up response
156 strategy.merge({features: features});
158 // confirm that the original features were destroyed
159 t.eq(layer.features.length, 2, "old features destroyed");
161 // confirm that loadend was called
162 t.eq(log.loadend, 1, "merge triggers loadend");
164 // test that feature geometries have been transformed to map projection
165 var from = layer.projection;
166 var to = map.getProjectionObject();
167 t.geom_eq(layer.features[0].geometry, features[0].geometry.transform(from, to), "[different proj] feature 0 geometry transformed");
168 t.geom_eq(layer.features[1].geometry, features[1].geometry.transform(from, to), "[different proj] feature 1 geometry transformed");
170 // same as above but with same map/layer projection
171 layer.destroyFeatures();
172 layer.projection = map.getProjectionObject();
175 new OpenLayers.Feature.Vector(geometries[0].clone()),
176 new OpenLayers.Feature.Vector(geometries[1].clone())
179 // call merge again with mocked up response
180 strategy.merge({features: features});
182 // test that feature geometries have not been transformed
183 t.geom_eq(layer.features[0].geometry, features[0].geometry, "[same proj] feature 0 geometry not transformed");
184 t.geom_eq(layer.features[1].geometry, features[1].geometry, "[same proj] feature 1 geometry not transformed");
191 <div id="map" style="width: 400px; height: 200px" />