2016-06-11 57 views
1

在OpenLayers 3中,如果我使用setStyle(...insert style...)設置了功能樣式,則不會再出現ol.interaction.select的默認交互風格。如果我嘗試定義樣式或樣式函數,如下所示:OpenLayers 3交互風格與ol.feature.setStyle衝突

var select = new ol.interaction.Select({ 
    style: ...insert style here... 
}); 
map.addInteraction(select); 

它不起作用。如果我刪除我的自定義樣式集ol.feature.setStyle(...insert style...),它工作正常。這有意義嗎?我不知道設置功能風格setStyle()以某種方式覆蓋默認的交互風格...

任何線索?

+0

我認爲'ol.interaction.selection#style'應該覆蓋'ol.Feature#setStyle',即使它是一個臨時覆蓋功能。也許你在GitHub上創建了一張票。 –

回答

1

而不是在實例化ol.interaction.select時使用樣式或樣式函數,我只是使用select事件來處理選定和取消選擇的樣式。

var select = ol.interaction.select(); 
select.on('select', function (e) { 
    if(e.selected.length > 0) { 
     e.selected[0].setStyle(...insert selected style here...); 
    } 

    if(e.deselected.length > 0) { 
     e.deselected[0].setStyle(..insert original style here...); 
    } 
}); 

出於某種原因,當最初定義與setStyle特徵的風格,你不能創建互動時所使用的構造風格或樣式的功能。這上面的工作正常,但它是一個額外的代碼。