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="GmlRendererOL.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>GmlRendererOL.js</h2>
72
	
73
</center>
74

    
75
	
76

    
77

    
78
<h4>Summary</h4>
79
<p>
80
	
81
		No overview generated for 'GmlRendererOL.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="GmlRendererOL.html">GmlRendererOL</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:       Andreas Hocevar andreas.hocevarATgmail.com
113
License:      LGPL as per: http://www.gnu.org/copyleft/lesser.html
114

    
115
$Id: GmlRendererOL.js 3962 2008-04-01 13:21:42Z ahocevar $
116
*/</span>
117
<span class="comment">
118
// Ensure this object's dependancies are loaded.</span>
119
mapbuilder.loadScript(baseDir+<span class="literal">"/widget/GmlRendererBase.js"</span>);
120

    
121
<span class="comment">/**
122
 * Render GML into HTML.
123
 * this.targetModel references the context model for the map
124
 * where the content of this widget should be rendered to.
125
 * If the model doc is not wfs compliant, a stylesheet
126
 * property has to be set for this widget. The xsl file
127
 * referenced in this property transforms the model doc to
128
 * a wfs FeatureCollection.
129
 * <span class="attrib">@constructor</span>
130
 * <span class="attrib">@base</span> GmlRendererBase
131
 * <span class="attrib">@param</span> widgetNode  The widget's XML object node from the configuration document.
132
 * <span class="attrib">@param</span> model       The model object that this widget belongs to.
133
 */</span>
