Giter Club home page Giter Club logo

geoext1's Introduction

GeoExt

JavaScript Toolkit for Rich Web Mapping Applications.

Build Status Coverage Status dependencies Status devDependencies Status

GeoExt logo

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 3 of GeoExt was the successor to the GeoExt 2.x-series and has been built atop the following versions of its base libraries: OpenLayers v3.x / v4.x and ExtJS 6.

With version 4 GeoExt supports the newest official installment v6.x of OpenLayers and ExtJS 6.2.

We are trying hard to keep up with developments on both our parent libraries. The current state of GeoExt is compatible with ExtJS 6.2.0 and OpenLayers 7.1.0. This state is released as GeoExt v4.0.0.

OpenLayers ExtJS GeoExt
7.1.0 6.2.0 5.0.x
6.5.0 6.2.0 4.0.x
4.6.5 6.2.0 3.4.0 & 3.3.x & 3.2.0
3.20.1 / 4.3.x 6.2.0 3.1.0
3.20.1 6.2.0 3.0.0

More information on GeoExt

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

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

What you see on https://geoext.github.io/geoext/ 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.

How to use GeoExt inside your Sencha app

You can use GeoExt either via an npm install @geoext/geoext in your application folder, or (if you want the latest and greatest), you can use it from a git clone of this repository.

Configuring your apps classpath

You will have to adjust the classpath in you app.json to include geoext3, like below. Depending on how you retrieved the code from the step before, you will have to adapt the path. When you installed geoext3 via npm, the path needs to look like ./node_modules/@geoext/geoext/src. Else it will be the folder where you cloned the repository into.

    "classpath": [
        "app",
        "${toolkit.name}/src",
        "./lib/geoext/src"
    ]

In the snippet above, lib/geoext is a git clone of the GeoExt repo.

GeoExt also offers components, which are only compatible with the classic toolkit of ExtJS (e.g. StateProvider or GeocoderCombo). In case you want to use them you also have to add the classic folder to the classpath. So your complete classpath definition could look like below:

    "classpath": [
        "app",
        "${toolkit.name}/src",
        "./lib/geoext/src",
        "./lib/geoext/classic"
    ]

To help with your first GeoExt project, follow the instructions provided to build a GeoExt Universal app. This app runs on the desktop and on mobile.

Examples

Classic Toolkit

https://geoext.github.io/geoext/master/examples/component/map.html

Modern Toolkit

Want to contribute? Yes, please 😀

Read the hints for developers to get started. We look forward to your contributions!

Initial Codesprint

To kickstart the new GeoExt 3 project a code sprint has been done in Bonn from 17th to 19th of June 2015. For more informations check the following links: Code sprint WIKI page, Official blog post of code sprint day 1, Official blog post of the code sprint days 2 and 3


OSGeo Community Project

GeoExt is an OSGeo Community project

geoext1's People

Contributors

adube avatar ahocevar avatar arnaud-morvan avatar asaunier avatar bartvde avatar bbinet avatar bmcbride avatar elemoine avatar fgravin avatar fredj avatar fvanderbiest avatar justb4 avatar marcjansen avatar ochriste avatar sbenthall avatar sbrunner avatar tcoulter avatar tschaub 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

Watchers

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

geoext1's Issues

Scale bar in print preview

(bug?)
I think this is a GeoExt issue but may be wrong (feel free to close it).
See this issue - http://code.google.com/p/geoext-viewer/issues/detail?id=167

The print preview scale bar doesn't use the projection that's been declared elsewhere. Other scale bars are all fine (the main map one and the MapFish printed output).

To work around it I have to explicitly declare the proj4js EPSG:

Proj4js.defs["EPSG:27700"] = "+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +ellps=airy +datum=OSGB36 +units=m +no_defs ";
EPSG27700 = new OpenLayers.Projection( "EPSG:27700" );

featureFilter on GeoExt.data.FeatureStore has no effect

Hi,
the featureFilter config on Geoext.data.FeatureStore has no effect.
I use GeoExt 1.1 with ext-js 3.4.0 and OpenLayers 2.12.
The store uses a GeoExt.data.ProtocolProxy to get features from a WFS. On that store I set the featureFilter-configOption in order to only display (and request) a subset of the available features in the grid. However, the filter does not get evaluated and all features are requested and show up in the grid.
Attaching the filter to the protocol works fine.

Debugging GeoExt.data.FeatureStore, I find that the code to evaluate this.featureFilter in onFeaturesAdded()-method never gets executed.

