2016-08-10 10 views
2

私はベクトルスタイルを持っていて、大きい方はimage: radiusです。選択したインタラクションのスタイルをベクタースタイルのimage: radiusと一致させたいと思います。デフォルトのOpenLayers編集スタイルを拡張しますか?

this page in the documentationに基づいて編集スタイル全体を手動で再定義せずにどうすればいいですか?

デフォルトのスタイルを使用して、1つのパーツだけをオーバーライドすることはできますか?画像の半径と同じですか?または、少なくともイメージ全体のみを再定義しますか?

+0

指定された回答があなたが探しているものかどうかを教えてください。 –

答えて

0

Fiddleol.layer.Vectorol.interaction.Selectと選択の間


シェアstyle function、あなたの関数内で読み取られる変数に変更します。この場合に使用することができ

var radius = 10; 
var styleFunction = function() { 
    return [ 
    new ol.style.Style({ 
     image: new ol.style.Circle({ 
     radius: radius, 
     fill: new ol.style.Fill({ 
      color: 'green' 
     }) 
     }) 
    }) 
    ]; 
}; 

var select_interaction = new ol.interaction.Select({ 
    style: styleFunction 
}); 

select_interaction.on('select', function(evt) { 
    radius = evt.selected.length > 0 ? 20 : 10; 
}); 

I'm proposingol.style.Circle#setRadiusを。

+0

この回答をありがとう。私は反対方向を探しています。 選択されていないスタイル:オレンジ色の線、オレンジ色のポリゴン、オレンジ色の円が10の場合 選択されたスタイル:青色の線、青い白のポリゴン、青色の白い円の半径が10の場合(デフォルトの選択モードでは6または8ではない) 。 青色はデフォルトの選択スタイルを示します。 – zsero

+0

@zseroあなたが設定するスタイルは重要です。私はちょうど正しい方法であなたを配置しました。それはスタイル機能を共有しています。 –

+0

OKですが、どのようにデフォルトの青白いスタイルにアクセスできますか?これはこのページのものです:http://openlayers.org/en/latest/apidoc/ol.style.html – zsero

関連する問題