#1 Tue 30 March 2010 14:59
- tiolebucheron
- Participant actif
- Lieu: Rouen
- Date d'inscription: 26 Mar 2006
- Messages: 147
Openlayer-GeoEXT : WMSGetFeatureInfo et GeoExt.Action
Bonjour
Je cherche à récupérer l'objet feature que l'utilisateur à sélection par le click. Je me suis basé sur cet exemple http://openlayers.org/dev/examples/getf … ntrol.html
L'évènement ne se déclenche pas, Je ne comprend le problème. L'objectif final est d'actionner le control au click du bouton et le désactiver au second click.
Merci Tio.
Code:
infoControls = new OpenLayers.Control.WMSGetFeatureInfo({ url: 'http://" + serveur + "/cgi-bin/mapserv', title: 'Identify features by clicking', layers: [ccDGD], queryVisible: true, eventListeners:{ getfeatureinfo: function(event){ console.log(event); outline.addFeatures(event.features); outline.redraw(); } } }); map.addControl(infoControls); infoControls.activate(); action = new GeoExt.Action({ text: "select", id: "featureinfo", control: infoControls, map: map, toggleGroup: "draw", tooltip: "select feature", group:"draw" }); topbarItems.push(action);
Hors ligne
#2 Thu 15 April 2010 09:26
- tiolebucheron
- Participant actif
- Lieu: Rouen
- Date d'inscription: 26 Mar 2006
- Messages: 147
Re: Openlayer-GeoEXT : WMSGetFeatureInfo et GeoExt.Action
BOnjour
Je reviens sur mon problème que je n'ai toujours pas résolut.
Je suis repartit de l'exemple de Openlayers http://openlayers.org/dev/examples/getf … ntrol.htmlcar il y avait la fonction activate qui pourrait me permettre de déactivé l'action.
Voici mon code.
Code:
ccDGD = new OpenLayers.Layer.WMS( "dgd", "http://" + serveur + "/tilecache/tilecache.py", {layers: 'dgd', format: 'image/png'}, {isBaseLayer: false, projection:"EPSG:27572", reproject: false } ); ccDGD.setVisibility(true); map.addLayer(ccDGD); infoControls = { click: new OpenLayers.Control.WMSGetFeatureInfo({ url: "http://" + serveur + "/cgi-bin/mapserv", title: 'Identify features by clicking', layers: [ccDGD], queryVisible: true }) }; infoControls.click.events.register("getfeatureinfo", this, getdgd); map.addControl(infoControls.click); infoControls.click.activate(); function getdgd(evt) { outline.addFeatures(evt.features); }
Le mapfile de la couche
LAYER
NAME "dgd"
STATUS ON
TYPE POLYGON
CONNECTIONTYPE postgis
CONNECTION "host=localhost port=5432 dbname=WEBDATA_NORM user=servdev password=nrwwfua9"
DATA "the_geom from document_gestion_durable USING UNIQUE proid USING SRID 27572"
TEMPLATE "infowms.html"
CLASS
STYLE
OUTLINECOLOR 0 0 0
END
END
PROJECTION
"init=epsg:27572"
END
METADATA
"id_attribute_string" "proid"
"wms_title" "Document de Gestion Durable"
"wms_srs" "EPSG:27572"
"wms_featureid" "proid"
"wms_include_items" "proid,the_geom"
END
END
L'évènement ne se déclenche pas; Pouvez vous me où se trouve le problème.
Merci de votre aide
Tio
Hors ligne
#3 Fri 23 April 2010 10:54
- tiolebucheron
- Participant actif
- Lieu: Rouen
- Date d'inscription: 26 Mar 2006
- Messages: 147
Re: Openlayer-GeoEXT : WMSGetFeatureInfo et GeoExt.Action
Bonjour
J'ai trouvé une solution avec toutefois un bug; Première chose j'ai crée dans couche postgis une colonne contenant la version text du polygone.
Pour l'action
Code:
// Bouton permettan d'ajouter un DGD à la couche polygon map.events.register('click', map, function (e) { if (Ext.getCmp('featureinfo').pressed) { var url = ccDGD.getFullRequestString({ REQUEST: "GetFeatureInfo", EXCEPTIONS: "application/vnd.ogc.se_xml", BBOX: ccDGD.map.getExtent().toBBOX(), X: e.xy.x, Y: e.xy.y, INFO_FORMAT: 'text/plain', QUERY_LAYERS: ccDGD.params.LAYERS, WIDTH: ccDGD.map.size.w, HEIGHT: ccDGD.map.size.h},"http://" + serveur + "/cgi-bin/mapserv"); OpenLayers.loadURL(url, '', this, getdgd); OpenLayers.Event.stop(e); } else{ OpenLayers.Event.stop(e); } }); action = new GeoExt.Action({ tooltip: "Ajouter un DGD à la couche dessin", iconCls: "add", id: "featureinfo", toggleGroup: "draw", allowDepress: false, group:"draw" }); topbarItems.push(action);
Il reste une erreur; Quand on active le bouton il met this.control is undefined en effet il n'y a pas de dans la définition du bouton. A votre qu'est ce que je peux mettre comme control.
Merci de votre aide Tio
Finit
Il suffit de mettre le bouton est Ext.Action.
Dernière modification par tiolebucheron (Fri 23 April 2010 11:38)
Hors ligne