Here is the code for the grid panel:
gridPanel = new Ext.grid.GridPanel({
ref: 'featuregrid',
title: 'Tabellenansicht Parkhäuser',
region: 'north',
height: 200,
sm: new GeoExt.grid.FeatureSelectionModel(),
store: new GeoExt.data.FeatureStore({
fields: [
{name: "name", type: "string"},
{name: "art", type: "string"},
{name: "frei", type: "string"},
{name: "received", type: "string"}
],
proxy: new GeoExt.data.ProtocolProxy({
protocol: new OpenLayers.Protocol.WFS({
url: "http://gateway.hamburg.de/OGCFassade/Test_HH_WFS_Fachdaten.aspx",
version: "1.1.0",
featureType: "verkehr_parkhaeuser",
featureNS: "http://www.deegree.org/app",
srsName: "EPSG:25832"
})
}),
featureFilter: new OpenLayers.Filter.Spatial({
type: OpenLayers.Filter.Spatial.BBOX,
value: new OpenLayers.Bounds(563768,5932433,568001,5935608),
projection: "EPSG:25832"
}),
autoLoad: true
}),
columns: [
{header: "name", dataIndex: "name"},
{header: "Art", dataIndex: "art"},
{header: "Freie Stellplätze", dataIndex: "frei"},
{header: "Aktualität", dataIndex: "received"}
]
});

Best,
Sebastian

GeoExt.form.toFilter inserts wildcards for empty string field values

