Vektor-Legenden in GeoExt3 FeatureGrids anzeigen


Bislang gab es in GeoExt 3 (wie auch in älteren GeoExt-Versionen) zum Rendern von Vektorlegenden in tabellarischen Darstellungen (sogenannten Grids) die Klasse GeoExt.grid.column.Symbolizer. Im Zuge des OSGeo Codesprints der FOSS4G 2016 in Bonn (wir berichteten) wurde diese Klasse aus diversen Gründen aus GeoExt 3 entfernt.

Dennoch können Sie weiterhin Vektorlegenden in Grids anzeigen. Mit nur wenigen Zeilen Code kann eine entsprechende Spalte mit Hilfe der GeoExt-Klasse GeoExt.component.FeatureRenderer in der Definition des Grid-Objekts erzeugt werden:

 

Ext.create('Ext.grid.Panel', {
    title: 'Feature Grid',
    // bind the feature store holding the geo features
    store: aFeatureStoreInstance,
    columns: [
        // the vector legend as column in the grid
        {
            xtype: 'widgetcolumn',
            width: 40,
            widget: {
                // the FeatureRenderer alias
                xtype: 'gx_renderer'
            },
            onWidgetAttach: function(column, gxRenderer, record) {
                // update the symbolizer with the related feature
                var feature = record.getFeature();
                gxRenderer.update({
                    feature: feature,
                    symbolizers: GeoExt.component.FeatureRenderer.determineStyle(record)
                });
            }
        },
        // more column definitions here
    ]
});
featuregrid-smybol-col

Die resultierende Vektorlegende im FeatureGrid

Ein ausfühliches Beispiel, das die Funktionalität zeigt, finden Sie hier.

Anwendungsentwickler sollten beim Upgrade auf die aktuelle GeoExt-Version darauf achten bestehende SymbolizerColumn-Verwendungen, wie oben gezeigt zu ersetzen. Bei Fragen oder Supportwünschen können Sie uns gerne kontaktieren.