1
26 avr 2009

introduction


attention_light.jpg Ce tutoriel utilise la dernière version de GeoEXT qui possède la particularité de disposer d'une nouvelle classe WMSCapabilitiesReader.

Créer la liste déroulante


Pour implémenter la liste déroulante, vous avez juste à télécharger ce fichier ComboBoxWMS (ou sa version packagée). Il vous faut ensuite déclarer ce script ainsi que les autres librairies (GeoExt, Ext, openLayers) de la manière suivante :

Ensuite créez une page qui sera chargé au démarrage et ajoutez l'objet ComboBoxWMS :


ProxyHost = "/cgi-bin/proxy.cgi?url=";
combo = new GeoExt.form.ComboBoxWMS({
renderTo : 'formCombo',
WMSurl : 'http://labs.metacarta.com/wms/vmap0',
layerFilter : 'pop',
triggerAction : 'all',
ProxyHost : "/cgi-bin/proxy.cgi?url=",
listeners: {
select: function(combo, record, index) {
var layers = record.data.name;
layers = new OpenLayers.Layer.WMS(layers, this.WMSurl,
{layers: layers, transparent:true},
{buffer: 0, isBaseLayer:false});
map.addLayer(layers);
}//EOF select
}//EOF listeners
});//EOF combo

attention_light.jpg N'oubliez de spécifier le paramètre "ProxyHost". En effet c'est un flux texte qui va transiter et votre navigateur, sans ce proxyHost, va donc le bloquer.

Les deux paramètres importants à préciser sont :

  • WMSurl : l'URl à interroger
  • ProxyHost : Spécifie le proxy à utiliser. A utiliser en cas d'appel à une serveur distant

Exemple


comboBow_WMS.png

A propos de l'auteur: 
Arnaud Vandecasteele

Fervent défenseur de l'Open Source, Arnaud s'est spécialisé dans le développement d'application cartographiques web. OpenLayers, PostGIS ou encore Django sont autant d'outils qu'il manipule au quotidien.
S'il n'est pas en face de son ordinateur, vous le retrouverez un GPS à la main en train de cartographier pour OpenStreetMap, de faire voler son drone ou sur un tatami !

Commentaires

lors de l'appel au Proxy avec l'url suivante :
/cgi-bin/proxy.cgi?url=http://labs.metacarta.com/wms/vmap0?REQUEST=GetCapabilities&SERVICE=WMS&...

il s'avère que, hormis le premier paramètre REQUEST de l'url du serveur WMS, chaque paramètre ultérieur est en fait un paramètre de la première URL.
En gros, voila comment le navigateur interprète cet appel :

/cgi-bin/proxy.cgi
url: url=http://labs.metacarta.com/wms/vmap0?REQUEST=GetCapabilities
service: WMS
version : VERSION=1.1.1

ce qui fait que 'service' et 'version' ne sont pas pris en compte comma paramètre de la requête WMS.

comment peut-on faire pour que ce soit le cas ? car ok ce n'est pas bloquant pour ces 2 param, mais pour le param NAMESPACE par exemple ça l'est d'avantage.

Merci