#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
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
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