134
<span class="reserved">function</span> GmlRendererOL(widgetNode, model) {
135
  GmlRendererBase.apply(<span class="reserved">this</span>,new Array(widgetNode, model));
136
<span class="comment">  
137
  // create modified OpenLayers GML layer class, which</span>
138
<span class="comment">  // uses a gml doc directly instead of loading it from</span>
139
<span class="comment">  // an URL</span>
140
  var OlLayer = OpenLayers.Class(OpenLayers.Layer.GML, {
141
  
142
    loadGML: <span class="reserved">function</span>() {
143
      <span class="reserved">if</span> (!<span class="reserved">this</span>.loaded) {
144
        var gml = new OpenLayers.Format.GML();
145
        try {
146
          <span class="reserved">this</span>.proj = <span class="reserved">this</span>.projection;
147
          <span class="reserved">this</span>.addFeatures(gml.read(<span class="reserved">this</span>.mbWidget.renderDoc));
148
          <span class="reserved">this</span>.loaded = true;
149
        } catch (e) {
150
          alert(mbGetMessage(<span class="literal">"documentParseError"</span>),
151
              new XMLSerializer().serializeToString(<span class="reserved">this</span>.mbWidget.renderDoc));
152
        }
153
      }
154
    },
155
<span class="comment">    
156
    // let the layer always be visible, independent of the resolution</span>
157
    calculateInRange: <span class="reserved">function</span>() {
158
      <span class="reserved">return</span> true;
159
    },
160
<span class="comment">    
161
    // make destroyFeatures bullet-proof to work with undefined geometries</span>
162
    destroyFeatures: <span class="reserved">function</span>() {
163
      var features = <span class="reserved">this</span>.features;
164
      var featuresToRemove = [];
165
      var feature;
166
      <span class="reserved">for</span> (var i=0; i&lt;features.length; i++) {
167
        feature = features[i];
168
        feature.mbWidgetConfig = null;
169
        <span class="reserved">if</span> (!feature.geometry) {
170
          featuresToRemove.push(feature);
171
        }
172
      }
173
      <span class="reserved">this</span>.removeFeatures(featuresToRemove);
174
      <span class="reserved">for</span> (var i=0; i&lt;featuresToRemove.length; i++) {
175
        featuresToRemove[i].destroy();
176
      }
177
      OpenLayers.Layer.GML.<span class="reserved">prototype</span>.destroyFeatures.apply(<span class="reserved">this</span>, arguments);
178
    },
179
  
180
    preFeatureInsert: <span class="reserved">function</span>(feature) {
181
      <span class="reserved">if</span> (feature.geometry) {
182
<span class="comment">        // check if there is a source model linked with this feature</span>
183
        var sourceNode = <span class="reserved">this</span>.mbWidget.model.doc.selectSingleNode(<span class="literal">"//*[@fid='"</span>+feature.fid+<span class="literal">"']"</span>);
184
        var sourceModel = null;
185
        <span class="reserved">if</span> (sourceNode) {
186
          sourceModel = sourceNode.getAttribute(<span class="literal">'sourceModel'</span>);
187
        }
188
<span class="comment">        // if so, use the config from the source model</span>
189
        var widgetConfig = null;
190
        <span class="reserved">if</span> (sourceModel &amp;&amp; config.objects[sourceModel].config &amp;&amp; config.objects[sourceModel].config[<span class="reserved">this</span>.mbWidget.id]) {
191
          widgetConfig = config.objects[sourceModel].config[<span class="reserved">this</span>.mbWidget.id];
192
        } <span class="reserved">else</span> {
193
          widgetConfig = <span class="reserved">this</span>.mbWidget.config;
194
        }
195
        feature.mbWidgetConfig = widgetConfig;
196
        <span class="reserved">if</span> (!widgetConfig.sourceSRS) {
197
          <span class="reserved">if</span> (widgetConfig.featureSRS) {
198
            widgetConfig.sourceSRS = new OpenLayers.Projection(widgetConfig.featureSRS);
199
          } <span class="reserved">else</span> {
200
            widgetConfig.sourceSRS = null;
201
          }
202
        }
203
<span class="comment">        //in the future this will be handled internally to OpenLayers</span>
204
        <span class="reserved">if</span> (widgetConfig.sourceSRS) {
205
          <span class="reserved">this</span>.convertPoints(feature.geometry, widgetConfig.sourceSRS);
206
        }  
207
      }
208
    },
209
    
210
    drawFeature: <span class="reserved">function</span>(feature, style) {
211
<span class="comment">      // set styles before rendering the feature</span>
212
      var widgetConfig = feature.mbWidgetConfig;
213
      <span class="reserved">if</span> (widgetConfig) {
214
        feature.style = null;
215
        <span class="reserved">if</span> (widgetConfig.defaultStyle &amp;&amp; style != <span class="literal">"select"</span>) {
216
          feature.style = widgetConfig.defaultStyle.createSymbolizer ?
217
              widgetConfig.defaultStyle.createSymbolizer(feature) :
218
              widgetConfig.defaultStyle;
219
        }
220
<span class="comment">        // set select styles</span>
221
        <span class="reserved">if</span> (widgetConfig &amp;&amp; widgetConfig.selectStyle) {
222
          feature.mbSelectStyle = widgetConfig.selectStyle;
223
        }
224
      }
225
      OpenLayers.Layer.GML.<span class="reserved">prototype</span>.drawFeature.apply(<span class="reserved">this</span>, arguments);
226
    },
227
    
228
    convertPoints: <span class="reserved">function</span>(component, sourceSRS) {
229
      <span class="reserved">if</span> (component.CLASS_NAME == <span class="literal">'OpenLayers.Geometry.Point'</span>) {
230
        component.transform(sourceSRS, <span class="reserved">this</span>.proj);
231
      } <span class="reserved">else</span> {
232
        <span class="reserved">for</span> (var i=0; i&lt;component.components.length; ++i) {
233
          <span class="reserved">this</span>.convertPoints(component.components[i], sourceSRS);
234
        }
235
      }
236
    },
237
    
238
    <span class="comment">/**
239
     * gets a feature from the gmlRendererLayer by GML feature id.
240
     * <span class="attrib">@param</span> fid GML feature id of the feature
241
     * <span class="attrib">@return</span> feature OpenLayers feature matching fid
242
     */</span>
243
    getFeatureByFid: <span class="reserved">function</span>(fid) {
244
      <span class="reserved">if</span> (!<span class="reserved">this</span>.features) {
245
        <span class="reserved">return</span> null;
246
      }
247
      <span class="reserved">for</span> (var i = 0; i &lt; <span class="reserved">this</span>.features.length; ++i) {
248
        <span class="reserved">if</span> (<span class="reserved">this</span>.features[i].fid == fid) {
249
          <span class="reserved">return</span> <span class="reserved">this</span>.features[i];
250
        }
251
      }
252
    },
253
    
254
    destroy: <span class="reserved">function</span>() {
255
      <span class="reserved">this</span>.mbWidget = null;
256
      OpenLayers.Layer.Vector.<span class="reserved">prototype</span>.destroy.apply(<span class="reserved">this</span>, arguments);
257
    }
258
  });
259

    
260
  <span class="comment">/** OpenLayers GML layer which renders the model doc */</span>
261
  <span class="reserved">this</span>.olLayer = null;
262
  
263
  <span class="comment">/**
264
   * Style object for default renderer styling of features.
265
   * This holds one style for each OpenLayers feature class
266
   */</span>
267
  <span class="reserved">this</span>.defaultStyle = null;
268

    
269
  <span class="comment">/**
270
   * Style object for default renderer styling of features.
271
   * This holds one style for each OpenLayers feature class
272
   */</span>
273
  <span class="reserved">this</span>.selectStyle = null;
274
    
275
  <span class="comment">/**
276
   * Features that shall not be drawn
277
   */</span>
278
  <span class="reserved">this</span>.hiddenFeatures = new Array();
279
<span class="comment">  
280
  // replacement for deprecated MapContainerBase</span>
281
  <span class="reserved">this</span>.containerNodeId = <span class="reserved">this</span>.htmlTagId;
282
  model.containerModel = <span class="reserved">this</span>.targetModel;
283
<span class="comment">  
284
  // Set this.stylesheet. This is taken from WidgetBaseXSL.js</span>
285
  <span class="reserved">if</span> ( !<span class="reserved">this</span>.stylesheet ) {
286
    var styleNode = widgetNode.selectSingleNode(<span class="literal">"mb:stylesheet"</span>);
287
    <span class="reserved">if</span> (styleNode) {
288
      <span class="reserved">this</span>.stylesheet = new XslProcessor(getNodeValue(styleNode), model.namespace);
289
      <span class="reserved">this</span>.stylesheet.setParameter(<span class="literal">"proxyUrl"</span>, config.proxyUrl);
290
    }
291
  }
292
<span class="comment">
293
  // set the hover cursor.</span>
294
  <span class="reserved">this</span>.hoverCursor = <span class="reserved">this</span>.getProperty(<span class="literal">'mb:hoverCursor'</span>, <span class="literal">'pointer'</span>);
295

    
296
  <span class="reserved">this</span>.paint = <span class="reserved">function</span>(objRef) {
297
    <span class="reserved">if</span> (objRef.targetModel.map) {
298
<span class="comment">      // remove features from layer</span>
299
      <span class="reserved">if</span> (objRef.olLayer) {
300
        objRef.model.setParam(<span class="literal">'gmlRendererLayer'</span>, null);
301
      }
302
<span class="comment">      // transform the model using the xsl stylesheet if there is one,</span>
303
<span class="comment">      // otherwise just take the model doc.</span>
304
      objRef.renderDoc = objRef.stylesheet ? objRef.stylesheet.transformNodeToObject(objRef.model.doc) : objRef.model.doc;
305
<span class="comment">      // nothing to do here if there is no model doc</span>
306
      <span class="reserved">if</span> (!objRef.renderDoc) {
307
        <span class="reserved">return</span>;
308
      }
309
<span class="comment">
310
      // keep a reference to the map we created the layer for</span>
311
      objRef.map = objRef.targetModel.map;
312
<span class="comment">      
313
      // add own model to array of configurations</span>
314
      var models = [objRef.model];
315
<span class="comment">      // get configurations from source models, if any</span>
316
      <span class="reserved">if</span> (objRef.model.mergeModels) {
317
        <span class="reserved">for</span> (var i=0; i&lt;objRef.model.mergeModels.length; i++) {
318
          models.push(objRef.model.mergeModels[i]);
319
        }
320
      }
321
<span class="comment">      // store configurations for each source model</span>
322
      <span class="reserved">for</span> (var i = 0; i &lt; models.length; i++) {
323
        var widgetConfig = config.objects[models[i].id].config ? config.objects[models[i].id].config[objRef.id] : null;
324
        <span class="reserved">if</span> (!widgetConfig) {
325
          widgetConfig = objRef.config;
326
        }
327
        <span class="reserved">if</span> (widgetConfig.sldModelNode) {
328
          var sldModel = config.objects[getNodeValue(widgetConfig.sldModelNode)];
329
          <span class="reserved">if</span> (sldModel) {
330
            sldModel.addListener(<span class="literal">"loadModel"</span>, objRef.paint, objRef);
331
            <span class="reserved">if</span> (!sldModel.doc) {
332
              <span class="reserved">return</span>;
333
            }
334
            var sldNode = sldModel.getSldNode();
335
            <span class="reserved">if</span> (sldModel.sld) {
336
              var namedLayer = sldModel.sld.namedLayers[objRef.id].userStyles;
337
              <span class="reserved">for</span> (var j=0; j&lt;namedLayer.length; ++j) {
338
              	namedLayer[j].propertyStyles = namedLayer[j].findPropertyStyles();
339
              	<span class="reserved">if</span> (namedLayer[j].name == widgetConfig.defaultStyleName) {
340
              	  widgetConfig.defaultStyle = namedLayer[j];
341
              	}
342
              	<span class="reserved">if</span> (namedLayer[j].name == widgetConfig.selectStyleName) {
343
              	  widgetConfig.selectStyle = namedLayer[j];
344
              	}
345
              }
346
              <span class="reserved">if</span> (widgetConfig.selectStyle) {
347
                widgetConfig.selectStyle.defaultStyle.cursor = objRef.hoverCursor;
348
              }
349
            } <span class="reserved">else</span> <span class="reserved">if</span> (sldNode) {
350
              widgetConfig.defaultStyle =
351
                  sld2OlStyle(sldNode.selectSingleNode(<span class="literal">"//*[wmc:Name='"</span>+widgetConfig.defaultStyleName+<span class="literal">"']"</span>));
352
              widgetConfig.selectStyle =
353
                  sld2OlStyle(sldNode.selectSingleNode(<span class="literal">"//*[wmc:Name='"</span>+widgetConfig.selectStyleName+<span class="literal">"']"</span>));
354
              <span class="reserved">if</span> (widgetConfig.selectStyle) {
355
                widgetConfig.selectStyle.cursor = objRef.hoverCursor;
356
              }
357
            }
358
          }
359
        }
360
      }
361
      
362
      <span class="reserved">if</span> (!objRef.olLayer || !objRef.olLayer.mbWidget) {
363
        objRef.olLayer = new OlLayer(objRef.id, null, {mbWidget: objRef});
364
        objRef.targetModel.map.addLayer(objRef.olLayer);
365
      } <span class="reserved">else</span> {
366
        objRef.olLayer.loaded = false;
367
        objRef.olLayer.destroyFeatures();
368
        objRef.olLayer.loadGML();
369
      }
370
      objRef.removeHiddenFeatures(objRef);
371
      
372
      objRef.model.setParam(<span class="literal">'gmlRendererLayer'</span>, objRef.olLayer);
373
    }
374
<span class="comment">    // We add a refresh listener to the targetModel. This way we</span>
375
<span class="comment">    // can be sure that the gml renderer is reloaded when the</span>
376
<span class="comment">    // map is refreshed, and also if the map did not exist yet</span>
377
<span class="comment">    // when paint was called for the first time.</span>
378
    objRef.targetModel.addListener(<span class="literal">'refresh'</span>, objRef.paint, objRef);
379
  }
380
  <span class="reserved">this</span>.model.addListener(<span class="literal">"refresh"</span>,<span class="reserved">this</span>.paint, <span class="reserved">this</span>);
381
  
382
  <span class="comment">/**
383
   * Called when the context's hidden attribute changes.
384
   * <span class="attrib">@param</span> objRef This object.
385
   * <span class="attrib">@param</span> layerName  The name of the layer that was toggled.
386
   */</span>
387
  <span class="reserved">this</span>.hiddenListener=<span class="reserved">function</span>(objRef, layerName){
388
<span class="comment">    //TBD not yet implemented</span>
389
    alert(<span class="literal">'hide/unhide '</span>+layerName);
390
  }
391
  <span class="reserved">this</span>.model.addListener(<span class="literal">"hidden"</span>,<span class="reserved">this</span>.hiddenListener,<span class="reserved">this</span>);
392
  
393
  <span class="comment">/**
394
   * Hides the feature specified by its fid from the map
395
   * <span class="attrib">@param</span> objRef this widget
396
   * <span class="attrib">@param</span> fid feature id of the feature to hide. If it is null,
397
   * the hideFeature param of the model will be used.
398
   */</span>
399
  <span class="reserved">this</span>.hideFeature = <span class="reserved">function</span>(objRef, fid) {
400
    <span class="reserved">if</span> (!fid) {
401
      fid = objRef.model.getParam(<span class="literal">'hideFeature'</span>);
402
    }
403
    var feature = objRef.olLayer.getFeatureByFid(fid);
404
    <span class="reserved">if</span> (feature) {
405
      objRef.hiddenFeatures.push(fid);
406
<span class="comment">      // mark the feature as hidden - this will be checked by other widgets</span>
407
      feature.mbHidden = true;
408
      objRef.olLayer.renderer.eraseGeometry(feature.geometry);      
409
    }
410
  }
411
  <span class="reserved">this</span>.model.addListener(<span class="literal">"hideFeature"</span>, <span class="reserved">this</span>.hideFeature, <span class="reserved">this</span>);
412
  
413
  <span class="comment">/**
414
   * Shows the feature specified by its fid in the map
415
   * <span class="attrib">@param</span> objRef this widget
416
   * <span class="attrib">@param</span> fid feature id of the feature to show. If it is null,
417
   * the showFeature param of the model will be used.
418
   */</span>
419
  <span class="reserved">this</span>.showFeature = <span class="reserved">function</span>(objRef, fid) {
420
    <span class="reserved">if</span> (!fid) {
421
      fid = objRef.model.getParam(<span class="literal">'showFeature'</span>);
422
    }
423
    var feature = objRef.olLayer.getFeatureByFid(fid);
424
    <span class="reserved">if</span> (feature) {
425
      OpenLayers.Util.removeItem(objRef.hiddenFeatures, fid);
426
<span class="comment">      // mark the feature as visible - this will be checked by other widgets</span>
427
      feature.mbHidden = false;
428
      objRef.olLayer.drawFeature(feature);
429
    }
430
  }
431
  <span class="reserved">this</span>.model.addListener(<span class="literal">"showFeature"</span>, <span class="reserved">this</span>.showFeature, <span class="reserved">this</span>);
432
  
433
  <span class="reserved">this</span>.removeHiddenFeatures = <span class="reserved">function</span>(objRef) {
434
    <span class="reserved">if</span> (objRef.olLayer) {
435
<span class="comment">      // remove hidden features</span>
436
      var hiddenFeatures = objRef.hiddenFeatures.toString().split(/,/);
437
      objRef.hiddenFeatures = new Array();
438
      <span class="reserved">for</span> (var i=0; i&lt;hiddenFeatures.length; i++) {
439
        <span class="reserved">if</span> (hiddenFeatures[i]) {
440
          objRef.hideFeature(objRef, hiddenFeatures[i]);
441
        }
442
      }
443
    }
444
  }
445
  
446
  
447
  <span class="comment">/**
448
   * Initializes this widget
449
   * <span class="attrib">@param</span> objRef This object
450
   */</span>
451
  <span class="reserved">this</span>.init = <span class="reserved">function</span>(objRef) {
452
    var clickWidgetNode =  widgetNode.selectSingleNode(<span class="literal">"mb:featureOnClick"</span>);
453
    <span class="reserved">if</span> (clickWidgetNode) {
454
      var clickWidget = config.objects[getNodeValue(clickWidgetNode)];
455
      objRef.model.addListener(<span class="literal">"olFeatureSelect"</span>, clickWidget.onClick, clickWidget);
456
    }
457
    var hoverWidgetNode =  widgetNode.selectSingleNode(<span class="literal">"mb:featureOnHover"</span>);
458
    <span class="reserved">if</span> (hoverWidgetNode) {
459
      var hoverWidget = config.objects[getNodeValue(hoverWidgetNode)];
460
      objRef.model.addListener(<span class="literal">"olFeatureHover"</span>, hoverWidget.onMouseover, hoverWidget);
461
      objRef.model.addListener(<span class="literal">"olFeatureOut"</span>, hoverWidget.onMouseout, hoverWidget);
462
    }
463
    objRef.targetModel.addListener(<span class="literal">"aoi"</span>, objRef.removeHiddenFeatures, objRef);
464
  }
465
  <span class="reserved">this</span>.model.addListener(<span class="literal">"init"</span>, <span class="reserved">this</span>.init, <span class="reserved">this</span>);
466
  
467
  <span class="reserved">this</span>.model.removeListener(<span class="literal">"newModel"</span>, <span class="reserved">this</span>.clearWidget, <span class="reserved">this</span>);
468
  <span class="reserved">this</span>.clearWidget = <span class="reserved">function</span>(objRef) {
469
    <span class="reserved">if</span> (objRef.olLayer) {
470
      objRef.olLayer.loaded = false;
471
      <span class="reserved">for</span> (var i=0; i&lt;objRef.olLayer.map.controls.length; i++) {
472
        <span class="reserved">if</span> (objRef.olLayer.map.controls[i].layer == objRef.olLayer) {
473
          objRef.olLayer.map.controls[i].destroy();
474
        }
475
      }
476
      objRef.olLayer.destroy();
477
      objRef.olLayer = null;
478
    }
479
  }
480
  <span class="reserved">this</span>.model.addListener(<span class="literal">"newModel"</span>, <span class="reserved">this</span>.clearWidget, <span class="reserved">this</span>);
481
}
482
</pre>
483
	<hr>
