11 votos

¿Cómo cambiar el color de una característica en openlayers?

Estoy cargando un archivo geojson en openlayers para mostrar algunos polígonos. A partir de este archivo también creo una lista con todos los nombres de estos polígonos.

Ahora quiero cambiar el color de un polígono cuando se selecciona de la lista (clic en el nombre).

Lo que he intentado es crear un estilo ( http://docs.openlayers.org/library/feature_styling.html ) pero no he encontrado la forma de añadir este estilo al polígono. ¿Cómo puedo hacerlo?

9voto

Kornelije Petak Puntos 475

Es posible que sólo para crear un conjunto de hash simbolizador estilo y asignarlo a su polígono seleccionado antes de añadirlo a la capa:

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]);

En esta página ( http://docs.openlayers.org/library/feature_styling.html ) puedes encontrar mucha información sobre las propiedades de estilo que puedes modificar:

  • fillColor
  • fillOpacity
  • strokeColor
  • strokeOpacity
  • strokeWidth
  • strokeLinecap
  • strokeDashstyle
  • ...

9 votos

Pero, ¿y si ya está en la capa? He encontrado esta solución: mylayer.drawFeature(mylayer.getFeatureById(id), {fillColor: "#00ffff", strokeColor: "#00ffff"});

0 votos

Sí, tienes razón, sólo tienes que redibujarlo con un nuevo estilo.

2voto

Elshar Puntos 116

Utilizando el caso de la otra respuesta.

Sólo cambiando el uso de la "setStyle()"

Este caso funcionó para mí.

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]);

1voto

Antonio Faienza Puntos 11

Con OpenLayers 4.6.5 para cambiar el color estoy usando esto:

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] es uno de los elementos de mi programa. Si quisiera cambiar TODAS las características, utilizaría un bucle.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X