OpenLayers OpenLayers

root/trunk/openlayers/tests/Layer/Markers.html

Revision 8230, 5.5 kB (checked in by tschaub, 2 months ago)

Marker icons should be moved when the map zoom changes. Thanks to avlee for providing a simple fix for this. r=euzuro (see #1759, closes #1766)

  • Property svn:eol-style set to native
Line 
1 <html>
2 <head>
3   <script src="../../lib/OpenLayers.js"></script>
4   <script type="text/javascript">
5     var layer;
6
7     function test_initialize(t) {
8         t.plan( 2 );
9        
10         layer = new OpenLayers.Layer.Markers('Test Layer');
11         t.ok( layer instanceof OpenLayers.Layer.Markers, "new OpenLayers.Layer.Markers returns object" );
12         t.eq( layer.name, "Test Layer", "layer.name is correct" );
13     }
14     function test_addlayer (t) {
15         t.plan( 3 );
16        
17         layer = new OpenLayers.Layer.Markers('Test Layer');
18         t.ok( layer instanceof OpenLayers.Layer.Markers, "new OpenLayers.Layer.Markers returns object" );
19         t.eq( layer.name, "Test Layer", "layer.name is correct" );
20         layer.addMarker(new OpenLayers.Marker(new OpenLayers.LonLat(0,0),
21                                               new OpenLayers.Icon())
22                        );
23         t.eq( layer.markers.length, 1, "addLayer adds marker to layer." );
24     }
25     function test_addMarker_removeMarker (t) {
26         t.plan( 4 );
27
28         var map = new OpenLayers.Map('map');
29         var baseLayer = new OpenLayers.Layer.WMS("Test Layer",
30             "http://octo.metacarta.com/cgi-bin/mapserv?",
31             {map: "/mapdata/vmap_wms.map", layers: "basic"});
32         map.addLayer(baseLayer);
33         map.zoomToMaxExtent();
34         layer = new OpenLayers.Layer.Markers('Test Layer');
35         map.addLayer(layer);
36         var marker = new OpenLayers.Marker(new OpenLayers.LonLat(5,40));
37         layer.addMarker(marker);
38         t.ok(  marker.icon.imageDiv.parentNode == layer.div, "addMarker adds marker image node into layer node." );
39         layer.removeMarker(marker);
40         t.ok(  marker.icon.imageDiv.parentNode != layer.div, "removeMarker removes marker image node from layer node." );
41         layer.addMarker(marker);
42         t.ok(  marker.icon.imageDiv.parentNode == layer.div, "addMarker adds marker image node into layer node." );
43
44         layer.markers = null;
45         layer.removeMarker(marker);
46         t.ok(true, "removing marker when no markers present does not script error");
47
48     }
49    
50     function test_markerMovement(t) {
51        
52         t.plan(6);
53        
54         var map = new OpenLayers.Map("map");
55         var layer = new OpenLayers.Layer.Markers("Base", {isBaseLayer: true});
56         map.addLayer(layer);
57         map.setCenter(new OpenLayers.LonLat(0, 0), 1);
58        
59         var size = new OpenLayers.Size(10, 10);
60         var offset = new OpenLayers.Pixel(-(size.w/2), -size.h);
61         var icon = new OpenLayers.Icon("foo", size, offset);
62         var marker = new OpenLayers.Marker(new OpenLayers.LonLat(10, -10), icon)
63         layer.addMarker(marker);
64        
65         t.eq(marker.icon.px.x, 554, "marker icon is placed at 554 px on x-axis");
66         t.eq(marker.icon.px.y, 314, "marker icon is placed at 314 px on y-axis");
67        
68         map.zoomTo(2);
69        
70         t.eq(marker.icon.px.x, 568, "marker icon moved to 568 px on x-axis");
71         t.eq(marker.icon.px.y, 328, "marker icon moved to 328 px on y-axis");
72        
73         map.zoomTo(1);
74
75         t.eq(marker.icon.px.x, 554, "marker icon moved back to 554 px on x-axis");
76         t.eq(marker.icon.px.y, 314, "marker icon moved back to 314 px on y-axis");
77        
78     }
79    
80     function test_destroy (t) {
81         t.plan( 1 );   
82         layer = new OpenLayers.Layer.Markers('Test Layer');
83         var map = new OpenLayers.Map('map');
84         map.addLayer(layer);
85         layer.destroy();
86         t.eq( layer.map, null, "layer.map is null after destroy" );
87     }
88
89     function test_getDataExtent(t) {
90         t.plan( 4 );
91
92         var layer = {};
93         var ret = OpenLayers.Layer.Markers.prototype.getDataExtent.apply(layer, []);
94         t.eq(ret, null, "does not crash, returns null on layer with null 'this.markers'");
95
96         layer.markers = [];
97         ret = OpenLayers.Layer.Markers.prototype.getDataExtent.apply(layer, []);
98         t.eq(ret, null, "returns null on layer with empty 'this.markers'");
99        
100         layer.markers.push({
101             'lonlat': new OpenLayers.LonLat(4,5)
102         });
103         var expectedBounds = new OpenLayers.Bounds(4,5,4,5);
104         ret = OpenLayers.Layer.Markers.prototype.getDataExtent.apply(layer, []);
105         t.ok(ret.equals(expectedBounds), "returns expected bounds with only one marker");
106
107         layer.markers.push({
108             'lonlat': new OpenLayers.LonLat(1,2)
109         });
110         var expectedBounds = new OpenLayers.Bounds(1,2,4,5);
111         ret = OpenLayers.Layer.Markers.prototype.getDataExtent.apply(layer, []);
112         t.ok(ret.equals(expectedBounds), "returns expected bounds with multiple markers");
113
114     }
115
116     function test_setOpacity(t) {
117         t.plan(1);
118
119         layer = new OpenLayers.Layer.Markers('Test Layer');
120
121         var opacity = 0.1234;
122        
123         for (var i = 0; i < 12; i++) {
124             layer.addMarker(new OpenLayers.Marker(new OpenLayers.LonLat(0,0), new OpenLayers.Icon()));
125         }
126
127         layer.setOpacity(opacity);
128
129         for (var i = 0; i < 4; i++) {
130             layer.addMarker(new OpenLayers.Marker(new OpenLayers.LonLat(0,0), new OpenLayers.Icon()));
131         }
132        
133         var itWorks = false;
134         for (var i = 0; i < layer.markers.length; i++) {
135             itWorks = parseFloat(layer.markers[i].icon.imageDiv.style.opacity) == opacity;
136             if (!itWorks) {
137                 break;
138             }
139         }
140         t.ok(itWorks, "setOpacity change markers opacity");
141     }
142
143   </script>
144 </head>
145 <body>
146   <div id="map" style="width: 1080px; height: 600px;"/>
147 </body>
148 </html>
Note: See TracBrowser for help on using the browser.