オープンレイヤーのフィーチャーの色を変更するにはどうすればよいですか?


11

geojsonファイルをopenlayersに読み込んで、いくつかのポリゴンを表示しています。このファイルから、これらのポリゴンのすべての名前のリストも作成します。

ここで、リストから選択したときにポリゴンの色を変更したい(名前をクリックした)。

私が試したのは、スタイル(http://docs.openlayers.org/library/feature_styling.html)を作成することですが、このスタイルをポリゴンに追加する方法を見つけることができませんでした。どうやってやるの?

回答:


7

レイヤーに追加する前に、スタイルシンボルハッシュセットを作成して選択したポリゴンに割り当てるだけです。

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

このページ(http://docs.openlayers.org/library/feature_styling.html)で、変更可能なスタイルプロパティに関する多くの情報を見つけることができます。

  • 塗りつぶしの色
  • fillOpacity
  • strokeColor
  • strokeOpacity
  • strokeWidth
  • strokeLinecap
  • strokeDashstyle
  • ...

9
しかし、すでにレイヤー上にある場合はどうなりますか?私はこの解決策を見つけました:mylayer.drawFeature(mylayer.getFeatureById(id)、{fillColor: "#00ffff"、strokeColor: "#00ffff"});
jlai79

はい、あなたは正しいです、あなたはちょうど新しいスタイルでそれを再描画します。
mfdev

2

他の回答でケースを使用します。

「setStyle()」の使用を変更するだけ

このケースは私のために働いた。

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

これは私にとってはうまくいきませんでした。「不明なTypeError:feature.setStyleは関数ではありません」
マシューロック

1

Whit OpenLayers 4.6.5で色を変更するには、これを使用しています:

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]私の機能の要素の一つです。すべての機能を変更する場合、ループを使用します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.