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é ?

#1 Wed 06 May 2009 16:21

Maxime31
Participant assidu
Date d'inscription: 3 Sep 2008
Messages: 175

[OpenLayers] Problème GetFeatureInfo WMS

Salut à tous,

J'ai lu beaucoup de choses (soit sur le forum, soit sur d'autres sites) sur la possibilité de récupérer les attributs des objets dans OpenLayers mais lorsque je teste, j'ai des erreurs.

Voila ce que j'ai rajouté dans mon fichier html :

Code:

map.events.register('click', map, function (e) {
OpenLayers.Util.getElement('nodeList').innerHTML = "Loading... please wait...";
var url =  wms.getFullRequestString({
        REQUEST: "GetFeatureInfo",
        EXCEPTIONS: "application/vnd.ogc.se_xml",                
        BBOX: wms.map.getExtent().toBBOX(),
        X: e.xy.x,
        Y: e.xy.y,
        INFO_FORMAT: 'text/html',
        QUERY_LAYERS: wms.params.LAYERS,            
        WIDTH: wms.map.size.w,
        HEIGHT: wms.map.size.h});
OpenLayers.loadURL(url, '', this, setHTML);
OpenLayers.Event.stop(e);
});


function setHTML(response) {
    OpenLayers.Util.getElement('nodeList').innerHTML = response.responseText;
}

et voici ce que j'ai rajouté dans le mapfile pour la couche concernée :

Code:

METADATA
  "wms_title" "Communes"
  "wms_include_items" "nom_com"
END

J'ai certainement oublié des trucs donc si quelqu'un a une idée svp ?

Hors ligne

 

#2 Thu 07 May 2009 09:58

Maxime31
Participant assidu
Date d'inscription: 3 Sep 2008
Messages: 175

Re: [OpenLayers] Problème GetFeatureInfo WMS

Personne ?

Hors ligne

 

#3 Fri 08 May 2009 17:15

Coiler
Juste Inscrit !
Date d'inscription: 8 May 2009
Messages: 5

Re: [OpenLayers] Problème GetFeatureInfo WMS