484

    
485

    
486

    
487
<!-- ========== START OF NAVBAR ========== -->
488
<a name="navbar_top"><!-- --></a>
489
<table border="0" width="100%" cellpadding="1" cellspacing="0">
490
<tr>
491
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
492
<a name="navbar_top_firstrow"><!-- --></a>
493
<table border="0" cellpadding="0" cellspacing="3">
494
  <tr align="center" valign="top">
495
  
496
  
497
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
498
  <td bgcolor="#FFFFFF" class="NavBarCell1Rev">	&nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
499
  
500

    
501
  <td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font>&nbsp;</td>
502
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
503
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
504
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
505
  </tr>
506
</table>
507
</td>
508
<td bgcolor="#EEEEFF" align="right" valign="top"><em>
509
<b><a href='http://mapbuilder.sourceforge.net'>Community Map Builder</a> 27 Apr 2008</b></em>
510
</td>
511
</tr>
512

    
513
<tr>
514
<td bgcolor="white" class="NavBarCell2"><font size="-2">
515
&nbsp;PREV&nbsp;
516
&nbsp;NEXT</font></td>
517
<td bgcolor="white" class="NavBarCell2"><font size="-2">
518
  <a href="index.html" target="_top"><b>FRAMES</b></a>  &nbsp;
519
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
520
&nbsp;&nbsp;
521
<script>
522
  <!--
523
  if(window==top) {
524
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
525
  }
526
  //-->
527
</script>
528
<noscript>
529
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
530
</noscript>
531
</font></td>
532
</tr>
533
</table>
534
<!-- =========== END OF NAVBAR =========== -->
535

    
536
<hr>
537
<font size="-1">
538

    
539
</font>
540
<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>
541
</body>
542
</html>
(247-247/316)