Sommaire
résumé:
GeoExt offre à tout les développeurs une API riche permettant de créer facilement des composants cartographiques. Nous étudierons au cours de ce tutoriel comment implémenter une liste déroulante affichant les couches disponibles d'un serveur WMS.
pré-requis:
- Avoir la librairie openLayers 2.8 d'installée
- Avoir la librairie GeoExt d'installée
introduction
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 :
<link rel="stylesheet" type="text/css" href="pathTo/ext-all.css" /> <script type="text/javascript" src="pathTo/ext/ext-base.js"></script> <script type="text/javascript" src="pathTo/ext-all.js"></script> <!-- Lib OL 2.8 --> <script src="pathTo/OpenLayers.js" type="text/javascript"></script> <!-- Lib GeoExt --> <script type="text/javascript" src="pathTo/GeoExt.js"></script> <script type="text/javascript" src="pathTo/ComboBoxWMS_minify.js"></script>
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
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


lors de l'appel au Proxy avec
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&VERSION=1.1.1
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