Bah si je ne dis pas de betise, les proprietes du type attributs ne sont pas definies pour tous les objets. Par exemple pour les markers ca ne marche pas. Par contre pour les objets sur une couche vectoriel la ca marche (j'ai teste).

En tout cas c'est ce que je retire de l'API Openlayers, a moins qu'il y est une fonction que j'ignore.

La en l'occurence tu veux stocker des informations dans l'objet layer  type WMS non ?

Hors ligne

 

#4 Fri 08 May 2009 17:56

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9864
Site web

Re: [OpenLayers] Problème GetFeatureInfo WMS

Colier,

Il existe un paramètre GetFeatureInfo dans le standard WMS qui permet de récupérer des infos d'une couche WMS (si cela a été activé). Maxime veut l'utiliser au travers de l'API d'OL.

http://trac.openlayers.org/wiki/GetFeatureInfo

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#5 Fri 08 May 2009 19:40

Coiler
Juste Inscrit !
Date d'inscription: 8 May 2009
Messages: 5

Re: [OpenLayers] Problème GetFeatureInfo WMS

Ok je ne connaisais pas, merci pour l'info. Cependant d'apres ce que j'ai compris la methode est specifique aux couches WMS et non pas les objets d'OL en general.

Hors ligne

 

#6 Tue 26 May 2009 16:13

Maxime31
Participant assidu
Date d'inscription: 3 Sep 2008
Messages: 175

Re: [OpenLayers] Problème GetFeatureInfo WMS

Je me permets de relancer ce sujet parce que je suis toujours bloqué dans l'utilisation du GetFeatureInfo sous OpenLayers.

J'ai regardé le lien que tu m'as envoyé Yves mais j'avoue ne pas avoir tout compris.

Donc toujours par rapport au code du premier post, j'ai une erreur qui apparaît quand je clique sur un des objets de ma couche communes : 'OpenLayers.Util.getElement(...)' a la valeur Null ou n'est pas un objet

Pourquoi cette erreur ?

Hors ligne

 

#7 Tue 26 May 2009 16:22

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9864
Site web

Re: [OpenLayers] Problème GetFeatureInfo WMS

Maxime,

Le problème vient de ce bout de code :

Code:

OpenLayers.Util.getElement('nodeList')

En toute logique, il ne trouve pas l'élément nodeList ... La seule piste que je peux te donner et de vérifier ton code HTML.

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#8 Tue 26 May 2009 16:36

Maxime31
Participant assidu
Date d'inscription: 3 Sep 2008
Messages: 175

Re: [OpenLayers] Problème GetFeatureInfo WMS

A priori, je ne vois pas d'erreur dans le code HTML. A quoi doit corrrespondre ce champ "nodeList" ?

Sinon le problème ne viendrait-il pas du mapfile ?

Hors ligne

 

#9 Tue 26 May 2009 16:54

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9864
Site web

Re: [OpenLayers] Problème GetFeatureInfo WMS

euuuuh nodeListe est le nom de l'élément que tu tentes de récupérer wink ;

si tu ne sais pas à quoi cela sert, c'est que tu ne l'utilises pas comme il faut. GetElement récupérer l'objet DOM dont l'id est dans le paramètre. Et y insère le texte que tu définies ("Loading... please wait..." puis la réponse de la requête AJAX).

Rajoute le code ci-dessous ;

Code:

<div id="nodeList"></div>

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#10 Tue 26 May 2009 17:26

Maxime31
Participant assidu
Date d'inscription: 3 Sep 2008
Messages: 175

Re: [OpenLayers] Problème GetFeatureInfo WMS

Effectivement, je n'avais pas vraiment compris à quoi correspondait "nodeList" ! Donc merci pour ça déjà !

Par contre, j'ai encore une petite erreur : msWMSFeatureInfo(): WMS server error. Requested layer(s) are not queryable.
Mais je pense que c'est pas grand chose, c'est juste un truc à rajouter non ?

Hors ligne

 

#11 Wed 27 May 2009 09:34

Maxime31
Participant assidu
Date d'inscription: 3 Sep 2008
Messages: 175

Re: [OpenLayers] Problème GetFeatureInfo WMS

Quelqu'un sait à quoi correspond cette erreur : msWMSFeatureInfo(): WMS server error. Requested layer(s) are not queryable, svp ?

(Je suis en train de tester le GetFeatureInfo)

Hors ligne

 

#12 Wed 27 May 2009 09:44

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9864
Site web

Re: [OpenLayers] Problème GetFeatureInfo WMS

bonjour,

Il faut autoriser la récupération des info des couches désirées. Voir la doc à ce sujet : http://mapserver.org/ogc/wms_server.html, section "Configuring for GetFeatureInfo Requests:"

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#13 Wed 27 May 2009 10:25

Maxime31
Participant assidu
Date d'inscription: 3 Sep 2008
Messages: 175

Re: [OpenLayers] Problème GetFeatureInfo WMS

Merci pour ce lien.

Alors j'ai rajouté le DUMP TRUE pour la couche dont je veux récupérer les infos mais j'ai toujours la même erreur.

Mapfile :

Code:

MAP

NAME "Natura"
EXTENT 416635 1729996 685832 1934314
STATUS ON
IMAGETYPE png
SIZE 600 600


WEB
IMAGEPATH "/ms4w/tmp/ms_tmp/" 
IMAGEURL "/ms_tmp/"
METADATA
  "wms_title" "WMS Demo Server"
  "wms_onlineresource" "localhost/cgi-bin/mapserv?map=c:/ms4w/Apache/htdocs/projet_test/natura_map&"
  "wms_srs" "epsg:27593"
  "wms_format" "image/png"
END
END

PROJECTION
"init=epsg:27593"
END


LAYER
NAME "communes"
METADATA
  "wms_title" "Communes"
  "wms_include_items" "nom_com"
END
STATUS OFF
CONNECTION "user=*** password=*** dbname=*** host=localhost"
CONNECTIONTYPE POSTGIS
DATA "the_geom from communes"
TYPE POLYGON
CLASS
       NAME 'Communes' 
       STYLE
         SYMBOL 0 
         SIZE 2 
         OUTLINECOLOR 153 255 102
       END
    END
PROJECTION
"init=epsg:27593"
END
DUMP TRUE
END

END

Hors ligne

 

#14 Wed 27 May 2009 10:51

Guillaume Sueur
Participant assidu
Lieu: Toulouse
Date d'inscription: 23 Sep 2005
Messages: 331
Site web

Re: [OpenLayers] Problème GetFeatureInfo WMS

Bonjour,

Il faut ajouter une entrée TEMPLATE "fake.html" au niveau du layer. Sinon MapServer ne considère pas la couche comme interrogeable. Rien à voir avec le WMS ici, c'est un héritage du mapserver cgi historique. Le contenu de l'attribut TEMPLATE est sans importance, il faut juste qu'il y soit.

Guillaume

Hors ligne

 

#15 Wed 27 May 2009 11:05

Maxime31
Participant assidu
Date d'inscription: 3 Sep 2008
Messages: 175

Re: [OpenLayers] Problème GetFeatureInfo WMS

Ok ! Merci ! Ca venait effectivement de là !

Mais...j'ai une autre erreur, je vais essayer de me renseigner dessus. Cependant si quelqu'un l'a déjà rencontré : msWMSFeatureInfo(): WMS server error. Unsupported INFO_FORMAT value (text/html). msPOSTGISLayerRetrievePGVersion(): Query error. Error executing POSTGIS statement (msPOSTGISLayerRetrievePGVersion():select substring(version() from 12 for (position('on' in version()) - 13))

Hors ligne

 

#16 Wed 27 May 2009 11:25

Guillaume Sueur
Participant assidu
Lieu: Toulouse
Date d'inscription: 23 Sep 2005
Messages: 331
Site web

Re: [OpenLayers] Problème GetFeatureInfo WMS

Comme pour le problème précédent, les réponses se trouvent dans la page indiquée plus haut par Yves. Prends le temps de la regarder avec attention. Ton problème vient de ce que tu demandes un retour en text/html, qui suppose côté MapServer que tu utilises un vrai template html contenant les balises de substitution des champs. Commence pas demander un format text/plain, ou gml puisque tu as mis DUMP TRUE.

Hors ligne

 

#17 Wed 27 May 2009 12:31

Maxime31
Participant assidu
Date d'inscription: 3 Sep 2008
Messages: 175

Re: [OpenLayers] Problème GetFeatureInfo WMS

J'ai remplacé "text/html" par "gml" et lorsque je clique sur une commune, j'ai bien le message "Loading...Please wait" mais après rien ne s'affiche.

Je n'arrive pas bien à saisir le rapport entre les "text/html" ou "gml" et les attributs METADATA de la couche dans le mapfile (wms_include_items "nom_comm").

La doc d'Yves a l'air très complète à ce sujet mais en anglais, ca passe un peu moins.

Hors ligne

 

#18 Tue 09 June 2009 15:05

Maxime31
Participant assidu
Date d'inscription: 3 Sep 2008
Messages: 175

Re: [OpenLayers] Problème GetFeatureInfo WMS

Bonjour,

Je galère toujours un peu sur cette histoire de GetFeatureInfo. Je veux juste afficher le nom d'une commune lorsque je clique dessus dans mon interface OL.
Donc je voudrais juste utiliser le format 'text/html' du GetFeatureInfo, étant donné que je ne veux pas faire de traitement avec.
Je me suis un peu inspiré de ce lien http://trac.openlayers.org/wiki/GetFeatureInfo.

Voila la config de la couche dans le mapfile :

Code:

LAYER
NAME "communes"
METADATA
  "wms_title" "communes"
  "ows_include_items" "nom_comm" 
END
TEMPLATE "fake.html"
STATUS OFF
CONNECTION "user=*** password=*** dbname=*** host=***"
CONNECTIONTYPE POSTGIS
DATA "the_geom from communes"
TYPE POLYGON
LABELITEM 'nom_comm'
CLASS
       NAME 'Communes' 
       STYLE
         SYMBOL 0 
         SIZE 2 
         OUTLINECOLOR 153 255 102
       END
    END
PROJECTION
"init=epsg:27593"
END
DUMP TRUE
END

et le code Javascript :

Code:

    map.events.register('click', map, findLayerClick);
                
    function findLayerClick(event) {

    layerlist = "communes";

    mouseLoc = map.getLonLatFromPixel(event.xy);

    var url = wms1.getFullRequestString({
        REQUEST: "GetFeatureInfo",
        EXCEPTIONS: "application/vnd.ogc.se_xml",
        BBOX: map.getExtent().toBBOX(),
        X: event.xy.x,
        Y: event.xy.y,
        INFO_FORMAT: 'text/html',
        QUERY_LAYERS: layerlist,
        FEATURE_COUNT: 1,
        WIDTH: map.size.w,
        HEIGHT: map.size.h},
        "http://localhost/cgi-bin/mapserv.exe?map=c:/ms4w/Apache/htdocs/projet_test/natura.map");
 
    OpenLayers.loadURL(url, '', this, setHTML);

    Event.stop(event);
                }

    function setHTML(response) {
        alert(response.responseText);
    }

Et j'ai donc des erreurs de format. Comment faut-il configurer le mapfile pour avoir accès aux données attributaires avec INFO_FORMAT: 'text/html' ?

Merci d'avance

Dernière modification par Maxime31 (Wed 10 June 2009 15:21)

Hors ligne

 

#19 Wed 10 June 2009 09:15

Maxime31
Participant assidu
Date d'inscription: 3 Sep 2008
Messages: 175

Re: [OpenLayers] Problème GetFeatureInfo WMS

Si quelqu'un connaît un site complet sur ce sujet (en français si possible) svp ?
Merci

Hors ligne

 

#20 Wed 10 June 2009 09:29

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9864
Site web

Re: [OpenLayers] Problème GetFeatureInfo WMS

Bonjour,

Pas complet mais tu y trouveras quelques informations :
http://softlibre.gloobe.org/doku.php/openlayers/start

À ma connaissance il n'y en a pas d'autre. Mais si tu es prêt à participer à une traduction de la doc d'OpenLayers, on doit organiser cela wink

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#21 Wed 10 June 2009 09:59

Maxime31
Participant assidu
Date d'inscription: 3 Sep 2008
Messages: 175

Re: [OpenLayers] Problème GetFeatureInfo WMS

Bonjour,

Merci pour ce lien (sur lequel j'étais déjà tombé je crois).
Mais ce que j'aimerais savoir c'est comment configurer la couche dans le mapfile pour utiliser GetFeatureInfo ?

Hors ligne

 

#22 Wed 10 June 2009 13:01

Maxime31
Participant assidu
Date d'inscription: 3 Sep 2008
Messages: 175

Re: [OpenLayers] Problème GetFeatureInfo WMS

ReBonjour,

Alors voici mon nouveau code dans le mapfile :

Code:

LAYER
NAME "communes"
METADATA
  "wms_title" "communes"
  "wms_feature_info_mime_type" "text/plain"
  "wms_include_items" "all" 
END
TEMPLATE "ttt"
STATUS OFF
CONNECTION "user=*** password=*** dbname=*** host=***"
CONNECTIONTYPE POSTGIS
DATA "the_geom from communes"
TYPE POLYGON
LABELITEM 'nom_comm'
CLASS
       NAME 'Communes' 
       STYLE
         SYMBOL 0 
         SIZE 2 
         OUTLINECOLOR 153 255 102
       END
    END
PROJECTION
"init=epsg:27593"
END
DUMP TRUE
END

ainsi que le nouveau code Javascript :

Code:

    map.events.register('click', map, function(event) {
    var url = communes.getFullRequestString({
            REQUEST: "GetFeatureInfo",
            EXCEPTIONS: "application/vnd.ogc.se_xml",
            BBOX: communes.map.getExtent().toBBOX(),
            X: event.xy.x,
            Y: event.xy.y,
            INFO_FORMAT: 'text/plain',
            QUERY_LAYERS: communes.params.LAYERS,
                                     WIDTH: communes.map.size.w,
            HEIGHT: communes.map.size.h});

    //OpenLayers.loadURL(url, '', this, setHTML);
    OpenLayers.Util.getElement('nodeList').innerHTML = url;
    Event.stop(event);
});

et donc je récupére mon URL pour la tester dans un nouvelo onglet et voila ce que Firefox m'affiche :

Code:

GetFeatureInfo results:

Layer 'communes'
Content-type: application/vnd.ogc.se_xml

<?xml version='1.0' encoding="ISO-8859-1" standalone="no" ?>
<!DOCTYPE ServiceExceptionReport SYSTEM "http://schemas.opengis.net/wms/1.1.1/exception_1_1_1.dtd">
<ServiceExceptionReport version="1.1.1">
<ServiceException>
msPOSTGISLayerGetShape(): Query error. Error executing POSTGIS SQL statement (in FETCH ALL): DECLARE mycursor2 BINARY CURSOR FOR SELECT &quot;oid&quot;::text,&quot;id_bdcarto&quot;::text,&quot;nom_comm&quot;::text,&quot;insee_comm&quot;::text,&quot;statut&quot;::text,&quot;x_commune&quot;::text,&quot;y_commune&quot;::text,&quot;superficie&quot;::text,&quot;population&quot;::text,&quot;insee_cant&quot;::text,&quot;insee_arr&quot;::text,&quot;nom_dept&quot;::text,&quot;insee_dept&quot;::text,&quot;nom_region&quot;::text,&quot;insee_reg&quot;::text,asbinary(force_collection(force_2d(the_geom)),'NDR') from communes WHERE OID = 52
-ERROR:  DECLARE CURSOR can only be used in transaction blocks

More Help:
msPOSTGISLayerRetrievePGVersion(): Query error. Error executing POSTGIS statement (msPOSTGISLayerRetrievePGVersion():select substring(version() from 12 for (position('on' in version()) - 13))
msPOSTGISLayerRetrievePGVersion(): Query error. Error executing POSTGIS statement (msPOSTGISLayerRetrievePGVersion():select substring(version() from 12 for (position('on' in version()) - 13))
msPOSTGISLayerRetrievePGVersion(): Query error. Error executing POSTGIS statement (msPOSTGISLayerRetrievePGVersion():select substring(version() from 12 for (position('on' in version()) - 13))
</ServiceException>
</ServiceExceptionReport>

Quelqu'un sait d'où provient cette erreur ?

Dernière modification par Maxime31 (Wed 10 June 2009 15:22)

Hors ligne

 

#23 Wed 10 June 2009 13:07

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9864
Site web

Re: [OpenLayers] Problème GetFeatureInfo WMS

Bonjour,

Quelle version de MapServer utilises tu ?

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#24 Wed 10 June 2009 13:38

Maxime31
Participant assidu
Date d'inscription: 3 Sep 2008
Messages: 175

Re: [OpenLayers] Problème GetFeatureInfo WMS

J'ai pris la dernière version du package ms4w (qui ets la version 2.3.1) avec MapServer 5.2.1 inclus.

Hors ligne

 

#25 Wed 10 June 2009 17:16

Maxime31
Participant assidu
Date d'inscription: 3 Sep 2008
Messages: 175

Re: [OpenLayers] Problème GetFeatureInfo WMS

Voila juste un post pour vous dire que j'ai trouvé d'où venait le problème grâce à l'aide de L.Jégou.

Il s'agissait en fait de compléter la ligne DATA dans la config de la couche dans le mapfile en rajoutant "using unique gid" (on peut également rajouter "using srid=27593").
Ce qui donne :

Code:

DATA "the_geom FROM communes USING UNIQUE gid"

Merci encore.

Hors ligne

 

#26 Wed 10 June 2009 17:19

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9864
Site web

Re: [OpenLayers] Problème GetFeatureInfo WMS

Merci du retour.

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#27 Tue 21 July 2009 20:10

Mathieu J.
Participant occasionnel
Lieu: Liège - Belgique
Date d'inscription: 15 Jun 2009
Messages: 24

Re: [OpenLayers] Problème GetFeatureInfo WMS

Bonjour à tous,

Je me permets de relancer ce poste car après avoir utilisé avec succès l'exemple de GetFeatureInfo renseigné par Yves via le lien suivant http://trac.openlayers.org/wiki/GetFeatureInfo je rencontre néanmoins un petit problème avec l'affichage des popup et de la fonction setHTML.

En fait mon objectif est de contrôler cette fonction via un bouton. Je suis parvenu à déclencher la fonction lors d'un click (via la fonction onClick sur le bouton "control2" qui appelle la fonction "show_info") mais le problème est que je n'arrive pas à désactiver cette même fonction une fois qu'elle est enclenchée (il y a peut-être un autre moyen que le onClick ?). L'idéal serait de pouvoir désactiver la création de popup et l'interrogation de la couche une fois que l'on clique sur un autre bouton de contrôle type le bouton de navigation (cela passe-t-il par une désactivation du bouton ou de la fonction show_info ?).

Quelqu'un pourrait-il me mettre sur la voie ?
D'avance merci

Mathieu

Mon code OL - extrait de ma fonction init

Code:

        
function init() {

    ...
             
    control1 = new OpenLayers.Control.Navigation();
    map.addControl(control1);    
            
    control2 = new OpenLayers.Control.Button({onClick: show_info, 'displayClass': 'Button'});
    map.addControl(control2);
            
    panel = new OpenLayers.Control.Panel({div: document.getElementById("panel")});
             
    panel.addControls([control1, control2]);
             
    map.addControl(panel);
}//end init

Ma fonction show_info

Code:

function show_info()
{
           map.events.register('click', map,
       function LayerClick(event){
            
       mouseLoc = map.getLonLatFromPixel(event.xy);
            
       var params = 
            {
            REQUEST: "GetFeatureInfo",
            EXCEPTIONS: "application/vnd.ogc.se_xml",
            BBOX: map.getExtent().toBBOX(),
            X: event.xy.x,
            Y: event.xy.y,
            INFO_FORMAT: 'text/html',
            QUERY_LAYERS: wms1.params.LAYERS,
            WIDTH: wms1.map.size.w,
            HEIGHT: wms1.map.size.h,
        format: 'image/png'};

            OpenLayers.loadURL("http://127.0.0.1/cgi-bin/mapserv.exe?map=/ms4w/apps/tutorial/htdocs/ASE_LIEGE_GFI.map&REQUEST=GetCapabilities&SERVICE=WMS&VERSION=1.1.1&LAYERS=BATI&SRS=EPSG:31370", params, this, setHTML);
            
            Event.stop(event);
            
            });
            
            function setHTML(response) {
            if (response.responseText.indexOf('no results') == -1){ 
            var lines = response.responseText;
        var popup_info = "<span class='popup'>" + lines + "</span>";
 
                
            if (popup != null) {
            popup.destroy();
            popup = null;
            }
        
            if (lines != "") {
            popup = new OpenLayers.Popup.AnchoredBubble("BatiInfo",
                                        mouseLoc,
                                        new OpenLayers.Size(120,120),
                                        popup_info,
                                        null,
                                        true);
            popup.setBackgroundColor("#E20030");
            popup.setOpacity(.9);
            map.addPopup(popup);
            popup.events.register("click", map, popupDestroy);}
    }
  }// end setHTML
}// end show_info

Et enfin le control Button

Code:

OpenLayers.Control.Button = OpenLayers.Class(OpenLayers.Control, {
    onClick: null,
    
    type: OpenLayers.Control.TYPE_BUTTON,
    
    trigger: function() {if (this.onClick)
        this.onClick();},

    CLASS_NAME: "OpenLayers.Control.Button"
});

Hors ligne

 

#28 Thu 23 July 2009 10:34

Mathieu J.
Participant occasionnel
Lieu: Liège - Belgique
Date d'inscription: 15 Jun 2009
Messages: 24

Re: [OpenLayers] Problème GetFeatureInfo WMS

Bonjour,

J'ai finalement contourné le problème en découvrant sur ce forum le contrôle WMSGetFeatureInfo qui n'existait pas dans la version 2.7. Plus besoin de la fonction show_info donc. Pour info, cela fonctionne très bien wink (excepté en local avec FF où j'ai une erreur "Access to restricted URI denied" code: "1012" comme je tentais de l'expliquer au topic suivant :http://georezo.net/forum/viewtopic.php?id=61500)

voici mon nouveau code :

Code:

var lon = 237004.702965;
var lat = 146667.632985;
var zoom = 0;
var map;
var popup;
var panel, control1, info;
var wms1;

        
function init() { 

...
         
    info = new OpenLayers.Control.WMSGetFeatureInfo({
                 url: 'http://127.0.0.1/cgi-bin/mapserv.exe?map=/ms4w/apps/tutorial/htdocs/ASE_LIEGE_GFI.map&', 
                 title: 'Identify features by clicking',
             'displayClass': 'Info',
                 queryVisible: true,
                 eventListeners: {
                 getfeatureinfo: function(event) {
                
         if (popup != null) {
                 popup.destroy();
                 popup = null;
                 }
                
         if (event.text != "") {
        popup = new OpenLayers.Popup.AnchoredBubble("BatiInfo",
                map.getLonLatFromPixel(event.xy),
                new OpenLayers.Size(80,80),
                event.text,
                null,
                true);
                
                popup.setBackgroundColor("#E20030");
                popup.setOpacity(.9);
        map.addPopup(popup);}//end if
                
                }//end getfeatureinfo
            }// end eventListeners
        });//end info 
         
        map.addControl(info);
        info.activate();

    panel = new OpenLayers.Control.Panel({div: document.getElementById("panel")});
             
    panel.addControls([control1,info]);
             
        map.addControl(panel);
}//end init

A+
Mathieu

Hors ligne

 

#29 Thu 23 July 2009 10:46

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9864
Site web

Re: [OpenLayers] Problème GetFeatureInfo WMS

L'adresse pour accéder à ta page est elle différente de "http://127.0.0.1/", par exemple http://localhost/... ?

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#30 Thu 23 July 2009 14:32

Mathieu J.
Participant occasionnel
Lieu: Liège - Belgique
Date d'inscription: 15 Jun 2009
Messages: 24

Re: [OpenLayers] Problème GetFeatureInfo WMS

Effectivement, le problème 1012 rencontré avec FF était lié à l'adresse de ma page.
Je la lançais en réalité en double cliquant dessus depuis un répertoire personnel. J'ai replacé le fichier dans le répertoire exemple d'openlayers en mettant à jour les liens.
J'appelle maintenant ma page via une adresse de type http://127.0.0.1/openlayers/examples/ mapage.html et le getfeatureinfo fonctionne très bien big_smile.

Merci beaucoup Yves !

Hors ligne

 

Pied de page des forums

Powered by FluxBB