Comment changer la couleur d'une fonctionnalité dans les couches ouvertes?


11

Je charge un fichier geojson dans des couches ouvertes pour afficher des polygones. À partir de ce fichier, je crée également une liste de tous les noms de ces polygones.

Maintenant, je veux changer la couleur d'un polygone lorsqu'il est sélectionné dans la liste (cliqué sur le nom).

Ce que j'ai essayé, c'est de créer un style ( http://docs.openlayers.org/library/feature_styling.html ) mais je n'ai pas trouvé comment ajouter ce style au polygone. Comment puis je faire ça?

Réponses:


7

Vous pouvez simplement créer un jeu de hachage de symboliseur de style et l'affecter au polygone sélectionné avant de l'ajouter à la couche:

var selected_polygon_style = {
    strokeWidth: 5,
    strokeColor: '#ff0000'
    // add more styling key/value pairs as your need
};

selectedFeature.style = selected_polygon_style;
layer.addFeatures([selectedFeature]);

Sur cette page ( http://docs.openlayers.org/library/feature_styling.html ) vous pouvez trouver beaucoup d'informations sur les propriétés de style que vous pouvez modifier:

  • la couleur de remplissage
  • fillOpacity
  • strokeColor
  • strokeOpacity
  • largeur du trait
  • accident vasculaire cérébral
  • strokeDashstyle
  • ...

9
Et si c'est déjà sur le calque? J'ai trouvé cette solution: mylayer.drawFeature (mylayer.getFeatureById (id), {fillColor: "# 00ffff", strokeColor: "# 00ffff"});
jlai79

oui, vous avez raison, vous venez de le redessiner avec un nouveau style.
mfdev

2

Utiliser le cas dans l'autre réponse.

Changer simplement l'utilisation de "setStyle ()"

Cette affaire a fonctionné pour moi.

var selected_polygon_style = {
    strokeWidth: 5,
    strokeColor: '#ff0000'
    // add more styling key/value pairs as your need
};

selectedFeature.setStyle(selected_polygon_style);
layer.addFeatures([selectedFeature]);

Cela n'a pas fonctionné pour moi, j'ai "UnCaught TypeError: feature.setStyle n'est pas une fonction"
Matthew Lock

1

Whit OpenLayers 4.6.5 pour changer la couleur, j'utilise ceci:

myLayer.getSource().getFeatures()[1].setStyle(new ol.style.Style({
      image: new ol.style.Icon(/** @type {module:ol/style/Icon~Options} */({ // /** @type {olx.style.IconOptions} */
        color: '#00ffff', //  #FF0000
        crossOrigin: 'anonymous',
        src: '/img/dot.png'
      }))
    }));

getFeatures()[1]est l'un des éléments de ma fonctionnalité. Si je voulais changer TOUTES les fonctionnalités, j'utiliserais une boucle.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.