Openlayers'ta bir özelliğin rengi nasıl değiştirilir?


11

Bazı çokgenleri göstermek için openlayers içine bir geojson dosyası yüklüyorum. Bu dosyadan bu çokgenlerin tüm isimlerinin bir listesini de oluşturuyorum.

Şimdi listeden seçildiğinde çokgen rengini değiştirmek istiyorum (isme tıklandı).

Denediğim şey bir stil oluşturmak ( http://docs.openlayers.org/library/feature_styling.html ) ama bu stili çokgene nasıl ekleyeceğimi bulamadım. Bunu nasıl yapabilirim?

Yanıtlar:


7

Sadece bir stil sembolleştirici karma kümesi oluşturabilir ve katmana eklemeden önce seçtiğiniz çokgene atayabilirsiniz:

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

Bu sayfada ( http://docs.openlayers.org/library/feature_styling.html ) değiştirebileceğiniz stil özellikleri hakkında birçok bilgi bulabilirsiniz:

  • fillColor
  • fillOpacity
  • fırça rengi
  • strokeOpacity
  • Darbe genişliği
  • strokeLinecap
  • strokeDashstyle
  • ...

9
Peki ya zaten katmandaysa? Bu çözümü buldum: mylayer.drawFeature (mylayer.getFeatureById (id), {fillColor: "# 00ffff", strokeColor: "# 00ffff"});
jlai79

evet, haklısın, sadece yeni bir stille yeniden çizersin.
mfdev

2

Diğer cevapta davanın kullanılması.

Sadece "setStyle ()"

Bu dava benim için çalıştı.

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

Bu benim için işe yaramadı, "Uncaught TypeError: feature.setStyle bir işlev değil"
Matthew Lock

1

Whit OpenLayers 4.6.5 renk değiştirmek için bunu kullanıyorum:

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]benim Özelliğim öğelerinden biridir. TÜM özellikleri değiştirmek o zaman ben bir Döngü kullanın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.