Project

General

Profile

1
<!doctype html public "-//W3C//DTD HTML 4.0 Frameset//EN""http://www.w3.org/TR/REC-html40/frameset.dtd">
2
<html>
3
<head>
4
<title>
5
<a href='http://mapbuilder.sourceforge.net'>Community Map Builder</a> 27 Apr 2008 Overview
6
</title>
7
<link rel ="stylesheet" type="text/css" href="stylesheet.css" title="Style">
8
<script>
9
function asd() {
10
	
11
		parent.document.title="OverviewMap.js Overview";
12
	
13
}
14
</script>
15
</head>
16
<body bgcolor="white" onload="asd();">
17

    
18
<!-- ========== START OF NAVBAR ========== -->
19
<a name="navbar_top"><!-- --></a>
20
<table border="0" width="100%" cellpadding="1" cellspacing="0">
21
<tr>
22
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
23
<a name="navbar_top_firstrow"><!-- --></a>
24
<table border="0" cellpadding="0" cellspacing="3">
25
  <tr align="center" valign="top">
26
  
27
  
28
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
29
  <td bgcolor="#FFFFFF" class="NavBarCell1Rev">	&nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
30
  
31

    
32
  <td bgcolor="#FFFFFF" class="NavBarCell1"> 	<font class="NavBarFont1">Class</font>&nbsp;</td>
33
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
34
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
35
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
36
  </tr>
37
</table>
38
</td>
39
<td bgcolor="#EEEEFF" align="right" valign="top">
40
<em>
41
<b><a href='http://mapbuilder.sourceforge.net'>Community Map Builder</a> 27 Apr 2008</b></em>
42
</td>
43
</tr>
44

    
45
<tr>
46
<td bgcolor="white" class="NavBarCell2"><font size="-2">
47
&nbsp;PREV&nbsp;
48
&nbsp;NEXT</font></td>
49
<td bgcolor="white" class="NavBarCell2"><font size="-2">
50
  <a href="index.html" target="_top"><b>FRAMES</b></a>  &nbsp;
51
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
52
&nbsp;&nbsp;
53
<script>
54
  <!--
55
  if(window==top) {
56
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
57
  }
58
  //-->
59
</script>
60
<noscript>
61
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
62
</noscript>
63
</font></td>
64
</tr>
65
</table>
66
<!-- =========== END OF NAVBAR =========== -->
67

    
68
<hr>
69
<center>
70
	
71
	   <h2>OverviewMap.js</h2>
72
	
73
</center>
74

    
75
	
76

    
77

    
78
<h4>Summary</h4>
79
<p>
80
	
81
		No overview generated for 'OverviewMap.js'<BR/><BR/>
82
	
83
</p>
84

    
85
<hr>
86

    
87

    
88
    <table border="1" cellpadding="3" cellspacing="0" width="100%">
89
    <tr bgcolor="#CCCCFF" class="TableHeadingColor">
90
    <td colspan=2><font size="+2">
91
    
92
        <b>Class Summary</b>
93
    
94
    </font></td>
95
    </tr>
96
    
97
    <tr bgcolor="white" class="TableRowColor">
98
    <td width="15%"><b><a href="OverviewMap.html">OverviewMap</a></b></td>
99
    <td>&nbsp;</td>
100
    </tr>
101
    
102
    </table>
103
    <hr/> 
104

    
105

    
106
<!-- ========== METHOD SUMMARY =========== -->
107

    
108
<!-- ========== END METHOD SUMMARY =========== -->
109

    
110

    
111
        <pre class="sourceview"><span class="comment">/*
112
Author:       Gertjan van Oosten gertjan at west dot nl
113
License:      LGPL as per: http://www.gnu.org/copyleft/lesser.html
114

    
115
$Id: OverviewMap.js 3887 2008-02-27 18:18:53Z ahocevar $
116
*/</span>
117
<span class="comment">
118
// Ensure this object's dependancies are loaded.</span>
119
mapbuilder.loadScript(baseDir+<span class="literal">"/util/openlayers/OpenLayers.js"</span>);
120
mapbuilder.loadScript(baseDir+<span class="literal">"/widget/WidgetBase.js"</span>);
121

    
122
<span class="comment">/**
123
 * Widget to add an OL OverviewMap to a main map.
124
 * <span class="attrib">@constructor</span>
125
 * <span class="attrib">@base</span> WidgetBase
126
 * <span class="attrib">@param</span> widgetNode  The widget's XML object node from the configuration document.
127
 * <span class="attrib">@param</span> model       The model object that this widget belongs to.
128
 */</span>
