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

Rencontres QGIS 2025

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

#1 Thu 16 February 2012 12:15

narun37
Juste Inscrit !
Date d'inscription: 16 Feb 2012
Messages: 1

Changer le styleMap d'un vector "onchange"

Bonjour tout le monde,
Je suis étudiant en dernière année d'école d'ingénieur et je dois concevoir une application internet SIG. Je rencontre un problème avec openLayers. J'aimerais modifier le style d'un vector via un champ qui est peut être édité par l'utilisateur " onchange ". J'ai donc crée mes petits champs, crée un .change avec jQuery (cette partie fonctionne). J'ai essayé plusieurs possibilités pour modifier le style du vector mais rien n'a fonctionné jusqu'ici. J'utilise jscolor, un tableau de couleur lié au champ qui permet de choisir les couleurs avec la souris.

Voici mon code :

Création du style :

Code:

var myPickerColorField1 = new jscolor.color(document.getElementById('colorField1'), {hash:true,pickerFaceColor:'transparent', pickerFace:3,pickerBorder:0,pickerInsetColor:'black'});
    myPickerColorField1.fromString('7777AA');
    //ficolor="#7777AA";
    var styleInondationNNP1 = new OpenLayers.StyleMap({
        "default": new OpenLayers.Style({
                        strokeWidth:"0",
                        fillColor: '${fillcolor}' ,
                        fillOpacity:"0.5"     
        }),                
        "select": new OpenLayers.Style({
                        fillOpacity: "0.5" 
        })
    });

Imporation des données :

Code:

jQuery.getJSON(urlInondationNNP1,'', function(data){    
            dataStock1= data;
            var geojson_format = new OpenLayers.Format.GeoJSON();
            dataStock1 = geojson_format.read(dataStock1);
            //jQuery("#dialog #message").append("Récupération des données inondation 1 : OK <br/>");
            majProgressBar(5.5);
            inondationNNPoly1 = new OpenLayers.Layer.Vector("Inondation Fluviale profondeur 1",{styleMap:styleInondationNNP1}); 
            map.addLayer(inondationNNPoly1);
            //jQuery("#dialog #message").append("Création de la couche inondation 1 : OK <br/>");
            majProgressBar(5.5);
        
            inondationNNPoly1.addFeatures(dataStock1);    
            majProgressBar(5.5);
            
    });

Code:

//Changer la couleur dès que le champ de la couche associé est modifié => Couche 1
        jQuery("#colorField1").change(function(){
             alert('#'+myPickerColorField1);

             alert("Avant de passer");
             fillcolor="#"+myPickerColorField1; 
                     inondationNNPoly1.redraw();
             alert("After ");
    
             
        });

Alors comme je l'ai dit, j'ai essayé plusieurs possibilités, cet exemple étant une des possibilités. Je ne comprends pas trop comment utiliser " fillcolor " en faite une fois que je l'ai déclaré dans mon styleMap (première fois que j'utilise du javascript).

Il existe une méthode simple qui serait de supprimer le vector, le recréer et de réintégrer les features dedans mais ce n'est pas très " propre ".

Merci pour vos réponses smile.

Dernière modification par narun37 (Thu 16 February 2012 13:27)

Hors ligne

 

Pied de page des forums

Powered by FluxBB