Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Fri 20 February 2009 09:42

Sitelle
Participant occasionnel
Date d'inscription: 1 Feb 2009
Messages: 31

Mapfish et layertree

Bonjour,

Je souhaite réaliser, dans une interface Mapfish, une arborescence des couches (layertree).
Mapfish est utilisé comme client et est relié à une base de données PostgreSQL/PostGIS. Les layers sont au format WMS pour les fonds raster (notamment Openlayer et google) et KML ou GeoJSON pour les vecteurs.

J'ai vu sur le site de Mapfish qu'il est possible de réaliser un "layertree" de la manière suivante :
(créé à partir de http://demo.mapfish.org/mapfishsample/1 … mplex.html)

Code:

 var model = [{
            text: "Base Layers",
            expanded: true,
            children: [{
                text: "Vmap",
                checked: true,
                layerName: "vmap0"
            },{
                text: "World map",
                expanded: true,
                checked: false,
                href: "http://www.google.com/search?q=world+map",
                hrefTarget: "_blank",
                layerName: "base_world",
                children: [{
                    text: "Country boundaries",
                    icon: "icons/img1.png"
                },{
                    text: "Sample class",
                    icon: "icons/img2.png"
                }]
            },{
                text: "Satellite",
                checked: false,
                layerName: "base_sat"
                        
                        },{
                text: "Essai",
                checked: false,
                layerName: "Google Physical"    
                        
            }]
        },{
            text: "Overlays",
            expanded: true,
            checked: false,
            children: [{
                text: "Parkings and Summits",
                layerNames: ["C2C Objects:parkings", "C2C Objects:summits"],
                checked: false
            },{
                text: "Some Objects",
                checked: false,
                expanded: true,
                icon: "icons/img3.png",
                children: [{
                    text: "Parkings",
                    icon: "icons/img2.png",
                    layerName: "C2C Objects:parkings",
                    checked: false
                },{
                    text: "Summits",
                    icon: "icons/img1.png",
                    layerName: "C2C Objects:summits",
                    checked: false
                                },{
                    text: "Essai",
                    icon: "icons/img1.png",
                    layerName: "etablissement",
                    checked: false        
                }]
            },{
                text: "Huts and Spots",
                layerNames: ["C2C Objects:refuges", "C2C Objects:sites"],
                checked: false
            },{
                text: "Spots",
                layerNames: ["C2C Objects:sites"],
                checked: false
            }]
        }];

        var tree = new mapfish.widgets.LayerTree({map: map, el: 'tree', model: model});
        tree.render();

Cependant je n'arrive pas à l'insérer dans la "région west" l'interface mapfish (exemple de code ci-dessous).

(créé à partir de http://demo.mapfish.org/mapfishsample/1 … olbar.html)


Code:

 
var createViewport = function() {
            viewport = new Ext.Viewport({
                layout: 'border',
                items: [
                    new Ext.BoxComponent({
                        region: 'north',
                        el: 'north',
                        height: 60
                    }), {
                        region: 'west',
                        title: 'LayerTree',
                        width: 200,
                        border: true,
                        margins: '5 0 0 5',
                        frame: false,
                        split: true,
                        layout: 'fit',
                        collapsible: true,
                        items: [{ 
                            xtype: 'layertree',
                            map: map, 
                            border: false 
                        }]
                    },{
                        region: 'center',
                        //title: 'map',
                        layout: 'fit',
                        frame: false,
                        border: true,
                        margins: '5 5 0 0',
                        items: [{
                            xtype: 'mapcomponent',
                            map: map,
                            tbar: toolbar,
                            border: false
                        }]
                    },{
                        region: 'south',
                        id: 'statusBar',
                        border: false,
                        bodyStyle: 'text-align:left;padding:0px;',
                        height: 25,
                        margins: '5 0 0 0',
                        frame: true,
                        html: 'a status bar'
                    }
                ]
            });
        };

Connaissez-vous une méthode permettant d'intégrer le modèle du premier code au second code ou un application utilisant cette méthode ?

Merci d'avance,

Estelle

Hors ligne

 

#2 Fri 20 February 2009 09:51

erilem
Participant occasionnel
Date d'inscription: 8 Mar 2007
Messages: 26

Re: Mapfish et layertree

Bonjour,

Si l'arbre de couche est inséré dans un élément parent en utilisant xtype: "layertree" il ne faut pas créer explicitement une instance de mapfish.widgets.LayerTree, donc les lignes :

Code:

var tree = new mapfish.widgets.LayerTree({map: map, el: 'tree', model: model});
tree.render();

sont à supprimer.

Ensuite, si vous voulez utilisez un modèle (il semble que ce soit le cas), il faut passer ce modèle dans la config :

Code:

items: [{ 
    xtype: 'layertree',
    map: map, 
    model: model
}]

En espérant que ceci aide...

--
Eric

Hors ligne

 

#3 Fri 20 February 2009 10:20

Sitelle
Participant occasionnel
Date d'inscription: 1 Feb 2009
Messages: 31

Re: Mapfish et layertree

ça fonctionne parfaitement,
merci beaucoup pour cette réponse très rapide.

Estelle

Hors ligne

 

#4 Thu 12 May 2011 14:43

Deleurme
Participant actif
Date d'inscription: 13 Apr 2006
Messages: 101
Site web

Re: Mapfish et layertree

Je tente de reprendre les explications précédentes mais rien n'y fait.

Si j'ai bien compris on ne met pas la dernière ligne

Code:

var tree = new mapfish.widgets.LayerTree({map: map, 
    el: 'tree',
    enableDD: true
    });

On ajoute le model dans le viewport...

Code:

  model: model

Quelque chose me gêne, est que dans ce cas comment dans le Viewport on peut dire xtype: layertree
puisque l'on a supprimé la seule déclaration du code:


Code:

var tree = new mapfish.widgets.LayerTree({

Merci pour toute information...
arno

Hors ligne

 

#5 Fri 13 May 2011 14:51

Sitelle
Participant occasionnel
Date d'inscription: 1 Feb 2009
Messages: 31

Re: Mapfish et layertree

Bonjour,
Le fait de declarer le type du composant par

Code:

xtype : 'layertree'

remplace la declaration prealable :

Code:

var tree = new mapfish.widgets.LayerTree({map: map, 
    el: 'tree',
    enableDD: true
    });

Est-ce que cela aide ?

Estelle

Hors ligne

 

#6 Sat 14 May 2011 12:44

Deleurme
Participant actif
Date d'inscription: 13 Apr 2006
Messages: 101
Site web

Re: Mapfish et layertree

Ce qui me pose problème est qu'en général les layertree se construisent autour de layers qui sont issus de WMS.
Soit, on distingue le LayerName.

Dans mon cas, je n'utilise pas de WMS et je pense qu'il s'agit du principal problème. Ma synthaxe est erronée car je n'utilise que des Vector layers (GML).

Si je pouvais mettre la main sur un exemple utilisant des Vector Layers ca m'aiderait.

Merci de votre intérêt.
Arno

Hors ligne

 

Pied de page des forums

Powered by FluxBB