Git Product home page Git Product logo

geoext2's Introduction

JavaScript Toolkit for Rich Web Mapping Applications.

Build Status

What is GeoExt?

GeoExt is Open Source and enables building desktop-like GIS applications through the web. It is a JavaScript framework that combines the GIS functionality of OpenLayers with the user interface savvy of the ExtJS library provided by Sencha.

Version 2 of GeoExt is the successor to the GeoExt 1.x-series.

GeoExt 2.1.x is built atop OpenLayers 2.13.1 and ExtJS 5.1.0 and provides full backward compatibility to ExtJS 4.2.1. So GeoExt 2.1 is usable either with ExtJS 5.1 or Ext 4.2.1.

GeoExt 2.0.x is based on OpenLayers 2.13.1 and ExtJS 4.2.1 and is maintained in the v2.0.x-maintenance Branch.

More information on GeoExt 2

Have a look at the official homepage: http://geoext.github.io/geoext2/

You will find examples, API documentation (with and without inherited functionality from ExtJS), links to mailinglists and more over there.

What you see on http://geoext.github.io/geoext2/ are the contents of the gh-pages-branch. If you encounter anything that should be fixed, please issue a pull request against that branch and we will merge it as soon as possible.

Ok, I want to use GeoExt now...

Hey that's a good decision, and it is very easy to get started on a page that already includes ExtJS and OpenLayers:

<!DOCTYPE html>
<html>
    <head>
        <title>Trying out GeoExt2 w/ ExtJS 5.1.0</title>
        <!-- Load the ExtJS stylesheet -->
        <link rel="stylesheet" type="text/css"
          href="http://cdn.sencha.com/ext/gpl/5.1.0/build/packages/ext-theme-neptune/build/resources/ext-theme-neptune-all-debug.css">
        <!-- Load ExtJS from their CDN, local versions work also -->
        <script type="text/javascript"
          src="http://cdn.sencha.com/ext/gpl/5.1.0/build/ext-all-debug.js"></script>
        <!-- Load OpenLayers, custom builds may even be better -->
        <script src="http://openlayers.org/api/2.13.1/OpenLayers.js"></script>
    </head>
    <body></body>
</html>

Or if you are stuck to ExtJS 4.2.x you can use the following code:

<!DOCTYPE html>
<html>
    <head>
        <title>Trying out GeoExt2 w/ ExtJS 4.2.1</title>
        <!-- Load the ExtJS stylesheet -->
        <link rel="stylesheet" type="text/css"
          href="http://cdn.sencha.com/ext/gpl/4.2.1/resources/css/ext-all.css">
        <!-- Load ExtJS from their CDN, local versions work also -->
        <script type="text/javascript"
          src="http://cdn.sencha.com/ext/gpl/4.2.1/ext-debug.js"></script>
        <!-- Load OpenLayers, custom builds may even be better -->
        <script src="http://openlayers.org/api/2.13.1/OpenLayers.js"></script>
    </head>
    <body></body>
</html>

Next, we simply add a <script>-tag in which we tell ExtJS about GeoExt (and also where to find the ExtJS source files):

<script type="text/javascript">
Ext.Loader.setConfig({
    enabled: true,
    disableCaching: false,
    paths: {
        GeoExt: "path/to/src/GeoExt",
        Ext: "http://cdn.sencha.com/ext/gpl/5.1.0/src"
    }
});
</script>

Or reference the ExtJS 4.2.1 sources if you have to use them:

<script type="text/javascript">
Ext.Loader.setConfig({
    enabled: true,
    disableCaching: false,
    paths: {
        GeoExt: "path/to/src/GeoExt",
        Ext: "http://cdn.sencha.com/ext/gpl/4.2.1/src"
    }
});
</script>

That's it. Now you can e.g. create a very basic mappanel and let it reign over the whole browser window:

var mappanel = Ext.create('GeoExt.panel.Map', {
    title: 'A sample Map',
    map: {
        // ...
        // optional, can be either
        //   - a valid OpenLayers.Map configuration or
        //   - an instance of OpenLayers.Map
    },
    center: '12.31,51.48',
    zoom: 6
});

Ext.create('Ext.container.Viewport', {
    layout: 'fit',
    items: [
        mappanel // our variable from above
    ]
});

More information to get started can be grabbed on the main website.

Want to contribute? Yes, please!

We definitely want you to help us making GeoExt. We will happily accept pull requests of any kind; be it documentation improvement, code refactoring or new functionality.