129
<span class="reserved">function</span> OverviewMap(widgetNode, model) {
130
  WidgetBase.apply(<span class="reserved">this</span>,new Array(widgetNode, model));
131

    
132
  var width = <span class="reserved">this</span>.getProperty(<span class="literal">"mb:width"</span>);
133
  <span class="reserved">if</span> (width) {
134
    <span class="reserved">this</span>.width = new Number(width);
135
  }
136
  var height = <span class="reserved">this</span>.getProperty(<span class="literal">"mb:height"</span>);
137
  <span class="reserved">if</span> (height) {
138
    <span class="reserved">this</span>.height = new Number(height);
139
  }
140
  var minRatio = <span class="reserved">this</span>.getProperty(<span class="literal">"mb:minRatio"</span>);
141
  <span class="reserved">if</span> (minRatio) {
142
    <span class="reserved">this</span>.minRatio = new Number(minRatio);
143
  }
144
  var maxRatio = <span class="reserved">this</span>.getProperty(<span class="literal">"mb:maxRatio"</span>);
145
  <span class="reserved">if</span> (maxRatio) {
146
    <span class="reserved">this</span>.maxRatio = new Number(maxRatio);
147
  }
148

    
149
  var layersNode = widgetNode.selectSingleNode(<span class="literal">"mb:layers"</span>);
150
  <span class="reserved">if</span> (layersNode) {
151
    <span class="reserved">this</span>.layerNames = new Array();
152
    var layers = layersNode.childNodes;
153
    <span class="reserved">for</span> (var i = 0; i &lt; layers.length; i++) {
154
      <span class="reserved">if</span> (layers[i].firstChild) {
155
        <span class="reserved">this</span>.layerNames.push(getNodeValue(layers[i]));
156
      }
157
    }
158
  }
159

    
160
  <span class="reserved">this</span>.model.addListener(<span class="literal">"refresh"</span>, <span class="reserved">this</span>.addOverviewMap, <span class="reserved">this</span>);
161
}
162

    
163
<span class="comment">/**
164
 * Add an overview map to the map in this widget's model.
165
 * If layers have been specified in the config, clone these layers for the
166
 * overview map, otherwise just use the base layer from the main map.
167
 * If any of the layers to use are WMS layers it uses an untiled version of them.
168
 * <span class="attrib">@param</span> objRef Pointer to widget object.
169
 */</span>
170
OverviewMap.<span class="reserved">prototype</span>.addOverviewMap = <span class="reserved">function</span>(objRef) {
171
  <span class="reserved">if</span> (objRef.model &amp;&amp; objRef.model.map) {
172
    var map = objRef.model.map;
173
    
174
    <span class="comment">/** reference to the OpenLayers OverviewMap control */</span>
175
    <span class="reserved">this</span>.control = null
176
<span class="comment">
177
    // Specify div and layers for overview map.</span>
178
    var options = {
179
      div: objRef.getNode(),
180
      objRef: <span class="reserved">this</span>,
181
      destroy: <span class="reserved">function</span>() {
182
        OpenLayers.Control.OverviewMap.<span class="reserved">prototype</span>.destroy.apply(<span class="reserved">this</span>, arguments);
183
        <span class="reserved">this</span>.div = null;
184
        objRef.control = null;
185
        objRef = null;
186
      },
187
      layers: new Array()
188
    };
189
    
190
    <span class="reserved">if</span> (objRef.minRatio) options.minRatio = objRef.minRatio;
191
    <span class="reserved">if</span> (objRef.maxRatio) options.maxRatio = objRef.maxRatio;
192
<span class="comment">
193
    // Clone the base layer. This is not really the OpenLayers base layer, but</span>
194
<span class="comment">    // the lowest layer in the Mapbuilder layers stack.</span>
195
    <span class="reserved">if</span> (!objRef.layerNames) {
196
      <span class="reserved">for</span> (var i in map.mbMapPane.oLlayers) {
197
        var oLlayer = map.mbMapPane.oLlayers[i];
198
        <span class="reserved">if</span> (oLlayer) {
199
          var baseLayer = objRef.getClonedLayer(oLlayer, true);
200
          options.layers.push(baseLayer);
201
          break;
202
        } 
203
      }
204
    }
205
<span class="comment">
206
    // Check for specifically requested layers</span>
207
    var isBaseLayer = true;
208
    <span class="reserved">if</span> (objRef.layerNames) {
209
      <span class="reserved">for</span> (var i = 0; i &lt; objRef.layerNames.length; i++) {
210
        var oLlayer = map.mbMapPane.getLayer(map.mbMapPane, objRef.layerNames[i]);
211
        <span class="reserved">if</span> (oLlayer) {
212
          options.layers.push(objRef.getClonedLayer(oLlayer, isBaseLayer));
213
          isBaseLayer = false;
214
        }
215
      }
216
    }
217
<span class="comment">    
218
    // Determine size:</span>
219
<span class="comment">    // - if width and height are both set, use these as the size;</span>
220
<span class="comment">    // - if only width or height is set, take aspect ratio of main map into account;</span>
221
<span class="comment">    // - otherwise, OL defaults to (180,90).</span>
222
    var extent = map.getExtent();
223
    <span class="reserved">if</span> (objRef.width &amp;&amp; objRef.height) {
224
      options.size = new OpenLayers.Size(objRef.width, objRef.height);
225
    }
226
    <span class="reserved">else</span> <span class="reserved">if</span> (objRef.width) {
227
      options.size = new OpenLayers.Size(
228
        objRef.width,
229
        objRef.width * extent.getHeight() / extent.getWidth());
230
    }
231
    <span class="reserved">else</span> <span class="reserved">if</span> (objRef.height) {
232
      options.size = new OpenLayers.Size(
233
        objRef.height * extent.getWidth() / extent.getHeight(),
234
        objRef.height);
235
    }
236
<span class="comment">
237
    // Add the overview to the main map</span>
238
    <span class="reserved">if</span> (!objRef.control) {
239
      objRef.control = new OpenLayers.Control.OverviewMap(options);
240
      objRef.control.mapOptions = {theme: null};
241
      map.addControl(objRef.control);
242
    }
243
<span class="comment">
244
    // make all layers visible</span>
245
    <span class="reserved">for</span> (var i=0; i&lt;options.layers.length; i++) {
246
      options.layers[i].setVisibility(true);
247
    }
248
  }
249
}
250

    
251
<span class="comment">/**
252
 * Clone a map layer (OpenLayers.Layer subclass).
253
 * If the layer is a WMS layer it returns an untiled version of it.
254
 * <span class="attrib">@param</span> layer Pointer to layer object.
255
 * <span class="attrib">@param</span> isBaseLayer {Boolean} optional parameter: should the layer become
256
 * baselayer on the overview map?
257
 */</span>
