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

Annonce

Printemps des cartes 2024

#1 Thu 01 October 2015 18:02

Jean-Marie64
Participant actif
Lieu: Pau
Date d'inscription: 6 Nov 2007
Messages: 131

[OpenLayers 3] évènement fin de modification d'un feature

Bonjour

est-il possible d'être averti de la fin de la modification d'un feature ?

j'utilise l'interacteur ol.interaction.Modify pour modifier les features

puis j’attache l’événement "modifyend" à cet interacteur (voir le code ci-dessous)

le problème est que lorsque cet événement se produit je reçois une liste de tous les features

y-a-t'il moyen de savoir quel est le feature qui vient d'être modifié

merci d'avance

Jean-Marie


Code:

modifyDrawInteractor = new ol.interaction.Modify({
          features: FeaturesToModify,
          // the SHIFT key must be pressed to delete vertices, so
          // that new vertices can be drawn at the same position
          // of existing vertices
          deleteCondition: function(event) {
            return ol.events.condition.shiftKeyOnly(event) &&
                ol.events.condition.singleClick(event);
          }            
    })

modifyDrawInteractor.on('modifyend', function (event) {
            event.features.forEach(function (feature) {
                console.log("modifyend "+feature.getId());
            });
    })

Hors ligne

 

#2 Fri 02 October 2015 14:08

ThomasG
Membre
Lieu: Nantes
Date d'inscription: 9 Sep 2005
Messages: 940
Site web

Re: [OpenLayers 3] évènement fin de modification d'un feature

Bonjour,

Change d'exemple. Je suppose que tu es passé par celui-ci http://openlayers.org/en/v3.9.0/example … tures.html

En fait, il faut combiner "ol.interaction.Select" et "ol.interaction.Modify" comme dans http://openlayers.org/en/v3.9.0/example … tures.html
Tu auras un tableau (array JavaScript) mais avec uniquement ton objet modifié.

Cordialement

Thomas

Hors ligne

 

#3 Mon 05 October 2015 18:26

Jean-Marie64
Participant actif
Lieu: Pau
Date d'inscription: 6 Nov 2007
Messages: 131

Re: [OpenLayers 3] évènement fin de modification d'un feature

Bonjour

merci pour l'information

je peux maintenant ne modifier que l'objet sélectionné

j'ai apporté une contrainte : l'objet cercle (qui est en fait un polygone) ne doit pas être modifiable
j'utilise pour cela une variable areaFeatureToModify intialisée lors de la sélection
qui ne peux contenir qu'un objet modifiable (donc autre que le cercle)

Jean-Marie

Code:

selectInteractor = new ol.interaction.Select({
    filter:function(feature) {
        if (feature.get('type')!=CIRCLE) {
            // permet de modifier la zone
            areaFeatureToModify.clear();
            areaFeatureToModify.push(feature);
        }
        return true;
    },
    wrapX: false
});
modifyDrawInteractor = new ol.interaction.Modify({
    features:areaFeatureToModify,
    deleteCondition: function(event) {
        return ol.events.condition.shiftKeyOnly(event) &&
                ol.events.condition.singleClick(event);
    }
});

Hors ligne

 

Pied de page des forums

Powered by FluxBB