Please sign the contributor agreement and email it to the GeoExt Project Steering Committee (psc [at] geoext.org) prior to submitting your changes. Thanks.

To generate the jsduck documentation

  • Install jsduck: https://github.com/senchalabs/jsduck
  • Run jsduck --config jsduck.json in the root of the repository
  • Optional: If you want the documentation for ExtJS to be linked, edit jsduck.json to point to the proper source location (URLs will not work)
  • Optional: To refresh screenshots in the example page run ~$ . tools/screenshots.sh http://geoext.github.io/geoext2/examples/
  • Open the generated file /path/to/your/geoext/docs/index.html in your favorite browser
  • Enjoy!

To run the test suite

  • Serve the contents of a GeoExt 2 clone on a webserver, e.g.:

    user@machine:/src/geoext2 $ python -m SimpleHTTPServer 2222

  • Open the main test suite HTML file in a browser:

    http://localhost:2222/tests/run-tests.html

  • Click the button "run all"

Headless tests with casperjs

You can also run the above tests headlessly through casperjs.

# Install dependencies via npm in the GeoExt 2 clone dir (only first time)
npm install

# Run the suite in the root of the repository
npm test

These tests are also run though travis.

geoext2's People

Contributors

adube avatar ahocevar avatar annarieger avatar bartvde avatar bentrm avatar bjornharrtell avatar buehner avatar chrismayer avatar elemoine avatar fredj avatar fvanderbiest avatar geographika avatar hutzelknecht avatar hwbllmnn avatar jcelda avatar jomue avatar juliensam avatar kaivolland avatar marcjansen avatar mpriour avatar mrsnyder avatar sbrunner avatar sweco-sebhar avatar vog avatar weskamm avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

geoext2's Issues

Bug: option "layer" for a TreeNode does not support a layer's name anymore

Hi GeoExt Team !

In GeoExt version "pre-2.0", the property "layer" of a TreeNode configuration could be a layer's name instead of a the Layer object itself.

That was a welcome shorthand when the LayerTree composition comes from a JSON string, like when the attached store has an Ajax data source.

My workaround for now is to add a listener in the LayerTree's configuration:

var options = {
    ...
    listeners: {
        beforeitemappend: function (_this, node) {
            if (node.data.layer && (typeof node.data.layer == 'string') ) {
                var x = my_application.my_map.getLayersByName(layer);
                if (x.length > 0) {
                    node.data.layer = x[0];
                }
            }
        }
    }
}

The regression seems bogus, nevertheless the feature is hotly appreciable.
I can suggest a fix if needed but the snippet in GeoExt version "pre-2.0" was ok.

Code where the layer is fetched from the node configuration:
File: "/src/GeoExt/tree/LayerNode.js", line:

    init: function(target) {

        this.target = target;
        var layer = target.get('layer');

Print vector data with an individual style.

Dear all,

i would like to print vector data with an individual style. My current code looks like
this:

sourceMap = this.getMappanel().map;

// The PrintProvider that connects us to the print service
printProvider = Ext.create('GeoExt.data.MapfishPrintProvider', {
method: 'POST', // 'POST' recommended for production use
capabilities: printCapabilities, // provide url instead for lazy loading
customParams: {
mapTitle: 'Print something',
comment: 'Paper maps for the masses'
}
});

printMapPanel = Ext.create('GeoExt.panel.PrintMap', {
itemId: 'printPanel',
layout: 'fit',
sourceMap: sourceMap,
printProvider: printProvider
});

printDialog = Ext.create('Ext.Window', {
title: 'Print Preview',
layout: 'fit',
height: 600,
width: 400,
items: [printMapPanel],
bbar: [{
text: 'Create PDF',
handler: function(){ printMapPanel.print(); }}]
});
printDialog.show();

Now to the problem:

The variable sourceMap contains the printable vector layer including a
Stylemap. Normally, each feature is represented on the map as an orange
dot (openlayers default settings). In the Stylemap each feature receives a
PNG graphic. Everything is displayed correctly on the map. In the preview
window, the features are shown, but the Stylemap is gone. Accordingly, the
features are printed, but not the correct symbols. Once the card is added
to the PrintMap, all the style information are lost. How can I fix this?

Best Regards

BarreBraeu

Add legend components

We have many components for legends in GeoExt 1. We need to have the same functionality in GeoExt 2.

GeoExt.slider.MapPanelItem bug (and solution)

The resizeFunction is assuming erroneously when setting style of the dom element, that height and width are numeric values. That doesn't work. You must pass to the setStyle a string like "33px".
Following there is patch (tested)
Index: lib/GeoExt2/src/GeoExt/slider/MapPanelItem.js

===================================================================

--- lib/GeoExt2/src/GeoExt/slider/MapPanelItem.js   (revision 421)
+++ lib/GeoExt2/src/GeoExt/slider/MapPanelItem.js   (revision )
@@ -102,9 +102,9 @@
                     el.setStyle({
                         top: dim.top,
                         left: dim.left,
-                        width: dim.width,
+                        width: "" + dim.width + "px",
                         position: "absolute",
-                        height: dim.height,
+                        height: "" + dim.height + "px",
                         zIndex: panel.map.Z_INDEX_BASE.Control
                     });
                     // This is tricky...
@@ -113,14 +113,14 @@
                         // element is controlled by the height of the element
                         // with the 'x-slider-inner'-class
                         el.down('.x-slider-inner').el.setStyle({
-                            height: dim.height - me.thumbWidth
+                            height: "" + (dim.height - me.thumbWidth) + "px"
                         });
                     } else {
                         // ...but for horizontal sliders, it's the form element
                         // with class 'x-form-item-body' that controls the
                         // height.
                         el.down('.x-form-item-body').el.setStyle({
-                            height: me.thumbHeight
+                            height: "" + me.thumbHeight + "px"
                         });
                     }
                 };

