#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
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