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

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Wed 22 December 2010 12:24

sigdu80
Participant actif
Date d'inscription: 2 Sep 2010
Messages: 112

[OpenLayers, MapServer, WFS] Control ModifyFeature

Bonjour à tous,

je souhaite avoir les fonctionnalités du ModifyFeature sur  une couche WFS (object Layer.Vector) qui change en cours d'utilisation (choix de couche dans une liste déroulante)
Je recrée le control modifyfeature, cela fonctionne.
J'arrive à sélectionner une feature quand je clique dessus (le style change bien, bord et fond couleur bleu), par contre je n'ai pas les petits cercles pour pouvoir modifier la géométrie de ma feature.

Code:

if(typeof controls['modify'] != 'undefined')
                map.removeControl(controls['modify']);
    
            controls['modify'] = new OpenLayers.Control.ModifyFeature(layerEnCours,{
                //mode : OpenLayers.Control.ModifyFeature.RESIZE | OpenLayers.Control.ModifyFeature.ROTATE,
                //mode : OpenLayers.Control.ModifyFeature.RESIZE,
                mode : OpenLayers.Control.ModifyFeature.RESHAPE | OpenLayers.Control.ModifyFeature.DRAG,
                dragComplete: function() {
                    console.log("dragComplete");
                }
                ,selectFeature: function() {
                    console.log("selectFeature");
                }
                ,setFeatureState: function() {
                    console.log("setFeatureState");
                }
            });
            
            console.log("Control Modify sur la layer 'layerEnCours'");
            map.addControl(controls['modify']);

Y a-t-il une restriction dû au fait que je suis avec MapServer (WFS mais pas WFS-T) ?

Dîtes-moi si vous auriez besoin d'un bout de code, ou l'affichage du DOM d'un objet pour vous aiguiller.


Merci d'avance pour vos aides/suggestions, et bon appétit.

Dernière modification par sigdu80 (Wed 22 December 2010 12:34)

Hors ligne

 

#2 Sat 25 December 2010 12:55

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

Re: [OpenLayers, MapServer, WFS] Control ModifyFeature

Bonjour,

non je crois que les deux modes sont justes incompatibles entre eux. Il faut faire deux boutons.

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

 

#3 Wed 29 December 2010 03:36

sigdu80
Participant actif
Date d'inscription: 2 Sep 2010
Messages: 112

Re: [OpenLayers, MapServer, WFS] Control ModifyFeature

Bonjour Yves,

quand tu dis que les 2 modes sont incompatibles, le mode selectFeature et modifyFeature, c'est qu'ils ne peuvent pas être actif en même temps, c'est bien cela ?

Dans ce cas, il ne faut pas que je gère le contrôle actif dans une variable globale de type tableau   comme celle nommée "controls" dans mon bout de code, c'est bien cela ?

Désolé Yves si j'ai du mal à comprendre, mais je pense ton éclaircissement est important.

Merci d'avance.

Hors ligne

 

#4 Mon 10 January 2011 11:54

sigdu80
Participant actif
Date d'inscription: 2 Sep 2010
Messages: 112

Re: [OpenLayers, MapServer, WFS] Control ModifyFeature

Bonjour,

je relance le sujet car je n'arrive pas à voir le souci.

En règle générale, on crée les couches et les contrôles dès le début.

Dans mon cas, pour mon contrôle modifyfeature, j'aimerai  lui affilier une layer qui peut changer (via liste déroulante).
Je peux bien entendu stocker toujours layer qui change dans une même variable, que l'on appelerait "layerEnCours".

Dîtes moi si mon message manque d'information au cas où.

Hors ligne

 

#5 Tue 11 January 2011 12:38

sigdu80
Participant actif
Date d'inscription: 2 Sep 2010
Messages: 112

Re: [OpenLayers, MapServer, WFS] Control ModifyFeature

Bonjour,

j'ai changé radicalement ma façon de faire les choses.

On voit bien qu'il n'est pas possible de passer en modify feature sur des vecteurs issu d'un layer qui possède une source (dans mon cas, un mapfile en WFS).
On peut le faire uniquement avec un vecteur vide, comme dans l'exemple sur le site d'open layers.

On appelera :
- le layer qui possède des features                    : wfsLayer
- le layer qui est vide                                       : wfsVecteurVide


Ce que je souhaite faire :
- passer en mode selectfeature
- sélectionner une feature du layer wfsLayer issu d'une source WFS
- récupérer les coordonnées de la feature sélectionnée et la stocker dans une variable appelée "featureSelectionnee"
- affecter les coordonnées de "featureSelectionnee" dans le layer wfsVecteurVide
- passer en modifyfeature


J'ai trouvé la plupart des instructions pour y arriver :
- passer en mode selectfeature

Code:

ToggleControl('selectfeature');

- sélectionner une feature du layer wfsLayer issu d'une source WFS
- récupérer les coordonnées de la feature sélectionnée et la stocker dans une variable appelée "featureSelectionnee"

Code:

var featureSelectionnee= wfsLayer.selectedFeatures[0];

- affecter les coordonnées de "featureSelectionnee" dans le layer wfsVecteurVide

Code:

controls['selectfeature'].clickoutFeature();//désélectionner la feature sélectionnée
controls['modify'].selectFeature(featureSelectionnee);

- passer en modifyfeature

Code:

ToggleControl('selectfeature');

Je permute bien dans le mode modification, pas de souci.
Par contre, le style de la feature sélectionnée, bien que sélectionnée, ne bascule pas en bleu, elle y passe quand je commence à manipuler un sommet de la feature.
Et quand je clique en dehors de la forme, il ne se désélectionne pas.

Quelqu'un aurait une idée ? Yves, aurais-tu une piste ou as-tu besoin de quelque chose supplémentaire pour mieux cerner mes propos ?

Merci d'avance.

Bon appétit. A toute à l'heure.

Dernière modification par sigdu80 (Tue 11 January 2011 12:41)

Hors ligne

 

Pied de page des forums

Powered by FluxBB