258
OverviewMap.<span class="reserved">prototype</span>.getClonedLayer = <span class="reserved">function</span>(layer, isBaseLayer) {
259
  <span class="reserved">if</span> (layer == null) {
260
    <span class="reserved">return</span> null;
261
  }
262
  
263
  isBaseLayer = isBaseLayer ? true : false;
264

    
265
  <span class="reserved">if</span> (layer instanceof OpenLayers.Layer.WMS) {
266
<span class="comment">    // make an untiled wms layer, with ratio 1</span>
267
    var layerOptions = {
268
      units: layer.units,
269
      projection: layer.projection,
270
      maxExtent: layer.maxExtent,
271
      maxResolution: <span class="literal">"auto"</span>,
272
      ratio: 1,
273
      singleTile: true,
274
      isBaseLayer: isBaseLayer
275
    };
276

    
277
    <span class="reserved">return</span> new OpenLayers.Layer.WMS(layer.name,
278
      layer.url, {
279
        layers: layer.params.LAYERS,
280
        format: layer.params.FORMAT,
281
        transparent: layer.params.TRANSPARENT,
282
        sld: layer.params.SLD,
283
        sld_body: layer.params.SLD_BODY,
284
        styles: layer.params.STYLES
285
      }, layerOptions);
286
  }
287
  <span class="reserved">else</span> {
288
<span class="comment">    // take the layer as-is and clone it</span>
289
    var clonedLayer = layer.clone();
290
    clonedLayer.setVisibility(true);
291
    <span class="reserved">return</span> clonedLayer;
292
  }
293
}
294
  
295
</pre>
296
	<hr>
297

    
298

    
299

    
300
<!-- ========== START OF NAVBAR ========== -->
301
<a name="navbar_top"><!-- --></a>
302
<table border="0" width="100%" cellpadding="1" cellspacing="0">
303
<tr>
304
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
305
<a name="navbar_top_firstrow"><!-- --></a>
306
<table border="0" cellpadding="0" cellspacing="3">
307
  <tr align="center" valign="top">
308
  
309
  
310
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
311
  <td bgcolor="#FFFFFF" class="NavBarCell1Rev">	&nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
312
  
313

    
314
  <td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font>&nbsp;</td>
315
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
316
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
317
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
318
  </tr>
319
</table>
320
</td>
321
<td bgcolor="#EEEEFF" align="right" valign="top"><em>
322
<b><a href='http://mapbuilder.sourceforge.net'>Community Map Builder</a> 27 Apr 2008</b></em>
323
</td>
324
</tr>
325

    
326
<tr>
327
<td bgcolor="white" class="NavBarCell2"><font size="-2">
328
&nbsp;PREV&nbsp;
329
&nbsp;NEXT</font></td>
330
<td bgcolor="white" class="NavBarCell2"><font size="-2">
331
  <a href="index.html" target="_top"><b>FRAMES</b></a>  &nbsp;
332
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
333
&nbsp;&nbsp;
334
<script>
335
  <!--
336
  if(window==top) {
337
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
338
  }
339
  //-->
340
</script>
341
<noscript>
342
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
343
</noscript>
344
</font></td>
345
</tr>
346
</table>
347
<!-- =========== END OF NAVBAR =========== -->
348

    
349
<hr>
350
<font size="-1">
351

    
352
</font>
353
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Sun Apr 27 20:30:54 2008</div>
354
</body>
355
</html>
(274-274/316)