Various IE 8 Issues

I have been working on porting an application from GeoEXT-1.1/ExtJS-3.4.0 to GeoEXT2/ExtJS -4.1.0 and have experienced the following issues in Internet Explorer (testing in both IE8 & IE9).

//score = GeoExt.LayerLegend.types[type].supports(layerRecord);
if (layerRecord.getLayer() instanceof OpenLayers.Layer.WMS || layerRecord.getLayer() instanceof OpenLayers.Layer.Vector) {
    score = 1;
} else {
    score = 0;
};

Add an i18n framework

We need a framework for i18n. And we need to figure out if we reuse what's in GeoExt 1 or not.

gx_layercontainer radio button click

Hello All
i am new for the GeoExt, when I try to use GeoExt 2 to create a layers tree with radio button, but when click the radio button, not like 1.1, it will become unselected, is that a bug or I have to make a setting?

Thanks
Joseph

Bug: layer items of a LayerTree do not support children anymore

It seems to be a regression between version "pre-2.0" and "2.0.0".
In GeoExt "pre-2.0" items of a LayerTree can have both a layer and children.
In GeoExt "2.0.0" children are deleted when the item have a layer.

This bug seems related to issue #212 in that the code of "LayerNode.js" available in "pre-2.0" seems to be abandoned in "2.0.0".

The patch below worked for my application and solved both issues #212 and this current one. It just consists in applying a snippet of "pre-2.0" on "2.0.0".

