Bienvenue sur PostGIS.fr

Bienvenue sur PostGIS.fr , le site de la communauté des utilisateurs francophones de PostGIS.

PostGIS ajoute le support d'objets géographique à la base de données PostgreSQL. En effet, PostGIS "spatialise" le serverur PostgreSQL, ce qui permet de l'utiliser comme une base de données SIG.

Maintenu à jour, en fonction de nos disponibilités et des diverses sorties des outils que nous testons, nous vous proposons l'ensemble de nos travaux publiés en langue française.

source: trunk/workshop-routing-foss4g/web/GeoExt/examples/tmp/examples.js @ 76

Revision 76, 72.1 KB checked in by djay, 12 years ago (diff)

Ajout du répertoire web

  • Property svn:executable set to *
Line 
1/**
2 * Copyright (c) 2008-2009 The Open Source Geospatial Foundation
3 *
4 * Published under the BSD license.
5 * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
6 * of the license.
7 */
8
9/** api: example[attribute-form]
10 *  Attribute Form
11 *  --------------
12 *  Create a form with fields from attributes read from a WFS
13 *  DescribeFeatureType response
14 */
15
16var form;
17
18Ext.onReady(function() {
19    Ext.QuickTips.init();
20
21    // create attributes store
22    var attributeStore = new GeoExt.data.AttributeStore({
23        url: "data/describe_feature_type.xml"
24    });
25
26    form = new Ext.form.FormPanel({
27        renderTo: document.body,
28        autoScroll: true,
29        height: 300,
30        width: 350,
31        defaults: {
32            width: 120,
33            maxLengthText: "too long",
34            minLengthText: "too short"
35        },
36        plugins: [
37            new GeoExt.plugins.AttributeForm({
38                attributeStore: attributeStore
39            })
40        ]
41    });
42
43    attributeStore.load();
44});
45/**
46 * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
47 *
48 * Published under the BSD license.
49 * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
50 * of the license.
51 */
52
53/** api: example[attributes]
54 *  Attribute Store & Reader
55 *  ------------------------
56 *  Create records with attribute types and values with an AttributeStore.
57 */
58
59var store;
60Ext.onReady(function() {
61   
62    // create a new attributes store
63    store = new GeoExt.data.AttributeStore({
64        url: "data/describe_feature_type.xml"
65    });
66    store.load();
67
68    // create a grid to display records from the store
69    var grid = new Ext.grid.GridPanel({
70        title: "Feature Attributes",
71        store: store,
72        cm: new Ext.grid.ColumnModel([
73            {id: "name", header: "Name", dataIndex: "name", sortable: true},
74            {id: "type", header: "Type", dataIndex: "type", sortable: true}
75        ]),
76        sm: new Ext.grid.RowSelectionModel({singleSelect:true}),
77        autoExpandColumn: "name",
78        renderTo: document.body,
79        height: 300,
80        width: 350
81    });   
82
83});
84/**
85 * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
86 *
87 * Published under the BSD license.
88 * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
89 * of the license.
90 */
91
92/** api: example[feature-grid]
93 *  Grid with Features
94 *  ------------------
95 *  Synchronize selection of features between a grid and a layer.
96 */
97
98var mapPanel, store, gridPanel, mainPanel;
99
100Ext.onReady(function() {
101    // create map instance
102    var map = new OpenLayers.Map();
103    var wmsLayer = new OpenLayers.Layer.WMS(
104        "vmap0",
105        "http://vmap0.tiles.osgeo.org/wms/vmap0",
106        {layers: 'basic'}
107    );
108
109    // create vector layer
110    var vecLayer = new OpenLayers.Layer.Vector("vector");
111    map.addLayers([wmsLayer, vecLayer]);
112
113    // create map panel
114    mapPanel = new GeoExt.MapPanel({
115        title: "Map",
116        region: "center",
117        height: 400,
118        width: 600,
119        map: map,
120        center: new OpenLayers.LonLat(5, 45),
121        zoom: 6
122    });
123 
124    // create feature store, binding it to the vector layer
125    store = new GeoExt.data.FeatureStore({
126        layer: vecLayer,
127        fields: [
128            {name: 'name', type: 'string'},
129            {name: 'elevation', type: 'float'}
130        ],
131        proxy: new GeoExt.data.ProtocolProxy({
132            protocol: new OpenLayers.Protocol.HTTP({
133                url: "data/summits.json",
134                format: new OpenLayers.Format.GeoJSON()
135            })
136        }),
137        autoLoad: true
138    });
139
140    // create grid panel configured with feature store
141    gridPanel = new Ext.grid.GridPanel({
142        title: "Feature Grid",
143        region: "east",
144        store: store,
145        width: 320,
146        columns: [{
147            header: "Name",
148            width: 200,
149            dataIndex: "name"
150        }, {
151            header: "Elevation",
152            width: 100,
153            dataIndex: "elevation"
154        }],
155        sm: new GeoExt.grid.FeatureSelectionModel() 
156    });
157
158    // create a panel and add the map panel and grid panel
159    // inside it
160    mainPanel = new Ext.Panel({
161        renderTo: "mainpanel",
162        layout: "border",
163        height: 400,
164        width: 920,
165        items: [mapPanel, gridPanel]
166    });
167});
168
169/**
170 * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
171 *
172 * Published under the BSD license.
173 * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
174 * of the license.
175 */
176
177/** api: example[layercontainer]
178 *  Layer Tree
179 *  ----------
180 *  Create a layer tree with a LayerContainer.
181 */
182
183var store, tree, panel;
184Ext.onReady(function() {
185   
186    // create a new WMS capabilities store
187    store = new GeoExt.data.WMSCapabilitiesStore({
188        url: "data/wmscap.xml"
189    });
190    // load the store with records derived from the doc at the above url
191    store.load();
192
193    // create a grid to display records from the store
194    var grid = new Ext.grid.GridPanel({
195        title: "WMS Capabilities",
196        store: store,
197        cm: new Ext.grid.ColumnModel([
198            {header: "Name", dataIndex: "name", sortable: true},
199            {id: "title", header: "Title", dataIndex: "title", sortable: true}
200        ]),
201        sm: new Ext.grid.RowSelectionModel({singleSelect:true}),
202        autoExpandColumn: "title",
203        renderTo: "capgrid",
204        height: 300,
205        width: 350,
206        floating: true,
207        x: 10,
208        y: 0,
209        bbar: ["->", {
210            text: "Add Layer",
211            handler: function() {
212                var record = grid.getSelectionModel().getSelected();
213                if(record) {
214                    var copy = record.copy();
215                    // Ext 3.X does not allow circular references in objects passed
216                    // to record.set
217                    copy.data["layer"] = record.getLayer();
218                    copy.getLayer().mergeNewParams({
219                        format: "image/png",
220                        transparent: "true"
221                    });
222                    panel.layers.add(copy);
223                    panel.map.zoomToExtent(
224                        OpenLayers.Bounds.fromArray(copy.get("llbbox"))
225                    );
226                }
227            }
228        }]
229    });
230   
231    // create a map panel
232    panel = new GeoExt.MapPanel({
233        renderTo: "mappanel",
234        width: 350,
235        height: 300,
236        floating: true,
237        x: 570,
238        y: 0
239    });
240   
241    tree = new Ext.tree.TreePanel({
242        renderTo: "tree",
243        root: new GeoExt.tree.LayerContainer({
244            text: 'Map Layers',
245            layerStore: panel.layers,
246            leaf: false,
247            expanded: true
248        }),
249        enableDD: true,
250        width: 170,
251        height: 300,
252        floating: true,
253        x: 380,
254        y: 0
255    });
256   
257
258});
259/**
260 * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
261 *
262 * Published under the BSD license.
263 * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
264 * of the license.
265 */
266
267/** api: example[layeropacityslider]
268 *  Layer Opacity Slider
269 *  --------------------
270 *  Use a slider to control layer opacity.
271 */
272
273var panel1, panel2, wms, slider;
274
275Ext.onReady(function() {
276   
277    wms = new OpenLayers.Layer.WMS(
278        "Global Imagery",
279        "http://maps.opengeo.org/geowebcache/service/wms",
280        {layers: "bluemarble"}
281    );
282
283    // create a map panel with an embedded slider
284    panel1 = new GeoExt.MapPanel({
285        title: "Map 1",
286        renderTo: "map1-container",
287        height: 300,
288        width: 400,
289        map: {
290            controls: [new OpenLayers.Control.Navigation()]
291        },
292        layers: [wms],
293        extent: [-5, 35, 15, 55],
294        items: [{
295            xtype: "gx_opacityslider",
296            layer: wms,
297            vertical: true,
298            height: 120,
299            x: 10,
300            y: 10,
301            plugins: new GeoExt.LayerOpacitySliderTip({template: '<div>Opacity: {opacity}%</div>'})
302        }]
303    });
304    // create a separate slider bound to the map but displayed elsewhere
305    slider = new GeoExt.LayerOpacitySlider({
306        layer: wms,
307        aggressive: true, 
308        width: 200,
309        isFormField: true,
310        inverse: true,
311        fieldLabel: "opacity",
312        renderTo: "slider",
313        plugins: new GeoExt.LayerOpacitySliderTip({template: '<div>Transparency: {opacity}%</div>'})
314    });
315       
316    var clone = wms.clone();
317    var wms2 = new OpenLayers.Layer.WMS(
318        "OpenLayers WMS",
319        "http://vmap0.tiles.osgeo.org/wms/vmap0",
320        {layers: 'basic'}
321    );
322    panel2 = new GeoExt.MapPanel({
323        title: "Map 2",
324        renderTo: "map2-container",
325        height: 300,
326        width: 400,
327        map: {
328            controls: [new OpenLayers.Control.Navigation()]
329        },
330        layers: [wms2, clone],
331        extent: [-5, 35, 15, 55],
332        items: [{
333            xtype: "gx_opacityslider",
334            layer: clone,
335            complementaryLayer: wms2,
336            changeVisibility: true,
337            aggressive: true,
338            vertical: true,
339            height: 120,
340            x: 10,
341            y: 10,
342            plugins: new GeoExt.LayerOpacitySliderTip()
343        }]
344    });
345   
346    var tree = new Ext.tree.TreePanel({
347        width: 145,
348        height: 300,
349        renderTo: "tree",
350        root: new GeoExt.tree.LayerContainer({
351            layerStore: panel2.layers,
352            expanded: true
353        })
354    });
355
356});
357/**
358 * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
359 *
360 * Published under the BSD license.
361 * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
362 * of the license.
363 */
364
365/** api: example[legendpanel]
366 *  Legend Panel
367 *  ------------
368 *  Display a layer legend in a panel.
369 */
370
371
372var mapPanel, legendPanel;
373
374Ext.onReady(function() {
375    var map = new OpenLayers.Map({allOverlays: true});
376    map.addLayers([
377        new OpenLayers.Layer.WMS(
378            "Tasmania",
379            "http://demo.opengeo.org/geoserver/wms?",
380            {layers: 'topp:tasmania_state_boundaries', format: 'image/png', transparent: true},
381            {singleTile: true}),
382        new OpenLayers.Layer.WMS(
383            "Cities and Roads",
384            "http://demo.opengeo.org/geoserver/wms?",
385            {layers: 'topp:tasmania_cities,topp:tasmania_roads', format: 'image/png', transparent: true},
386            {singleTile: true}),
387        new OpenLayers.Layer.Vector('Polygons', {styleMap: new OpenLayers.StyleMap({
388                "default": new OpenLayers.Style({
389                    pointRadius: 8,
390                    fillColor: "#00ffee",
391                    strokeColor: "#000000",
392                    strokeWidth: 2
393                }) }) })
394    ]);
395    map.layers[2].addFeatures([
396        new OpenLayers.Feature.Vector(OpenLayers.Geometry.fromWKT(
397            "POLYGON(146.1 -41, 146.2 -41, 146.2 -41.1, 146.1 -41.1)"))
398    ]);
399    map.addControl(new OpenLayers.Control.LayerSwitcher());
400
401    var addRemoveLayer = function() {
402        if(mapPanel.map.layers.indexOf(water) == -1) {
403            mapPanel.map.addLayer(water);
404        } else {
405            mapPanel.map.removeLayer(water);
406        }
407    };
408
409    var moveLayer = function(idx) {
410        var layer = layerRec0.getLayer();
411        var idx = mapPanel.map.layers.indexOf(layer) == 0 ?
412            mapPanel.map.layers.length : 0;
413        mapPanel.map.setLayerIndex(layerRec0.getLayer(), idx);
414    };
415
416    var toggleVisibility = function() {
417        var layer = layerRec1.getLayer();
418        layer.setVisibility(!layer.getVisibility());
419    };
420
421    var updateHideInLegend = function() {
422        layerRec0.set("hideInLegend", !layerRec0.get("hideInLegend"));
423    };
424
425    var updateLegendUrl = function() {
426        var url = layerRec0.get("legendURL");
427        layerRec0.set("legendURL", otherUrl);
428        otherUrl = url;
429    };
430
431    mapPanel = new GeoExt.MapPanel({
432        region: 'center',
433        height: 400,
434        width: 600,
435        map: map,
436        center: new OpenLayers.LonLat(146.4, -41.6),
437        zoom: 7
438    });
439   
440    // give the record of the 1st layer a legendURL, which will cause
441    // UrlLegend instead of WMSLegend to be used
442    var layerRec0 = mapPanel.layers.getAt(0);
443    layerRec0.set("legendURL", "http://demo.opengeo.org/geoserver/wms?FORMAT=image%2Fgif&TRANSPARENT=true&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetLegendGraphic&EXCEPTIONS=application%2Fvnd.ogc.se_xml&LAYER=topp%3Atasmania_state_boundaries");
444
445    // store the layer that we will modify in toggleVis()
446    var layerRec1 = mapPanel.layers.getAt(1);
447
448    // stores another legendURL for the legendurl button action
449    var otherUrl = "http://www.geoext.org/trac/geoext/chrome/site/img/GeoExt.png";
450
451    // create another layer for the add/remove button action
452    var water = new OpenLayers.Layer.WMS("Bodies of Water",
453        "http://demo.opengeo.org/geoserver/wms?",
454        {layers: 'topp:tasmania_water_bodies', format: 'image/png', transparent: true},
455        {singleTile: true});
456
457    legendPanel = new GeoExt.LegendPanel({
458        defaults: {
459            labelCls: 'mylabel',
460            style: 'padding:5px'
461        },
462        bodyStyle: 'padding:5px',
463        width: 350,
464        autoScroll: true,
465        region: 'west'
466    });
467
468    new Ext.Panel({
469        title: "GeoExt LegendPanel Demo",
470        layout: 'border',
471        renderTo: 'view',
472        height: 400,
473        width: 800,
474        tbar: new Ext.Toolbar({
475            items: [
476                {text: 'add/remove', handler: addRemoveLayer},
477                {text: 'movetop/bottom', handler: moveLayer },
478                {text: 'togglevis', handler: toggleVisibility},
479                {text: 'hide/show', handler: updateHideInLegend},
480                {text: 'legendurl', handler: updateLegendUrl}
481            ]
482        }),
483        items: [legendPanel, mapPanel]
484    });
485});
486/**
487 * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
488 *
489 * Published under the BSD license.
490 * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
491 * of the license.
492 */
493
494/** api: example[mappanel-div]
495 *  Map Panel
496 *  ---------
497 *  Render a map panel in any block level page element.
498 */
499
500var mapPanel;
501
502Ext.onReady(function() {
503    Ext.state.Manager.setProvider(new Ext.state.CookieProvider());
504    var map = new OpenLayers.Map();
505    var layer = new OpenLayers.Layer.WMS(
506        "Global Imagery",
507        "http://maps.opengeo.org/geowebcache/service/wms",
508        {layers: "bluemarble"}
509    );
510    map.addLayer(layer);
511
512    mapPanel = new GeoExt.MapPanel({
513        title: "GeoExt MapPanel",
514        renderTo: "mappanel",
515        stateId: "mappanel",
516        height: 400,
517        width: 600,
518        map: map,
519        center: new OpenLayers.LonLat(5, 45),
520        zoom: 4,
521        // getState and applyState are overloaded so panel size
522        // can be stored and restored
523        getState: function() {
524            var state = GeoExt.MapPanel.prototype.getState.apply(this);
525            state.width = this.getSize().width;
526            state.height = this.getSize().height;
527            return state;
528        },
529        applyState: function(state) {
530            GeoExt.MapPanel.prototype.applyState.apply(this, arguments);
531            this.width = state.width;
532            this.height = state.height;
533        }
534    });
535});
536
537// functions for resizing the map panel
538function mapSizeUp() {
539    var size = mapPanel.getSize();
540    size.width += 40;
541    size.height += 40;
542    mapPanel.setSize(size);
543}
544function mapSizeDown() {
545    var size = mapPanel.getSize();
546    size.width -= 40;
547    size.height -= 40;
548    mapPanel.setSize(size);
549}
550
551/**
552 * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
553 *
554 * Published under the BSD license.
555 * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
556 * of the license.
557 */
558
559/** api: example[mappanel-viewport]
560 *  Map Panel (in a Viewport)
561 *  -------------------------
562 *  Render a map panel in a viewport.
563 */
564
565var mapPanel;
566
567Ext.onReady(function() {
568
569    // if true a google layer is used, if false
570    // the bluemarble WMS layer is used
571    var google = false;
572
573    var options, layer;
574    var extent = new OpenLayers.Bounds(-5, 35, 15, 55);
575
576    if (google) {
577
578        options = {
579            projection: new OpenLayers.Projection("EPSG:900913"),
580            units: "m",
581            numZoomLevels: 18,
582            maxResolution: 156543.0339,
583            maxExtent: new OpenLayers.Bounds(-20037508, -20037508,
584                                             20037508, 20037508.34)
585        };
586
587        layer = new OpenLayers.Layer.Google(
588            "Google Satellite",
589            {type: G_SATELLITE_MAP, sphericalMercator: true}
590        );
591
592        extent.transform(
593            new OpenLayers.Projection("EPSG:4326"), options.projection
594        );
595
596    } else {
597        layer = new OpenLayers.Layer.WMS(
598            "Global Imagery",
599            "http://maps.opengeo.org/geowebcache/service/wms",
600            {layers: "bluemarble"},
601            {isBaseLayer: true}
602        );
603    }
604
605    var map = new OpenLayers.Map(options);
606
607    new Ext.Viewport({
608        layout: "border",
609        items: [{
610            region: "north",
611            contentEl: "title",
612            height: 50
613        }, {
614            region: "center",
615            id: "mappanel",
616            title: "Map",
617            xtype: "gx_mappanel",
618            map: map,
619            layers: [layer],
620            extent: extent,
621            split: true
622        }, {
623            region: "east",
624            title: "Description",
625            contentEl: "description",
626            width: 200,
627            split: true
628        }]
629    });
630
631    mapPanel = Ext.getCmp("mappanel");
632});
633/**
634 * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
635 *
636 * Published under the BSD license.
637 * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
638 * of the license.
639 */
640
641/** api: example[mappanel-window]
642 *  Map Panel (in a Window)
643 *  -------------------------
644 *  Render a map panel in a Window.
645 */
646
647var mapPanel;
648
649Ext.onReady(function() {
650    new Ext.Window({
651        title: "GeoExt MapPanel Window",
652        height: 400,
653        width: 600,
654        layout: "fit",
655        items: [{
656            xtype: "gx_mappanel",
657            id: "mappanel",
658            layers: [new OpenLayers.Layer.WMS(
659                "Global Imagery",
660                "http://maps.opengeo.org/geowebcache/service/wms",
661                {layers: "bluemarble"}
662            )],
663            extent: "-5,35,15,55"
664        }]
665    }).show();
666   
667    mapPanel = Ext.getCmp("mappanel");
668});
669/**
670 * Copyright (c) 2008-2009 The Open Source Geospatial Foundation
671 *
672 * Published under the BSD license.
673 * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
674 * of the license.
675 */
676
677/** api: example[permalink]
678 *  Permalink
679 *  ---------
680 *  Display a permalink each time the map changes position.
681 */
682
683var permalinkProvider;
684
685Ext.onReady(function() {
686
687    // set a permalink provider
688    permalinkProvider = new GeoExt.state.PermalinkProvider({encodeType: false});
689    Ext.state.Manager.setProvider(permalinkProvider);
690
691    var map = new OpenLayers.Map();
692    map.addLayers([
693        new OpenLayers.Layer.WMS(
694            "Imagery",
695            "http://maps.opengeo.org/geowebcache/service/wms",
696            {layers: "bluemarble"}
697        ),
698        new OpenLayers.Layer.WMS(
699            "OSM",
700            "http://maps.opengeo.org/geowebcache/service/wms",
701            {layers: "openstreetmap"}
702        )
703    ]);
704    map.addControl(new OpenLayers.Control.LayerSwitcher());
705
706    var mapPanel = new GeoExt.MapPanel({
707        title: "GeoExt MapPanel",
708        renderTo: "mappanel",
709        height: 400,
710        width: 600,
711        map: map,
712        center: new OpenLayers.LonLat(5, 45),
713        zoom: 4,
714        stateId: "map",
715        prettyStateKeys: true
716    });
717
718    // update link when state chnages
719    var onStatechange = function(provider) {
720        var l = provider.getLink();
721        Ext.get("permalink").update("<a href=" + l + ">" + l + "</a>");
722    };
723    permalinkProvider.on({statechange: onStatechange});
724});
725/**
726 * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
727 *
728 * Published under the BSD license.
729 * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
730 * of the license.
731 */
732
733/** api: example[popup-more]
734 *  Modifying Popups
735 *  ----------------
736 *  Update a popup with information from multiple locations.
737 */
738
739var mapPanel, popup;
740
741Ext.onReady(function() {
742
743    function addToPopup(loc) {
744
745        // create the popup if it doesn't exist
746        if (!popup) {
747            popup = new GeoExt.Popup({
748                title: "Popup",
749                width: 200,
750                maximizable: true,
751                collapsible: true,
752                map: mapPanel.map,
753                anchored: true,
754                listeners: {
755                    close: function() {
756                        // closing a popup destroys it, but our reference is truthy
757                        popup = null;
758                    }
759                }
760            });
761        }
762
763        // add some content to the popup (this can be any Ext component)
764        popup.add({
765            xtype: "box",
766            autoEl: {
767                html: "You clicked on (" + loc.lon.toFixed(2) + ", " + loc.lat.toFixed(2) + ")"
768            }
769        });
770
771        // reset the popup's location
772        popup.location = loc;
773       
774        popup.doLayout();
775
776        // since the popup is anchored, calling show will move popup to this location
777        popup.show();
778    }
779
780    // create Ext window including a map panel
781    var mapPanel = new GeoExt.MapPanel({
782        title: "Map",
783        renderTo: "container",
784        width: 650, height: 356,
785        layers: [
786            new OpenLayers.Layer.WMS(
787                "Global Imagery",
788                "http://maps.opengeo.org/geowebcache/service/wms",
789                {layers: "bluemarble"}
790            )
791        ],
792        center: [0, 0],
793        zoom: 2
794    });
795
796    var control = new OpenLayers.Control.Click({
797        trigger: function(evt) {
798            var loc = mapPanel.map.getLonLatFromViewPortPx(evt.xy);
799            addToPopup(loc);
800        }
801    });
802   
803    mapPanel.map.addControl(control);
804    control.activate();
805
806});
807
808// simple control to handle user clicks on the map
809
810OpenLayers.Control.Click = OpenLayers.Class(OpenLayers.Control, {               
811
812    defaultHandlerOptions: {
813        single: true,
814        double: false,
815        pixelTolerance: 0,
816        stopSingle: true
817    },
818
819    initialize: function(options) {
820
821        this.handlerOptions = OpenLayers.Util.extend(
822            options && options.handlerOptions || {}, 
823            this.defaultHandlerOptions
824        );
825        OpenLayers.Control.prototype.initialize.apply(
826            this, arguments
827        ); 
828        this.handler = new OpenLayers.Handler.Click(
829            this, 
830            {
831                click: this.trigger
832            }, 
833            this.handlerOptions
834        );
835    },
836   
837    CLASS_NAME: "OpenLayers.Control.Click"
838
839});
840/**
841 * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
842 *
843 * Published under the BSD license.
844 * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
845 * of the license.
846 */
847
848/** api: example[popup]
849 *  Feature Popup
850 *  -------------
851 *  Display a popup with feature information.
852 */
853
854var mapPanel, popup;
855
856Ext.onReady(function() {
857
858    // create a vector layer, add a feature into it
859    var vectorLayer = new OpenLayers.Layer.Vector("vector");
860    vectorLayer.addFeatures(
861        new OpenLayers.Feature.Vector(
862            new OpenLayers.Geometry.Point(-45, 5)
863        )
864    );
865
866    // create select feature control
867    var selectCtrl = new OpenLayers.Control.SelectFeature(vectorLayer);
868
869    // define "createPopup" function
870    var bogusMarkup = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit.";
871    function createPopup(feature) {
872        popup = new GeoExt.Popup({
873            title: 'My Popup',
874            location: feature,
875            width:200,
876            html: bogusMarkup,
877            maximizable: true,
878            collapsible: true
879        });
880        // unselect feature when the popup
881        // is closed
882        popup.on({
883            close: function() {
884                if(OpenLayers.Util.indexOf(vectorLayer.selectedFeatures,
885                                           this.feature) > -1) {
886                    selectCtrl.unselect(this.feature);
887                }
888            }
889        });
890        popup.show();
891    }
892
893    // create popup on "featureselected"
894    vectorLayer.events.on({
895        featureselected: function(e) {
896            createPopup(e.feature);
897        }
898    });
899
900    // create Ext window including a map panel
901    var mapwin = new Ext.Window({
902        layout: "fit",
903        title: "Map",
904        closeAction: "hide",
905        width: 650,
906        height: 356,
907        x: 50,
908        y: 100,
909        items: {
910            xtype: "gx_mappanel",
911            region: "center",
912            layers: [
913                new OpenLayers.Layer.WMS( 
914                    "OpenLayers WMS",
915                    "http://vmap0.tiles.osgeo.org/wms/vmap0",
916                    {layers: 'basic'} ),
917                vectorLayer
918            ]
919        }
920    });
921    mapwin.show();
922
923    mapPanel = mapwin.items.get(0);
924    mapPanel.map.addControl(selectCtrl);
925    selectCtrl.activate();
926});
927 /**
928 * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
929 *
930 * Published under the BSD license.
931 * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
932 * of the license.
933 */
934
935/** api: example[print-extent]
936 *  Interactive Print Extent
937 *  ------------------------
938 *  Change print scale, center and rotation with the PrintExtent plugin.
939 */
940
941var mapPanel, printProvider;
942
943Ext.onReady(function() {
944    // The printProvider that connects us to the print service
945    printProvider = new GeoExt.data.PrintProvider({
946        method: "GET", // "POST" recommended for production use
947        capabilities: printCapabilities, // from the info.json script in the html
948        customParams: {
949            mapTitle: "Printing Demo",
950            comment: "This is a map printed from GeoExt."
951        }
952    });
953
954    var printExtent = new GeoExt.plugins.PrintExtent({
955        printProvider: printProvider
956    });
957
958    // The map we want to print, with the PrintExtent added as item.
959    mapPanel = new GeoExt.MapPanel({
960        renderTo: "content",
961        width: 450,
962        height: 320,
963        layers: [new OpenLayers.Layer.WMS("Tasmania", "http://demo.opengeo.org/geoserver/wms",
964            {layers: "topp:tasmania_state_boundaries"}, {singleTile: true})],
965        center: [146.56, -41.56],
966        zoom: 6,
967        plugins: [printExtent],
968        bbar: [{
969            text: "Create PDF",
970            handler: function() {
971                // the PrintExtent plugin is the mapPanel's 1st plugin
972                mapPanel.plugins[0].print();
973            }
974        }]
975    });
976    printExtent.addPage();
977});
978 /**
979 * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
980 *
981 * Published under the BSD license.
982 * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
983 * of the license.
984 */
985
986/** api: example[print-form]
987 *  Print Configuration with a Form
988 *  -------------------------------
989 *  Use form field plugins to control print output.
990 */
991
992var mapPanel, printPage;
993
994Ext.onReady(function() {
995    // The printProvider that connects us to the print service
996    var printProvider = new GeoExt.data.PrintProvider({
997        method: "GET", // "POST" recommended for production use
998        capabilities: printCapabilities, // from the info.json script in the html
999        customParams: {
1000            mapTitle: "Printing Demo"
1001        }
1002    });
1003    // Our print page. Stores scale, center and rotation and gives us a page
1004    // extent feature that we can add to a layer.
1005    printPage = new GeoExt.data.PrintPage({
1006        printProvider: printProvider
1007    });
1008    // A layer to display the print page extent
1009    var pageLayer = new OpenLayers.Layer.Vector();
1010    pageLayer.addFeatures(printPage.feature);
1011
1012    // The map we want to print
1013    mapPanel = new GeoExt.MapPanel({
1014        region: "center",
1015        map: {
1016            eventListeners: {
1017                // recenter/resize page extent after pan/zoom
1018                "moveend": function(){ printPage.fit(this, {mode: "screen"}); }
1019            }
1020        },
1021        layers: [
1022            new OpenLayers.Layer.WMS("Tasmania", "http://demo.opengeo.org/geoserver/wms",
1023                {layers: "topp:tasmania_state_boundaries"}, {singleTile: true}),
1024            pageLayer
1025        ],
1026        center: [146.56, -41.56],
1027        zoom: 6
1028    });
1029    // The form with fields controlling the print output
1030    var formPanel = new Ext.form.FormPanel({
1031        region: "west",
1032        width: 150,
1033        bodyStyle: "padding:5px",
1034        labelAlign: "top",
1035        defaults: {anchor: "100%"},
1036        items: [{
1037            xtype: "textarea",
1038            name: "comment",
1039            value: "",
1040            fieldLabel: "Comment",
1041            plugins: new GeoExt.plugins.PrintPageField({
1042                printPage: printPage
1043            })
1044        }, {
1045            xtype: "combo",
1046            store: printProvider.layouts,
1047            displayField: "name",
1048            fieldLabel: "Layout",
1049            typeAhead: true,
1050            mode: "local",
1051            triggerAction: "all",
1052            plugins: new GeoExt.plugins.PrintProviderField({
1053                printProvider: printProvider
1054            })
1055        }, {
1056            xtype: "combo",
1057            store: printProvider.dpis,
1058            displayField: "name",
1059            fieldLabel: "Resolution",
1060            tpl: '<tpl for="."><div class="x-combo-list-item">{name} dpi</div></tpl>',
1061            typeAhead: true,
1062            mode: "local",
1063            triggerAction: "all",
1064            plugins: new GeoExt.plugins.PrintProviderField({
1065                printProvider: printProvider
1066            }),
1067            // the plugin will work even if we modify a combo value
1068            setValue: function(v) {
1069                v = parseInt(v) + " dpi";
1070                Ext.form.ComboBox.prototype.setValue.apply(this, arguments);
1071            }
1072        }, {
1073            xtype: "combo",
1074            store: printProvider.scales,
1075            displayField: "name",
1076            fieldLabel: "Scale",
1077            typeAhead: true,
1078            mode: "local",
1079            triggerAction: "all",
1080            plugins: new GeoExt.plugins.PrintPageField({
1081                printPage: printPage
1082            })
1083        }, {
1084            xtype: "textfield",
1085            name: "rotation",
1086            fieldLabel: "Rotation",
1087            plugins: new GeoExt.plugins.PrintPageField({
1088                printPage: printPage
1089            })
1090        }],
1091        buttons: [{
1092            text: "Create PDF",
1093            handler: function() {
1094                printProvider.print(mapPanel, printPage);
1095            }
1096        }]
1097    });
1098     
1099    // The main panel
1100    new Ext.Panel({
1101        renderTo: "content",
1102        layout: "border",
1103        width: 700,
1104        height: 420,
1105        items: [mapPanel, formPanel]
1106    });
1107});
1108 /**
1109 * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
1110 *
1111 * Published under the BSD license.
1112 * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
1113 * of the license.
1114 */
1115
1116/** api: example[print-page]
1117 *  Print Your Map
1118 *  --------------
1119 *  Print the visible extent of a MapPanel with PrintPage and PrintProvider.
1120 */
1121
1122var mapPanel, printPage;
1123
1124Ext.onReady(function() {
1125    // The printProvider that connects us to the print service
1126    var printProvider = new GeoExt.data.PrintProvider({
1127        method: "GET", // "POST" recommended for production use
1128        capabilities: printCapabilities // from the info.json script in the html
1129    });
1130    // Our print page. Tells the PrintProvider about the scale and center of
1131    // our page.
1132    printPage = new GeoExt.data.PrintPage({
1133        printProvider: printProvider,
1134        customParams: {
1135            mapTitle: "Printing Demo",
1136            comment: "This is a simple map printed from GeoExt."
1137        }
1138    });
1139
1140    // The map we want to print
1141    mapPanel = new GeoExt.MapPanel({
1142        region: "center",
1143        layers: [new OpenLayers.Layer.WMS("Tasmania", "http://demo.opengeo.org/geoserver/wms",
1144            {layers: "topp:tasmania_state_boundaries"}, {singleTile: true})],
1145        center: [146.56, -41.56],
1146        zoom: 7
1147    });
1148    // The legend to optionally include on the printout
1149    var legendPanel = new GeoExt.LegendPanel({
1150        region: "west",
1151        width: 150,
1152        bodyStyle: "padding:5px",
1153        layerStore: mapPanel.layers
1154    });
1155   
1156    var includeLegend; // controlled by the "Include legend?" checkbox
1157     
1158    // The main panel
1159    new Ext.Panel({
1160        renderTo: "content",
1161        layout: "border",
1162        width: 700,
1163        height: 420,
1164        items: [mapPanel, legendPanel],
1165        bbar: ["->", {
1166            text: "Print",
1167            handler: function() {
1168                // convenient way to fit the print page to the visible map area
1169                printPage.fit(mapPanel, true);
1170                // print the page, optionally including the legend
1171                printProvider.print(mapPanel, printPage, includeLegend && {legend: legendPanel});
1172            }
1173        }, {
1174            xtype: "checkbox",
1175            boxLabel: "Include legend?",
1176            handler: function() {includeLegend = this.checked}
1177        }]
1178    });
1179});
1180 /**
1181 * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
1182 *
1183 * Published under the BSD license.
1184 * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
1185 * of the license.
1186 */
1187
1188/** api: example[print-preview-osm]
1189 *  Printing OpenStreetMap
1190 *  ----------------------------------------
1191 *  PrintMapPanel with an OSM map.
1192 */
1193
1194var mapPanel, printDialog;
1195
1196Ext.onReady(function() {
1197    // The PrintProvider that connects us to the print service
1198    var printProvider = new GeoExt.data.PrintProvider({
1199        method: "GET", // "POST" recommended for production use
1200        capabilities: printCapabilities, // provide url instead for lazy loading
1201        customParams: {
1202            mapTitle: "GeoExt Printing Demo",
1203            comment: "This demo shows how to use GeoExt.PrintMapPanel with OSM"
1204        }
1205    });
1206   
1207    // A MapPanel with a "Print..." button
1208    mapPanel = new GeoExt.MapPanel({
1209        renderTo: "content",
1210        width: 500,
1211        height: 350,
1212        map: {
1213            maxExtent: new OpenLayers.Bounds(
1214                -128 * 156543.0339,
1215                -128 * 156543.0339,
1216                128 * 156543.0339,
1217                128 * 156543.0339
1218            ),
1219            maxResolution: 156543.0339,
1220            units: "m",
1221            projection: "EPSG:900913"
1222        },
1223        layers: [new OpenLayers.Layer.OSM()],
1224        /*layers: [new OpenLayers.Layer.WMS("Tasmania State Boundaries",
1225            "http://demo.opengeo.org/geoserver/wms",
1226            {layers: "topp:tasmania_state_boundaries"}, {singleTile: true})],*/
1227        center: [16314984.568391, -5095295.7603428],
1228        zoom: 6,
1229        bbar: [{
1230            text: "Print...",
1231            handler: function(){
1232                // A window with the PrintMapPanel, which we can use to adjust
1233                // the print extent before creating the pdf.
1234                printDialog = new Ext.Window({
1235                    title: "Print Preview",
1236                    width: 350,
1237                    autoHeight: true,
1238                    items: [{
1239                        xtype: "gx_printmappanel",
1240                        // use only a PanPanel control
1241                        map: {controls: [new OpenLayers.Control.PanPanel()]},
1242                        sourceMap: mapPanel,
1243                        printProvider: printProvider
1244                    }],
1245                    bbar: [{
1246                        text: "Create PDF",
1247                        handler: function(){ printDialog.items.get(0).print(); }
1248                    }]
1249                });
1250                printDialog.show();
1251            }
1252        }]
1253    });
1254
1255}); /**
1256 * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
1257 *
1258 * Published under the BSD license.
1259 * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
1260 * of the license.
1261 */
1262
1263/** api: example[print-preview]
1264 *  Print Preview Window
1265 *  --------------------
1266 *  Use the PrintMapPanel for interactive print previews.
1267 */
1268
1269var mapPanel, printDialog;
1270
1271Ext.onReady(function() {
1272    // The PrintProvider that connects us to the print service
1273    var printProvider = new GeoExt.data.PrintProvider({
1274        method: "GET", // "POST" recommended for production use
1275        capabilities: printCapabilities, // provide url instead for lazy loading
1276        customParams: {
1277            mapTitle: "GeoExt Printing Demo",
1278            comment: "This demo shows how to use GeoExt.PrintMapPanel"
1279        }
1280    });
1281   
1282    // A MapPanel with a "Print..." button
1283    mapPanel = new GeoExt.MapPanel({
1284        renderTo: "content",
1285        width: 500,
1286        height: 350,
1287        map: {
1288            maxExtent: new OpenLayers.Bounds(
1289                143.835, -43.648,
1290                148.479, -39.574
1291            ),
1292            maxResolution: 0.018140625,
1293            projection: "EPSG:4326",
1294            units: 'degrees'
1295        },
1296        layers: [new OpenLayers.Layer.WMS("Tasmania State Boundaries",
1297            "http://demo.opengeo.org/geoserver/wms",
1298            {layers: "topp:tasmania_state_boundaries"},
1299            {singleTile: true, numZoomLevels: 8})],
1300        center: [146.56, -41.56],
1301        zoom: 0,
1302        bbar: [{
1303            text: "Print...",
1304            handler: function(){
1305                // A window with the PrintMapPanel, which we can use to adjust
1306                // the print extent before creating the pdf.
1307                printDialog = new Ext.Window({
1308                    title: "Print Preview",
1309                    layout: "fit",
1310                    width: 350,
1311                    autoHeight: true,
1312                    items: [{
1313                        xtype: "gx_printmappanel",
1314                        sourceMap: mapPanel,
1315                        printProvider: printProvider
1316                    }],
1317                    bbar: [{
1318                        text: "Create PDF",
1319                        handler: function(){ printDialog.items.get(0).print(); }
1320                    }]
1321                });
1322                printDialog.show();
1323            }
1324        }]
1325    });
1326
1327});/**
1328 * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
1329 *
1330 * Published under the BSD license.
1331 * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
1332 * of the license.
1333 */
1334
1335/** api: example[renderer]
1336 *  Feature Renderer
1337 *  ----------------
1338 *  Render a vector feature with multiple symbolizers in a box component.
1339 */
1340
1341var blue = {
1342    fillColor: "blue",
1343    fillOpacity: 0.25,
1344    strokeColor: "blue",
1345    strokeWidth: 2,
1346    pointRadius: 5
1347};
1348
1349var custom = {
1350    point: {
1351        graphicName: "star",
1352        pointRadius: 8,
1353        fillColor: "yellow",
1354        strokeColor: "red",
1355        strokeWidth: 1
1356    },
1357    line: {
1358        strokeColor: "#669900",
1359        strokeWidth: 3
1360    },
1361    poly: {
1362        fillColor: "olive",
1363        fillOpacity: 0.25,
1364        strokeColor: "#666666",
1365        strokeWidth: 2,
1366        strokeDashstyle: "dot"
1367    }
1368};
1369
1370var stacked = {
1371    point: [{
1372        pointRadius: 8,
1373        fillColor: "white",
1374        strokeColor: "red",
1375        strokeWidth: 2
1376    }, {
1377        graphicName: "star",
1378        pointRadius: 5,
1379        fillColor: "red"
1380    }],
1381    line: [{
1382        strokeColor: "red",
1383        strokeWidth: 5
1384    }, {
1385        strokeColor: "#ff9933",
1386        strokeWidth: 2
1387    }],
1388    poly: [{
1389        strokeWidth: 3,
1390        fillColor: "white",
1391        strokeColor: "#669900"
1392    }, {
1393        strokeWidth: 2,
1394        fillOpacity: 0,
1395        strokeColor: "red",
1396        strokeDashstyle: "dot"
1397    }]
1398};
1399
1400var configs = [{
1401    symbolType: "Point",
1402    renderTo: "point_default"
1403}, {
1404    symbolType: "Line",
1405    renderTo: "line_default"
1406}, {
1407    symbolType: "Polygon",
1408    renderTo: "poly_default"
1409}, {
1410    symbolType: "Point",
1411    symbolizers: [blue],
1412    renderTo: "point_blue"
1413}, {
1414    symbolType: "Line",
1415    symbolizers: [blue],
1416    renderTo: "line_blue"
1417}, {
1418    symbolType: "Polygon",
1419    symbolizers: [blue],
1420    renderTo: "poly_blue"
1421}, {
1422    symbolType: "Point",
1423    symbolizers: [custom.point],
1424    renderTo: "point_custom"
1425}, {
1426    symbolType: "Line",
1427    symbolizers: [custom.line],
1428    renderTo: "line_custom"
1429}, {
1430    symbolType: "Polygon",
1431    symbolizers: [custom.poly],
1432    renderTo: "poly_custom"
1433}, {
1434    symbolType: "Point",
1435    symbolizers: stacked.point,
1436    renderTo: "point_stacked"
1437}, {
1438    symbolType: "Line",
1439    symbolizers: stacked.line,
1440    renderTo: "line_stacked"
1441}, {
1442    symbolType: "Polygon",
1443    symbolizers: stacked.poly,
1444    renderTo: "poly_stacked"
1445}];
1446
1447Ext.onReady(function() {       
1448    for(var i=0; i<configs.length; ++i) {
1449        new GeoExt.FeatureRenderer(configs[i]);
1450    }
1451    $("render").onclick = render;
1452});
1453
1454var format = new OpenLayers.Format.WKT();
1455var renderer, win;
1456function render() {
1457    var wkt = $("wkt").value;
1458    var feature;
1459    try {
1460        feature = format.read(wkt)
1461    } catch(err) {
1462        $("wkt").value = "Bad WKT: " + err;
1463    }
1464    var symbolizers;
1465    try {
1466        var value = $("symbolizers").value;
1467        symbolizers = eval("(" + value + ")");
1468        if (!symbolizers || symbolizers.constructor !== Array) {
1469            throw "Must be an array literal";
1470        }
1471    } catch(err) {
1472        $("symbolizers").value = "Bad symbolizers: " + err + "\n\n" + value;
1473        symbolizers = null;
1474    }
1475    if(feature && symbolizers) {
1476        if(!win) {
1477            renderer = new GeoExt.FeatureRenderer({
1478                feature: feature,
1479                symbolizers: symbolizers,
1480                width: 150,
1481                style: {margin: 4}
1482            });
1483            win = new Ext.Window({
1484                closeAction: "hide",
1485                layout: "fit",
1486                width: 175,
1487                items: [renderer]
1488            });
1489        } else {
1490            renderer.update({
1491                feature: feature,
1492                symbolizers: symbolizers
1493            });
1494        }
1495        win.show();
1496    }
1497}
1498
1499/**
1500 * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
1501 *
1502 * Published under the BSD license.
1503 * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
1504 * of the license.
1505 */
1506
1507/** api: example[search-form]
1508 *  Filter Form Panel
1509 *  -----------------
1510 *  Use a form to build an OpenLayers filter.
1511 */
1512
1513var formPanel;
1514
1515Ext.onReady(function() {
1516
1517    // create a protocol, this protocol is used by the form
1518    // to send the search request, this protocol's read
1519    // method received an OpenLayers.Filter instance,
1520    // which is derived from the content of the form
1521    var protocol = new OpenLayers.Protocol({
1522        read: function(options) {
1523            var f; html = [];
1524
1525            f = options.filter;
1526            html.push([f.CLASS_NAME, ",", f.type, "<br />"].join(" "));
1527
1528            f = options.filter.filters[0];
1529            html.push([f.CLASS_NAME, ",", f.type, ",",
1530                       f.property, ":", f.value, "<br />"].join(" "));
1531
1532            f = options.filter.filters[1];
1533            html.push([f.CLASS_NAME, ",", f.type, ", ",
1534                       f.property, ": ", f.value].join(" "));
1535
1536            Ext.get("filter").update(html.join(""));
1537
1538        }
1539    });
1540
1541    // create a GeoExt form panel (configured with an OpenLayers.Protocol
1542    // instance)
1543    formPanel = new GeoExt.form.FormPanel({
1544        width: 300,
1545        height: 200,
1546        protocol: protocol,
1547        items: [{
1548            xtype: "textfield",
1549            name: "name__like",
1550            value: "foo",
1551            fieldLabel: "name"
1552        }, {
1553            xtype: "textfield",
1554            name: "elevation__ge",
1555            value: "1200",
1556            fieldLabel: "maximum elevation"
1557        }],
1558        listeners: {
1559            actioncomplete: function(form, action) {
1560                // this listener triggers when the search request
1561                // is complete, the OpenLayers.Protocol.Response
1562                // resulting from the request is available
1563                // through "action.response"
1564            }
1565        }
1566    });
1567
1568    formPanel.addButton({
1569        text: "search",
1570        handler: function() {
1571            // trigger search request, the options passed to doAction
1572            // are passed to the protocol's read method, so one
1573            // can register a read callback here
1574            var o = {
1575                callback: function(response) {
1576                }
1577            };
1578            this.search(o);
1579        },
1580        scope: formPanel
1581    });
1582
1583    formPanel.render("formpanel");
1584});
1585/**
1586 * Copyright (c) 2008-2009 The Open Source Geospatial Foundation
1587 *
1588 * Published under the BSD license.
1589 * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
1590 * of the license.
1591 */
1592
1593Ext.onReady(function(){
1594
1595    new Ext.Slider({
1596        renderTo: "tip-slider",
1597        width: 214,
1598        minValue: 0,
1599        maxValue: 100,
1600        plugins: new GeoExt.SliderTip()
1601    });
1602
1603    new Ext.Slider({
1604        renderTo: "custom-tip-slider",
1605        width: 214,
1606        increment: 10,
1607        minValue: 0,
1608        maxValue: 100,
1609        plugins: new GeoExt.SliderTip({
1610            getText: function(thumb){
1611                return String.format("<b>{0}% complete</b>", thumb.value);
1612            }
1613        })
1614    });
1615
1616    new Ext.Slider({
1617        renderTo: "no-hover-tip",
1618        width: 214,
1619        increment: 10,
1620        minValue: 0,
1621        maxValue: 100,
1622        plugins: new GeoExt.SliderTip({hover: false})
1623    });
1624   
1625    new Ext.Slider({
1626        renderTo: "multi-slider-horizontal",
1627        width   : 214,
1628        minValue: 0,
1629        maxValue: 100,
1630        values  : [10, 50, 90],
1631        plugins : new GeoExt.SliderTip()
1632    });
1633   
1634    new Ext.Slider({
1635        renderTo : "multi-slider-vertical",
1636        vertical : true,
1637        height   : 214,
1638        minValue: 0,
1639        maxValue: 100,
1640        values  : [10, 50, 90],
1641        plugins : new GeoExt.SliderTip()
1642    });
1643});
1644/**
1645 * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
1646 *
1647 * Published under the BSD license.
1648 * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
1649 * of the license.
1650 */
1651
1652/** api: example[toolbar]
1653 *  Toolbar with Actions
1654 *  --------------------
1655 *  Create a toolbar with GeoExt Actions.
1656 */
1657
1658Ext.onReady(function() {
1659    Ext.QuickTips.init();
1660
1661    var map = new OpenLayers.Map();
1662    var wms = new OpenLayers.Layer.WMS(
1663        "Global Imagery",
1664        "http://maps.opengeo.org/geowebcache/service/wms",
1665        {layers: "bluemarble"}
1666    );
1667    var vector = new OpenLayers.Layer.Vector("vector");
1668    map.addLayers([wms, vector]);
1669   
1670    var ctrl, toolbarItems = [], action, actions = {};
1671
1672    // ZoomToMaxExtent control, a "button" control
1673    action = new GeoExt.Action({
1674        control: new OpenLayers.Control.ZoomToMaxExtent(),
1675        map: map,
1676        text: "max extent",
1677        tooltip: "zoom to max extent"
1678    });
1679    actions["max_extent"] = action;
1680    toolbarItems.push(action);
1681    toolbarItems.push("-");
1682
1683    // Navigation control and DrawFeature controls
1684    // in the same toggle group
1685    action = new GeoExt.Action({
1686        text: "nav",
1687        control: new OpenLayers.Control.Navigation(),
1688        map: map,
1689        // button options
1690        toggleGroup: "draw",
1691        allowDepress: false,
1692        pressed: true,
1693        tooltip: "navigate",
1694        // check item options
1695        group: "draw",
1696        checked: true
1697    });
1698    actions["nav"] = action;
1699    toolbarItems.push(action);
1700
1701    action = new GeoExt.Action({
1702        text: "draw poly",
1703        control: new OpenLayers.Control.DrawFeature(
1704            vector, OpenLayers.Handler.Polygon
1705        ),
1706        map: map,
1707        // button options
1708        toggleGroup: "draw",
1709        allowDepress: false,
1710        tooltip: "draw polygon",
1711        // check item options
1712        group: "draw"
1713    });
1714    actions["draw_poly"] = action;
1715    toolbarItems.push(action);
1716
1717    action = new GeoExt.Action({
1718        text: "draw line",
1719        control: new OpenLayers.Control.DrawFeature(
1720            vector, OpenLayers.Handler.Path
1721        ),
1722        map: map,
1723        // button options
1724        toggleGroup: "draw",
1725        allowDepress: false,
1726        tooltip: "draw line",
1727        // check item options
1728        group: "draw"
1729    });
1730    actions["draw_line"] = action;
1731    toolbarItems.push(action);
1732    toolbarItems.push("-");
1733
1734    // SelectFeature control, a "toggle" control
1735    action = new GeoExt.Action({
1736        text: "select",
1737        control: new OpenLayers.Control.SelectFeature(vector, {
1738            type: OpenLayers.Control.TYPE_TOGGLE,
1739            hover: true
1740        }),
1741        map: map,
1742        // button options
1743        enableToggle: true,
1744        tooltip: "select feature"
1745    });
1746    actions["select"] = action;
1747    toolbarItems.push(action);
1748    toolbarItems.push("-");
1749
1750    // Navigation history - two "button" controls
1751    ctrl = new OpenLayers.Control.NavigationHistory();
1752    map.addControl(ctrl);
1753
1754    action = new GeoExt.Action({
1755        text: "previous",
1756        control: ctrl.previous,
1757        disabled: true,
1758        tooltip: "previous in history"
1759    });
1760    actions["previous"] = action;
1761    toolbarItems.push(action);
1762
1763    action = new GeoExt.Action({
1764        text: "next",
1765        control: ctrl.next,
1766        disabled: true,
1767        tooltip: "next in history"
1768    });
1769    actions["next"] = action;
1770    toolbarItems.push(action);
1771    toolbarItems.push("->");
1772
1773    // Reuse the GeoExt.Action objects created above
1774    // as menu items
1775    toolbarItems.push({
1776        text: "menu",
1777        menu: new Ext.menu.Menu({
1778            items: [
1779                // ZoomToMaxExtent
1780                actions["max_extent"],
1781                // Nav
1782                new Ext.menu.CheckItem(actions["nav"]),
1783                // Draw poly
1784                new Ext.menu.CheckItem(actions["draw_poly"]),
1785                // Draw line
1786                new Ext.menu.CheckItem(actions["draw_line"]),
1787                // Select control
1788                new Ext.menu.CheckItem(actions["select"]),
1789                // Navigation history control
1790                actions["previous"],
1791                actions["next"]
1792            ]
1793        })
1794    });
1795
1796    var mapPanel = new GeoExt.MapPanel({
1797        renderTo: "mappanel",
1798        height: 400,
1799        width: 600,
1800        map: map,
1801        center: new OpenLayers.LonLat(5, 45),
1802        zoom: 4,
1803        tbar: toolbarItems
1804    });
1805});
1806/**
1807 * Copyright (c) 2008-2009 The Open Source Geospatial Foundation
1808 *
1809 * Published under the BSD license.
1810 * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
1811 * of the license.
1812 */
1813
1814 /** api: example[tree-legend]
1815  *  Tree Legend
1816  *  -----------
1817  *  Render layer nodes with legends.
1818  */
1819
1820// custom layer node UI class
1821var LayerNodeUI = Ext.extend(
1822    GeoExt.tree.LayerNodeUI,
1823    new GeoExt.tree.TreeNodeUIEventMixin()
1824);
1825
1826Ext.onReady(function() {
1827    var mapPanel = new GeoExt.MapPanel({
1828        region: "center",
1829        center: [146.1569825, -41.6109735],
1830        zoom: 6,
1831        layers: [
1832            new OpenLayers.Layer.WMS("Tasmania State Boundaries",
1833                "http://demo.opengeo.org/geoserver/wms", {
1834                    layers: "topp:tasmania_state_boundaries"
1835                }, {
1836                    buffer: 0,
1837                    // exclude this layer from layer container nodes
1838                    displayInLayerSwitcher: false
1839               }),
1840            new OpenLayers.Layer.WMS("Water",
1841                "http://demo.opengeo.org/geoserver/wms", {
1842                    layers: "topp:tasmania_water_bodies",
1843                    transparent: true,
1844                    format: "image/gif"
1845                }, {
1846                    buffer: 0
1847                }),
1848            new OpenLayers.Layer.WMS("Cities",
1849                "http://demo.opengeo.org/geoserver/wms", {
1850                    layers: "topp:tasmania_cities",
1851                    transparent: true,
1852                    format: "image/gif"
1853                }, {
1854                    buffer: 0
1855                }),
1856            new OpenLayers.Layer.WMS("Tasmania Roads",
1857                "http://demo.opengeo.org/geoserver/wms", {
1858                    layers: "topp:tasmania_roads",
1859                    transparent: true,
1860                    format: "image/gif"
1861                }, {
1862                    buffer: 0
1863                })
1864        ]
1865    });
1866
1867    var tree = new Ext.tree.TreePanel({
1868        region: "east",
1869        title: "Layers",
1870        width: 250,
1871        autoScroll: true,
1872        enableDD: true,
1873        // apply the tree node component plugin to layer nodes
1874        plugins: [{
1875            ptype: "gx_treenodecomponent"
1876        }],
1877        loader: {
1878            applyLoader: false,
1879            uiProviders: {
1880                "custom_ui": LayerNodeUI
1881            }
1882        },
1883        root: {
1884            nodeType: "gx_layercontainer",
1885            loader: {
1886                baseAttrs: {
1887                    uiProvider: "custom_ui"
1888                },
1889                createNode: function(attr) {
1890                    // add a WMS legend to each node created
1891                    attr.component = {
1892                        xtype: "gx_wmslegend",
1893                        layerRecord: mapPanel.layers.getByLayer(attr.layer),
1894                        showTitle: false,
1895                        // custom class for css positioning
1896                        // see tree-legend.html
1897                        cls: "legend"
1898                    }
1899                    return GeoExt.tree.LayerLoader.prototype.createNode.call(this, attr);
1900                }
1901            }
1902        },
1903        rootVisible: false,
1904        lines: false
1905    });
1906
1907    new Ext.Viewport({
1908        layout: "fit",
1909        hideBorders: true,
1910        items: {
1911            layout: "border",
1912            items: [
1913                mapPanel, tree, {
1914                    contentEl: desc,
1915                    region: "west",
1916                    width: 250,
1917                    bodyStyle: {padding: "5px"}
1918                }
1919            ]
1920        }
1921    });
1922});
1923/**
1924 * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
1925 *
1926 * Published under the BSD license.
1927 * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
1928 * of the license.
1929 */
1930
1931/** api: example[tree]
1932 *  Tree Nodes
1933 *  ----------
1934 *  Create all kinds of tree nodes.
1935 */
1936
1937var mapPanel, tree;
1938Ext.onReady(function() {
1939    // create a map panel with some layers that we will show in our layer tree
1940    // below.
1941    mapPanel = new GeoExt.MapPanel({
1942        border: true,
1943        region: "center",
1944        // we do not want all overlays, to try the OverlayLayerContainer
1945        map: new OpenLayers.Map({allOverlays: false}),
1946        center: [146.1569825, -41.6109735],
1947        zoom: 6,
1948        layers: [
1949            new OpenLayers.Layer.WMS("Global Imagery",
1950                "http://maps.opengeo.org/geowebcache/service/wms", {
1951                    layers: "bluemarble"
1952                }, {
1953                    buffer: 0,
1954                    visibility: false
1955                }
1956            ),
1957            new OpenLayers.Layer.WMS("Tasmania State Boundaries",
1958                "http://demo.opengeo.org/geoserver/wms", {
1959                    layers: "topp:tasmania_state_boundaries"
1960                }, {
1961                    buffer: 0
1962                }
1963            ),
1964            new OpenLayers.Layer.WMS("Water",
1965                "http://demo.opengeo.org/geoserver/wms", {
1966                    layers: "topp:tasmania_water_bodies",
1967                    transparent: true,
1968                    format: "image/gif"
1969                }, {
1970                    isBaseLayer: false,
1971                    buffer: 0
1972                }
1973            ),
1974            new OpenLayers.Layer.WMS("Cities",
1975                "http://demo.opengeo.org/geoserver/wms", {
1976                    layers: "topp:tasmania_cities",
1977                    transparent: true,
1978                    format: "image/gif"
1979                }, {
1980                    isBaseLayer: false,
1981                    buffer: 0
1982                }
1983            ),
1984            new OpenLayers.Layer.WMS("Tasmania Roads",
1985                "http://demo.opengeo.org/geoserver/wms", {
1986                    layers: "topp:tasmania_roads",
1987                    transparent: true,
1988                    format: "image/gif"
1989                }, {
1990                    isBaseLayer: false,
1991                    buffer: 0
1992                }
1993            ),
1994            // create a group layer (with several layers in the "layers" param)
1995            // to show how the LayerParamLoader works
1996            new OpenLayers.Layer.WMS("Tasmania (Group Layer)",
1997                "http://demo.opengeo.org/geoserver/wms", {
1998                    layers: [
1999                        "topp:tasmania_state_boundaries",
2000                        "topp:tasmania_water_bodies",
2001                        "topp:tasmania_cities",
2002                        "topp:tasmania_roads"
2003                    ],
2004                    transparent: true,
2005                    format: "image/gif"
2006                }, {
2007                    isBaseLayer: false,
2008                    buffer: 0,
2009                    // exclude this layer from layer container nodes
2010                    displayInLayerSwitcher: false,
2011                    visibility: false
2012                }
2013            )
2014        ]
2015    });
2016
2017    // create our own layer node UI class, using the TreeNodeUIEventMixin
2018    var LayerNodeUI = Ext.extend(GeoExt.tree.LayerNodeUI, new GeoExt.tree.TreeNodeUIEventMixin());
2019       
2020    // using OpenLayers.Format.JSON to create a nice formatted string of the
2021    // configuration for editing it in the UI
2022    var treeConfig = new OpenLayers.Format.JSON().write([{
2023        nodeType: "gx_baselayercontainer"
2024    }, {
2025        nodeType: "gx_overlaylayercontainer",
2026        expanded: true,
2027        // render the nodes inside this container with a radio button,
2028        // and assign them the group "foo".
2029        loader: {
2030            baseAttrs: {
2031                radioGroup: "foo",
2032                uiProvider: "layernodeui"
2033            }
2034        }
2035    }, {
2036        nodeType: "gx_layer",
2037        layer: "Tasmania (Group Layer)",
2038        isLeaf: false,
2039        // create subnodes for the layers in the LAYERS param. If we assign
2040        // a loader to a LayerNode and do not provide a loader class, a
2041        // LayerParamLoader will be assumed.
2042        loader: {
2043            param: "LAYERS"
2044        }
2045    }], true);
2046
2047    // create the tree with the configuration from above
2048    tree = new Ext.tree.TreePanel({
2049        border: true,
2050        region: "west",
2051        title: "Layers",
2052        width: 200,
2053        split: true,
2054        collapsible: true,
2055        collapseMode: "mini",
2056        autoScroll: true,
2057        plugins: [
2058            new GeoExt.plugins.TreeNodeRadioButton({
2059                listeners: {
2060                    "radiochange": function(node) {
2061                        alert(node.text + " is now the active layer.");
2062                    }
2063                }
2064            })
2065        ],
2066        loader: new Ext.tree.TreeLoader({
2067            // applyLoader has to be set to false to not interfer with loaders
2068            // of nodes further down the tree hierarchy
2069            applyLoader: false,
2070            uiProviders: {
2071                "layernodeui": LayerNodeUI
2072            }
2073        }),
2074        root: {
2075            nodeType: "async",
2076            // the children property of an Ext.tree.AsyncTreeNode is used to
2077            // provide an initial set of layer nodes. We use the treeConfig
2078            // from above, that we created with OpenLayers.Format.JSON.write.
2079            children: Ext.decode(treeConfig)
2080        },
2081        listeners: {
2082            "radiochange": function(node){
2083                alert(node.layer.name + " is now the the active layer.");
2084            }
2085        },
2086        rootVisible: false,
2087        lines: false,
2088        bbar: [{
2089            text: "Show/Edit Tree Config",
2090            handler: function() {
2091                treeConfigWin.show();
2092                Ext.getCmp("treeconfig").setValue(treeConfig);
2093            }
2094        }]
2095    });
2096
2097    // dialog for editing the tree configuration
2098    var treeConfigWin = new Ext.Window({
2099        layout: "fit",
2100        hideBorders: true,
2101        closeAction: "hide",
2102        width: 300,
2103        height: 400,
2104        title: "Tree Configuration",
2105        items: [{
2106            xtype: "form",
2107            layout: "fit",
2108            items: [{
2109                id: "treeconfig",
2110                xtype: "textarea"
2111            }],
2112            buttons: [{
2113                text: "Save",
2114                handler: function() {
2115                    var value = Ext.getCmp("treeconfig").getValue()
2116                    try {
2117                        var root = tree.getRootNode();
2118                        root.attributes.children = Ext.decode(value);
2119                        tree.getLoader().load(root);
2120                    } catch(e) {
2121                        alert("Invalid JSON");
2122                        return;
2123                    }
2124                    treeConfig = value;
2125                    treeConfigWin.hide();
2126                }
2127            }, {
2128                text: "Cancel",
2129                handler: function() {
2130                    treeConfigWin.hide();
2131                }
2132            }]
2133        }]
2134    });
2135   
2136    new Ext.Viewport({
2137        layout: "fit",
2138        hideBorders: true,
2139        items: {
2140            layout: "border",
2141            deferredRender: false,
2142            items: [mapPanel, tree, {
2143                contentEl: "desc",
2144                region: "east",
2145                bodyStyle: {"padding": "5px"},
2146                collapsible: true,
2147                collapseMode: "mini",
2148                split: true,
2149                width: 200,
2150                title: "Description"
2151            }]
2152        }
2153    });
2154});
2155/**
2156 * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
2157 *
2158 * Published under the BSD license.
2159 * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
2160 * of the license.
2161 */
2162
2163/** api: example[vector-legend]
2164 *  Vector Legend
2165 *  -------------------------
2166 *  Render a legend for a vector layer.
2167 */
2168
2169var mapPanel, legendPanel;
2170
2171Ext.onReady(function() {
2172
2173    var rules = [
2174        new OpenLayers.Rule({
2175            title: "> 2000m",
2176            maxScaleDenominator: 3000000,
2177            filter: new OpenLayers.Filter.Comparison({
2178                type: OpenLayers.Filter.Comparison.GREATER_THAN,
2179                property: "elevation",
2180                value: 2000
2181            }),
2182            symbolizer: {
2183                graphicName: "star",
2184                pointRadius: 8,
2185                fillColor: "#99ccff",
2186                strokeColor: "#666666",
2187                strokeWidth: 1
2188            }
2189        }),
2190        new OpenLayers.Rule({
2191            title: "1500 - 2000m",
2192            maxScaleDenominator: 3000000,
2193            filter: new OpenLayers.Filter.Comparison({
2194                type: OpenLayers.Filter.Comparison.BETWEEN,
2195                property: "elevation",
2196                upperBoundary: 2000,
2197                lowerBoundary: 1500
2198            }),
2199            symbolizer: {
2200                graphicName: "star",
2201                pointRadius: 6,
2202                fillColor: "#6699cc",
2203                strokeColor: "#666666",
2204                strokeWidth: 1
2205            }
2206        }),
2207        new OpenLayers.Rule({
2208            title: "< 1500m",
2209            maxScaleDenominator: 3000000,
2210            filter: new OpenLayers.Filter.Comparison({
2211                type: OpenLayers.Filter.Comparison.LESS_THAN,
2212                property: "elevation",
2213                value: 1500
2214            }),
2215            symbolizer: {
2216                graphicName: "star",
2217                pointRadius: 4,
2218                fillColor: "#0033cc",
2219                strokeColor: "#666666",
2220                strokeWidth: 1
2221            }
2222        }),
2223        new OpenLayers.Rule({
2224            title: "All",
2225            minScaleDenominator: 3000000,
2226            symbolizer: {
2227                graphicName: "star",
2228                pointRadius: 5,
2229                fillColor: "#99ccff",
2230                strokeColor: "#666666",
2231                strokeWidth: 1
2232            }
2233        })
2234    ];
2235
2236    var imagery = new OpenLayers.Layer.WMS(
2237        "Imagery",
2238        "http://maps.opengeo.org/geowebcache/service/wms",
2239        {layers: "bluemarble"},
2240        {displayInLayerSwitcher: false}
2241    );
2242
2243    var summits = new OpenLayers.Layer.Vector("Summits", {
2244        strategies: [new OpenLayers.Strategy.Fixed()],
2245        protocol: new OpenLayers.Protocol.HTTP({
2246            url: "data/summits.json",
2247            format: new OpenLayers.Format.GeoJSON()
2248        }),
2249        styleMap: new OpenLayers.StyleMap(new OpenLayers.Style({}, {rules: rules}))
2250    });
2251   
2252    mapPanel = new GeoExt.MapPanel({
2253        renderTo: "mappanel",
2254        border: false,
2255        layers: [imagery, summits],
2256        center: [6.3, 45.6],
2257        height: 256, // IE6 wants this
2258        zoom: 8
2259    });
2260   
2261    legendPanel = new GeoExt.LegendPanel({
2262        layerStore: mapPanel.layers,
2263        renderTo: "legend",
2264        border: false
2265    });
2266
2267});
2268/**
2269 * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
2270 *
2271 * Published under the BSD license.
2272 * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
2273 * of the license.
2274 */
2275
2276
2277/** api: example[wms-capabilities]
2278 *  WMS Capabilities Store
2279 *  ----------------------
2280 *  Create layer records from WMS capabilities documents.
2281 */
2282
2283var store;
2284Ext.onReady(function() {
2285   
2286    // create a new WMS capabilities store
2287    store = new GeoExt.data.WMSCapabilitiesStore({
2288        url: "data/wmscap.xml"
2289    });
2290    // load the store with records derived from the doc at the above url
2291    store.load();
2292
2293    // create a grid to display records from the store
2294    var grid = new Ext.grid.GridPanel({
2295        title: "WMS Capabilities",
2296        store: store,
2297        columns: [
2298            {header: "Title", dataIndex: "title", sortable: true},
2299            {header: "Name", dataIndex: "name", sortable: true},
2300            {header: "Queryable", dataIndex: "queryable", sortable: true, width: 70},
2301            {id: "description", header: "Description", dataIndex: "abstract"}
2302        ],
2303        autoExpandColumn: "description",
2304        renderTo: "capgrid",
2305        height: 300,
2306        width: 650,
2307        listeners: {
2308            rowdblclick: mapPreview
2309        }
2310    });
2311   
2312    function mapPreview(grid, index) {
2313        var record = grid.getStore().getAt(index);
2314        var layer = record.getLayer().clone();
2315       
2316        var win = new Ext.Window({
2317            title: "Preview: " + record.get("title"),
2318            width: 512,
2319            height: 256,
2320            layout: "fit",
2321            items: [{
2322                xtype: "gx_mappanel",
2323                layers: [layer],
2324                extent: record.get("llbbox")
2325            }]
2326        });
2327        win.show();
2328    }
2329
2330});
2331/**
2332 * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
2333 *
2334 * Published under the BSD license.
2335 * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
2336 * of the license.
2337 */
2338
2339/** api: example[wms-tree]
2340 *  WMS Capabilities Tree
2341 *  ---------------------
2342 *  Create a tree loader from WMS capabilities documents.
2343 */
2344var tree, mapPanel;
2345
2346Ext.onReady(function() {
2347
2348    var root = new Ext.tree.AsyncTreeNode({
2349        text: 'GeoServer Demo WMS',
2350        loader: new GeoExt.tree.WMSCapabilitiesLoader({
2351            url: 'data/wmscap.xml',
2352            layerOptions: {buffer: 0, singleTile: true, ratio: 1},
2353            layerParams: {'TRANSPARENT': 'TRUE'},
2354            // customize the createNode method to add a checkbox to nodes
2355            createNode: function(attr) {
2356                attr.checked = attr.leaf ? false : undefined;
2357                return GeoExt.tree.WMSCapabilitiesLoader.prototype.createNode.apply(this, [attr]);
2358            }
2359        })
2360    });
2361
2362    tree = new Ext.tree.TreePanel({
2363        root: root,
2364        region: 'west',
2365        width: 250,
2366        listeners: {
2367            // Add layers to the map when ckecked, remove when unchecked.
2368            // Note that this does not take care of maintaining the layer
2369            // order on the map.
2370            'checkchange': function(node, checked) { 
2371                if (checked === true) {
2372                    mapPanel.map.addLayer(node.attributes.layer); 
2373                } else {
2374                    mapPanel.map.removeLayer(node.attributes.layer);
2375                }
2376            }
2377        }
2378    });
2379
2380    mapPanel = new GeoExt.MapPanel({
2381        zoom: 2,
2382        layers: [
2383            new OpenLayers.Layer.WMS("Global Imagery",
2384                "http://maps.opengeo.org/geowebcache/service/wms", 
2385                {layers: "bluemarble"},
2386                {buffer: 0}
2387            )
2388        ],
2389        region: 'center'
2390    });
2391
2392    new Ext.Viewport({
2393        layout: "fit",
2394        hideBorders: true,
2395        items: {
2396            layout: "border",
2397            deferredRender: false,
2398            items: [mapPanel, tree, {
2399                contentEl: "desc",
2400                region: "east",
2401                bodyStyle: {"padding": "5px"},
2402                collapsible: true,
2403                collapseMode: "mini",
2404                split: true,
2405                width: 200,
2406                title: "Description"
2407            }]
2408        }
2409    });
2410
2411});
2412/**
2413 * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
2414 *
2415 * Published under the BSD license.
2416 * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
2417 * of the license.
2418 */
2419
2420/** api: example[zoom-chooser]
2421 *  Scale Chooser
2422 *  -------------
2423 *  Use a ComboBox to display available map scales.
2424 */
2425
2426var mapPanel;
2427
2428Ext.onReady(function() {
2429    var map = new OpenLayers.Map();
2430    var layer = new OpenLayers.Layer.WMS(
2431        "Global Imagery",
2432        "http://maps.opengeo.org/geowebcache/service/wms",
2433        {layers: "bluemarble"}
2434    );
2435    map.addLayer(layer);
2436
2437    var scaleStore = new GeoExt.data.ScaleStore({map: map});
2438    var zoomSelector = new Ext.form.ComboBox({
2439        store: scaleStore,
2440        emptyText: "Zoom Level",
2441        tpl: '<tpl for="."><div class="x-combo-list-item">1 : {[parseInt(values.scale)]}</div></tpl>',
2442        editable: false,
2443        triggerAction: 'all', // needed so that the combo box doesn't filter by its current content
2444        mode: 'local' // keep the combo box from forcing a lot of unneeded data refreshes
2445    });
2446
2447    zoomSelector.on('select', 
2448        function(combo, record, index) {
2449            map.zoomTo(record.data.level);
2450        },
2451        this
2452    );     
2453
2454    map.events.register('zoomend', this, function() {
2455        var scale = scaleStore.queryBy(function(record){
2456            return this.map.getZoom() == record.data.level;
2457        });
2458
2459        if (scale.length > 0) {
2460            scale = scale.items[0];
2461            zoomSelector.setValue("1 : " + parseInt(scale.data.scale));
2462        } else {
2463            if (!zoomSelector.rendered) return;
2464            zoomSelector.clearValue();
2465        }
2466    });
2467
2468    mapPanel = new GeoExt.MapPanel({
2469        title: "GeoExt MapPanel",
2470        renderTo: "mappanel",
2471        height: 400,
2472        width: 600,
2473        map: map,
2474        center: new OpenLayers.LonLat(5, 45),
2475        zoom: 4,
2476        bbar: [zoomSelector]
2477    });
2478});
2479
2480/**
2481 * Copyright (c) 2008-2010 The Open Source Geospatial Foundation
2482 *
2483 * Published under the BSD license.
2484 * See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
2485 * of the license.
2486 */
2487
2488/** api: example[zoomslider]
2489 *  Zoom Slider
2490 *  -----------
2491 *  Use a slider to control map scale.
2492 */
2493
2494var panel, slider;
2495
2496Ext.onReady(function() {
2497   
2498    // create a map panel with an embedded slider
2499    panel = new GeoExt.MapPanel({
2500        title: "Map",
2501        renderTo: "map-container",
2502        height: 300,
2503        width: 400,
2504        map: {
2505            controls: [new OpenLayers.Control.Navigation()]
2506        },
2507        layers: [new OpenLayers.Layer.WMS(
2508            "Global Imagery",
2509            "http://maps.opengeo.org/geowebcache/service/wms",
2510            {layers: "bluemarble"}
2511        )],
2512        extent: [-5, 35, 15, 55],
2513        items: [{
2514            xtype: "gx_zoomslider",
2515            vertical: true,
2516            height: 100,
2517            x: 10,
2518            y: 20,
2519            plugins: new GeoExt.ZoomSliderTip()
2520        }]
2521    });
2522   
2523    // create a separate slider bound to the map but displayed elsewhere
2524    slider = new GeoExt.ZoomSlider({
2525        map: panel.map,
2526        aggressive: true,                                                                                                                                                   
2527        width: 200,
2528        plugins: new GeoExt.ZoomSliderTip({
2529            template: "<div>Zoom Level: {zoom}</div>"
2530        }),
2531        renderTo: document.body
2532    });
2533
2534});
Note: See TracBrowser for help on using the repository browser.