This issue was found in Heron (https://code.google.com/p/geoext-viewer/issues/detail?id=235) but applies to the function GeoExt.form.toFilter in

https://github.com/geoext/geoext/blob/master/lib/GeoExt/widgets/form.js

Problem is that in some forms with OR-ed fields where the user leaves fields empty and when wildcarding is enabled, the toFilter function will still add a wildcard to an empty string. In the worst case one may get the entire content of a DB. FIx is to skip filter encoding for fields with value is empty string and when wildcarding is one. We fixed this in Heron by overriding (also fixing other stuff), but may supply the fix as a pull as well. See fixed version here (line 267):

https://code.google.com/p/geoext-viewer/source/browse/trunk/heron/lib/override-geoext.js

PrintProvider: TMS requires encoding of tileOrigin

Recent versions of MapFish Print (at least from june 2013 onward) take the TMS tileOrigin into account when rendering print output on "create". The current GeoExt encoder in PrintProvider.js does not take this into account. I have fixed this by extending the TileCache base encoder (called by the TMS encoder) as follows:

        "TileCache": function (layer) {
            var enc = this.encoders.layers.HTTPRequest.call(this, layer);
            // Heron fix JvdB 6 oct 2013
            // Add tileOrigin otherwise MapFish Print will be confused.
            // https://github.com/mapfish/mapfish-print/issues/68
            var maxExtent = layer.maxExtent.toArray();
            var tileOriginX = layer.tileOrigin ? layer.tileOrigin.lon : maxExtent[0];
            var tileOriginY = layer.tileOrigin ? layer.tileOrigin.lat : maxExtent[1];
            return Ext.apply(enc, {
                type: 'TileCache',
                layer: layer.layername,
                maxExtent: maxExtent,
                tileOrigin: {x: tileOriginX, y: tileOriginY},
                tileSize: [layer.tileSize.w, layer.tileSize.h],
                extension: layer.extension,
                resolutions: layer.serverResolutions || layer.resolutions
            });
        },

So "tileOrigin" is determined from the TMS tileOrigin if provided or the Map/Layer maxExtent LL coords. Yes the tileOrigin should be encoded as an Object with either x,y or lon,lat. Possibly needs refinement. According to the TMS spec (wiki) tileOrigin may be independently defined from maxExtent.

This came out from a longstanding MapFish Print issue:
mapfish/mapfish-print#68

See code at bottom of:
https://code.google.com/p/geoext-viewer/source/browse/trunk/heron/lib/override-geoext.js but I can provide a pull if neccessary.

PrintMapPanel - resolutions from source map not properly copied

A Heron user found an issue when using PrintMapPanel (via ux PrintPreview) with an "irregular" resolutions array for a TMS layer. Diving into this I found an old GeoExt ticket on Trac: http://trac.geoext.org/ticket/306. It appeared to be solved, but the committed code was taken out from PrintMapPanel in a later commit:

Patch went in this revision (see e.g. line 227):
https://github.com/geoext/geoext/blob/613eaa8836a13c88f727fbbfdbe5148c14604195/lib/GeoExt/widgets/PrintMapPanel.js

But went out, possibly by accident, in a next commit:
geoext/geoext@ac5de9a#lib/GeoExt/widgets/PrintMapPanel.js

I have made a fix for Heron which worked (just copying with slice(0) the resolutions array from the source map) by overriding PrintMapPanel.initComponent:
http://lib.heron-mc.org/heron/latest/lib/override-geoext.js

I can supply a patch/pull if you like. Possibly also affects GeoExt2?

Support gml enumeration constraint and display combobox

In GeoExt/widgets/form.js, at line 134. I changed the following to support enumeration constraints for string.

if(type.match(r["text"])) {
    if(restriction.enumeration)
    {
        // Must convert the array into an array of array.
        var enumeration = new Array();
        for ( var i = 0, c = restriction.enumeration.length; i < c; i++ ) {
            enumeration[i] = [restriction.enumeration[i]];
        }

        var enumerationStore = new Ext.data.ArrayStore({
            data   : enumeration,
            fields : [label]
        });

        field = {
            xtype: "combo",
            name: name,
            fieldLabel: 'Letter',
            store: enumerationStore,
            mode: 'local',
            valueField:label,
            displayField:label,
            typeAhead: false,
            forceSelection: true
        };          
    }
    else{
        var maxLength = restriction["maxLength"] !== undefined ?
            parseFloat(restriction["maxLength"]) : undefined;
        var minLength = restriction["minLength"] !== undefined ?
            parseFloat(restriction["minLength"]) : undefined;
        field = {
            xtype: "textfield",
            name: name,
            fieldLabel: label,
            maxLength: maxLength,
            minLength: minLength
        };
    }
} else if(type.match(r["number"])) {

Enable output format selection for Printing

MapFish Print allows multiple output formats to be generated apart from the default PDF. The info capabilities will in general return a list of possible outputs like 'pdf', 'jpeg', 'png' etc in the MFP info.json capabilities outputFormats field. Actual format values can be controlled in the YAML file. The field outputFormat can subsequently be used to set a specific output format in the create.json request. To allow actual outputFormat selection, a number of classes in GeoExt and the PrintPreview UX need to work in concert. The pattern is very similar to DPI and layout selection:

The classes affected are:

GeoExt.data.PrintProvider:

  • populate an outputFormats JSONStore
  • manage the actual value (using outputFormat Record, events, etc)

GeoExt.plugins.PrintProviderField:

  • manage changes in the selector (combo) widget with GeoExt.data.PrintProvider

GeoExt.ux.PrintPreview (extern)

  • create an (optional) GUI widget (combobox) for selecting output

I have an example implementation that I can make into a Pull Request for the GeoExt classes. All should be forward compatible, i.e. only if outputFormat selection is enabled. PrintPreview is not in GeoExt repo, but I have an example as well.

See the example here (use normal print icon for print dialog window):

http://lib.heron-mc.org/heron/latest/examples/printdialog
and sources
https://code.google.com/p/geoext-viewer/source/browse/#svn%2Ftrunk%2Fheron%2Fexamples%2Fprintdialog
and printpreview changes:
https://code.google.com/p/geoext-viewer/source/browse/trunk/heron/ux/printpreview/lib/GeoExt.ux/PrintPreview.js

GeoExt 2.0 compatibility with Extjs 5.0

Hi everyone,

I'm wondering about GeoExt 2.0 compatibility with Extjs 5.0
We're testing our app with Extjs 5.0 Trial and there seems problems with GeoExt.Popup. Everything else is just fine.

Google layer

Hi, there's a collegue of mine which has a geoext1.* istance (Jan 16 2013) running and a google base layer stopped working few months ago.
Is there any issue with bigG layers for this old geoext release?

Best regards

Display KML Legend

It would be nice if VectorLegend could interpret a KML format layer and render a proper legend based on styles from kml.

baseParams duplicated on WMSLegend

If a WMSLegend is configured with a URL, and baseParams e.g. contain a FORMAT, the FORMAT gets appended even if the original URL already has a FORMAT param.

We really need to turn all params into an object, uppercase them, and compare them against uppercased baesParams to make sure we don't duplicate any. Whether we override or ignore is a different question - but baseParams implies that we ignore params that are in the URL already.

WFSCapabilitiesReader does not take version into account

The following line in WFSCapabilitiesReader.js throws an error if the GetCapabilities version is set to 1.1.0

var protocolDefaults = { 
    url: data.capability.request.getfeature.href.post 
}; 

The XML for GetCapabilities 1.1.0 does not include a capability section (as version 1.0) did. For example compare:

http://www2.dmsolutions.ca/cgi-bin/mswfs_gmap?version=1.1.0&request=getcapabilities&service=wfs
http://www2.dmsolutions.ca/cgi-bin/mswfs_gmap?version=1.0&request=getcapabilities&service=wfs

It will throw a TypeError: data.capability is undefined.

It looks like this has been brought up on the mailing list previously - http://www.mail-archive.com/[email protected]/msg01703.html

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.