diff --git "a/src\\GeoExt\\tree\\LayerNode.js" "b/src\\GeoExt\\tree\\LayerNode.js"
index cad9e0c..354f9a7 100644
--- "a/src\\GeoExt\\tree\\LayerNode.js"
+++ "b/src\\GeoExt\\tree\\LayerNode.js"
@@ -36,25 +36,49 @@ Ext.define('GeoExt.tree.LayerNode', {
     init: function(target) {

         this.target = target;
-        var layer = target.get('layer');
-
-        target.set('checked', layer.getVisibility());
-        if (!target.get('checkedGroup') && layer.isBaseLayer) {
-            target.set('checkedGroup', 'gx_baselayer');
+        this.layer  = target.get('layer') instanceof OpenLayers.Layer && target.get('layer');
+       
+        if ( !this.layer ) {
+            // guess the store if not provided
+            if ( !this.layerStore || this.layerStore == "auto") {
+                this.layerStore = GeoExt.panel.Map.guess().layers;
+            }
+            
+            // now we try to find the layer by its name in the layer store
+            var i = this.layerStore.findBy(function(o) {
+                return o.get("title") == this.target.get('layer');
+            }, this);
+            if ( i != -1 ) {
+                // if we found the layer, we can assign it and everything
+                // will be fine
+                this.layer = this.layerStore.getAt(i).getLayer();
+                
+                target.set('layer', this.layer); 
+            }
         }
-        target.set('fixedText', !!target.text);
-
-        target.set('leaf', true);
+        
+       if ( this.layer ) {
+            target.set('checked', this.layer .getVisibility());
+            if (!target.get('checkedGroup') && this.layer.isBaseLayer) {
+                target.set('checkedGroup', 'gx_baselayer');
+           }
+            target.set('fixedText', !!target.text);
+            
+            if ( !target.childNodes.length )
+                target.set('leaf', true);
+            
+            if(!target.get('iconCls')) {
+                target.set('iconCls', "gx-tree-layer-icon");
+            }
+            
+            target.on('afteredit', this.onAfterEdit, this);
+            this.layer.events.on({
+                "visibilitychanged": this.onLayerVisibilityChanged,
+                scope: this
+            });

-        if(!target.get('iconCls')) {
-            target.set('iconCls', "gx-tree-layer-icon");
-        }
+       }

-        target.on('afteredit', this.onAfterEdit, this);
-        layer.events.on({
-            "visibilitychanged": this.onLayerVisibilityChanged,
-            scope: this
-        });
     },

     /**

Bug: GeoExt.tree.Column renderer scope issue

When using Ext 4.1.3 with GeoExt2 the Ext.tree.Column file throws an errors with 'Unable to get value of the property 'apply': object is null or undefined' on line 41.

The renderer code in Ext.tree.Column has changed from 4.1.0 to 4.1.1. From my investigation the bug is a scoping bug and I have temporarily fixed the issue by creating an override for GeoExt.tree.Column initComponent method.

Changed Line 28:
var buf = [parentRenderer(value, metaData, record, rowIdx, colIdx, store, view)];
To
var buf = [parentRenderer.call(this, value, metaData, record, rowIdx, colIdx, store, view)];

If I have posted this in the wrong place or if this version is not dealing with 4.1.1 then please ignore.

tests (all) - loader fails to load Ext in IE

We have a bunch of issues in IE with all current tests.

  • The Ext.Loader fails to load components when using a ext-debug.js file that is not hosted locally. The 80020101 is fired.
  • We tried to load a local version. It worked partially. When specifying files required/used inside a test page, some file(s) fail to load. When 'Ext.layout.container.Border' is added to the requires list, IE fails to load it and it breaks the tests.

So, to follow our main objectives, we should forget about that issue, switch back to loading ext-all-debug, which fixes the issue.

Some examples broken - slow and missing script sources

When opening the print examples, e.g.

http://geoext.github.io/geoext2/examples/printpreview/print-preview.html

you will get a 404 in your Browser and the example won't load because of missing sources:

http://demo.opengeo.org/geoserver/pdf/info.json?var=printCapabilities

@ahocevar / @bartvde :
Is there a new URL available for a public print servlet, maybe from boundlessgeo?
I made a quick search but could not find anything.

Besides, the WMS used in most examples (e.g. mappanel), retrieved from
http://vmap0.tiles.osgeo.org/wms/vmap0?
is painfully slow today (30 seconds per tile). Not sure if this is just a temporary issue.

Bug: Features loading from Protocol to FeatureStore failed.

When using the protocol config to load features in a FeatureStore and then load the features form the FeatureStore to a Vector Layer, the features are not added.

Example :

  • the layer I want : layer.features[x] = my feature
  • the layer I get : layer.features[0].features[x] = my feature

In other words the "features" parameter of the layer contains another "features" attributes, which is wrong IMHO.

In think this is a bug because the features are not displayed at all on the layer.

I found a way to resolve it :
In the file : GeoExt2/src/GeoExt/data/proxy/Protocol.js

I changed the line 108 :

  • FROM : "var result = o.reader.read(response);"
  • TO : "var result = o.reader.read(response.features);"

As a result of this patch, the features are displayed correctly.

Thank you in advance,

Julien Collard

Apply changes since GeoExt 1.0

The GetExt-2 work was based on GeoExt 1.0, so we should try to apply all changes after release 1.0 to GeoExt-2.

Unfortunately, the "release-1.0" tag in the getext/geoext GitHub repository isn't very helpful, as it is part of a completely separate tree from master. However, the corresponding SVN commit was r2438, which can be found in master as the following commit:

geoext/geoext@b1baab0

So only changes after this commit are interesting to us.

A manual inspection of the history of lib/GeoExt/widgets/MapPanel.js (GeoExt-1), compared with its corresponding src/GeoExt/panel/Map.js (GeoExt-2), shows that some more changes are already part of GeoExt-2. I identified all changes up to the following commit in GeoExt-2, at least regarding MapPanel.js:

geoext/geoext@223574e

So only changes after that commit are interesting to us.

When concentrating on MapPanel, and ignoring all commits which just changed some comment, the following changesets should be ported to GeoExt-2:

  1. geoext/geoext@3257686
  2. geoext/geoext@b263b4a
  3. geoext/geoext@6ac9c81
  4. geoext/geoext@26a17c5

Note that the 2. changeset undoes some parts of the 1. changeset.

A similar analysis should be performed at least for GeoExt-1's LegendPanel, FeatureRenderer, PermalinkProvider, LayerRecord, and LayerStore.

zoom slider height issue

I have a vertical zoom slider with height: 100 which displays fine the first time. But when the map panel is resized, it gets messed up, see:

screen shot 2014-03-19 at 13 37 21

Zoomslider can become out-of sync with actual zoom

To reproduce:

Most of the time you will now see that the lower slider says the zoom is e.g. 7, while the slider in the map (and the map itself) will report the zoom to be 0 (GeoExt.panel.Map.guess().map.zoom === 0).

zoomslider-out-of-sync

There are two issues here:

  1. the sliders should never be out of sync
  2. the map should display the layer at zoomlevel 0 and not show a pink tile

Add layer tree components

GeoExt 1 has many layer tree components/plugins. We need to the same level of functionality in GeoExt 2.

Using native store's filters instead of featureFilter.

I actually work with the "FeatureStore" class and I need to filter my features depending on many attributes but not just just one.

So I decided to override the "onLoad" function to use the native store's filter and it's looks like that :

onLoad: function(store, records, successful, eOpts) {
  this._removing = true;
  store.layer.removeAllFeatures();
  delete this._removing;

  // Array of the records I'll keep for the layer.
  var keepedRecords = [];

  for (var i = 0; i < records.length; i++) {

    var aRecord = records[i];
    var filtersOK = true;

    // I verify if the records match with each filters and, if not, I exclude it from the record's array.
    for (var f = 0; f < store.filters.items.length; f++) {
      var aFilter = store.filters.items[f];
      if (!aFilter.filterFn(aRecord)) {
        filtersOK = false;
        break;
      }
    }
    if (filtersOK) {
      console.log(aRecord);
      keepedRecords.push(aRecord);
    }
  }

  // Finally I add my keeped records to my layer.
  this.addFeaturesToLayer(keepedRecords);
}

For example I have this filter :

{
  property: "myAttribute",
  value: myValue
}

That works perfectly for me. I've just not ever try by modifying my filters yet but I'll do it soon.

Have you another solution tu use many filters in a FeatureStore ?

Thank you in advance,

Julien Collard

Bugfix: Synchronizing FeatoreStore with VectorLayer

When adding new Features to a FeatureStore, all previous Features in the VectorLayer are deleted. See also my report in the mailing list (http://www.geoext.org/pipermail/users/2012-May/002977.html).

I tried to fix this issue with the help of the useful comments received in the mailing list, but unfortunately, I did not succeed. You can have a look at my attempt here: lvonlanthen@b14e9cf. While I was able to add multiple Features to the VectorLayer, the very same Feature can still be added twice, which probably should not happen. Therefore, the last test I've written fails.

Since I probably will not be able to work on this for the next couple of days, I thought I'd just let you know what I did. And maybe my work is of use to anyone more familiar with the whole code.

wms_title not used in OpenLayers.Layer.WMS()

If an OpenLayers.Layer.WMS() is defined and multiple layers are selected, geoext should take into account layers wms_title layer metadata instead of layer name when it's used in a geoext.tree.layercontainer.

I am using mapserver as WMS server and in this case layer names are used in geoext.tree.layercontainer.
Problem with this behavour is that according to OGC specifications layer's name are not supposed to be "human friendly" (eg. no spaces, lowercase). This results in ugly layer names in geoext.tree.layercontainer

Hope this is clear.
Regards

PrintPage example is outdated

In the PrintPage example is still used the GeoExt.data.PrintProvider which was renamed to GeoExt.data.MapfishPrintprovider.
Online example in gh-pages branch is runnig because it is not updated yet.

The mappanel's zoomLevel is different with the Openlayers's map's zoomLevel

I taked a test.
I set the same Bounds, and the mappanel's zoom is different with the official Openlayers 's map:
eg:
1.the Openlayers's map test.
var map, Layer;
var epsg4326 = new OpenLayers.Projection("EPSG:4326");
var epsg900913 = new OpenLayers.Projection("EPSG:900913");
function init(){
map = new OpenLayers.Map('map');
layer = new OpenLayers.Layer.OSM( "Simple OSM Map");
map.addLayer(layer);
var bounds= new OpenLayers.Bounds(-3.8207960123447,40.404968321436,-3.7753915781471,40.432086647938).transform(epsg4326,epsg900913);
map.zoomToExtent(bounds);
alert(map.getCenter()+":"+map.zoom)
}
the zoom is 13.
2. the mappanel's test, I updated the mappanel.js

name: 'HelloGeoExt2',
launch: function() {
var epsg4326 = new OpenLayers.Projection("EPSG:4326");
var epsg900913 = new OpenLayers.Projection("EPSG:900913");
var map = new OpenLayers.Map({});
map.addLayer(new OpenLayers.Layer.OSM());
mappanel = Ext.create('GeoExt.panel.Map', {
title: 'The GeoExt.panel.Map-class',
map: map,
//center: '12.3046875,51.48193359375',
//zoom: 6,
//stateful: true,
//stateId: 'mappanel',
extent: new OpenLayers.Bounds(-3.8207960123447,40.404968321436,-3.7753915781471,40.432086647938).transform(epsg4326,epsg900913),//'12.87,52.35,13.96,52.66',
dockedItems: [{
xtype: 'toolbar',
dock: 'top',
items: [{
text: 'Current center of the map',
handler: function(){
var m = GeoExt.panel.Map.guess().map;
alert(m.getCenter()+"zoom:"+m.zoom);

                }
            }]
        }]
    });
    Ext.create('Ext.container.Viewport', {
        layout: 'fit',
        items: [
            mappanel
        ]
    });
}

But the zoom is 15.
It has the same 'new OpenLayers.Bounds(-3.8207960123447,40.404968321436,-3.7753915781471,40.432086647938).transform(epsg4326,epsg900913);' and the same centerLonLat.

why it's different ?
Thanks.

gx_wmslegend in Tree acting strange - lots of duplicates

In the GeoExt Legend Tree example you can observe some strange behaviour with the gx_wmslegend components. Starting the example which contains three Layers, an

Ext.ComponentQuery.query('gx_wmslegend')

shows me 11 components on initial page load. If you toggle a layer off and on again, the number increases on every toggle. Seems like the update method in WmsLegend.js causes this behaviour. I dont think its right to create new legend components if a layer is toggled and the zoomlevel has not changed in the meantime. A simple hide / show should be enough.

The GeoExt Legend Panel Example seems to work ok, cant see any duplicates there.

Updating examples

SInce we had several improvements on the examples maybe it will a good idea to update the live examples on our gh-pages branch.
Any comments or concerns?

Error in Simple MVC example

I'm trying to modify the summits.json file location changing the url on line 72 of the Map's controller (I'm using app.js, not app-all.js)... The web server doesn't change the summits.json location... Server response: "GET http://server.domain/data/summits.json 404 not found" and the reference file is "OpenLayers.js on line 748"...

I've tryed changing it using app-all.js too and modifying the line in this file but I've got the same response...

I have to move the file to the desired location if I want to run it... I can't configure it as needed...

TIA,
baux

Rename Print Components

I have in mind that the print components should be renamed, due to the fact that MapFish print-servlet (and GeoServer-print?) are supported.
Is this still needed? If yes some proposals for new names are welcome.

Tests in IE8 fail

We have tests that fail in IE8 that pass in all other 5 browsers : IE9, FF, Chrome, Opera and Safari. They may be caused by Test.AnotherWay, so we'll look at that later.

Add form components

GeoExt 1 includes functions for serializing forms into filters (GeoExt.form.toFilter), and for creating fields from attribute records (GeoExt.form.recordToField). We need the same features in GeoExt 2.

[feature request] draggable layers in treePanel

Frank shared some code to address this on the mailing list:

http://www.geoext.org/pipermail/users/2013-February/003225.html

but it appears to reinvent the wheel, and I haven't figured out how to adapt it yet for my project. This is such a basic feature requirement that it ideally it would be supported out-of-the-box, so I thought I'd inquire.

While I'm making up my christmas list, let me also wish for some config options to tame some of the complexities involved:

allowDragOfParent: boolean // default false?

Useful for keeping the "base" layer group always below below an "overlay" group, for example.

allowDragOntoNewParent: boolean // default false?

This would prevent, for example, a "base" layer from being dragged into an "overlay" layer, messing up the default nesting.

onDragError: function()

A callback called when the user does a disallowed drag.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.