几组特征:每组最多同时选择一个
Several groups of features: at most one of each group selected simultaneously
假设我在一张地图上有两组具有不同属性的要素:要素 A 和要素 B。我正在为这两种要素类型设置单一交互,因为 there can be only one.
如果我 select 一个 A 特征,然后一个 B 特征,A 特征将从 featureCollection 中删除。我怎样才能让他们同时 selected?我还希望每种类型最多有一个特征 selected.
示例用例:
Click on A1 --> add A1
Click on A2 --> remove A1 and add A2
Click on B1 --> add B1
Click elsewhere on map -->remove A2 and B1
我建议不要使用 select 交互,只需创建您自己的 featureOverlay
并根据需要添加功能。
var overlay = new ol.featureOverlay({
style: selectedStyle
});
map.on('click', function (event) {
var feature = map.forEachFeatureAtPixel(event.pixel, function (f) { return f;});
// handle the add/remove logic here
if (feature.get('group') === 'A') {
overlay.addFeature(feature);
}
// etc...
});
假设我在一张地图上有两组具有不同属性的要素:要素 A 和要素 B。我正在为这两种要素类型设置单一交互,因为 there can be only one.
如果我 select 一个 A 特征,然后一个 B 特征,A 特征将从 featureCollection 中删除。我怎样才能让他们同时 selected?我还希望每种类型最多有一个特征 selected.
示例用例:
Click on A1 --> add A1
Click on A2 --> remove A1 and add A2
Click on B1 --> add B1
Click elsewhere on map -->remove A2 and B1
我建议不要使用 select 交互,只需创建您自己的 featureOverlay
并根据需要添加功能。
var overlay = new ol.featureOverlay({
style: selectedStyle
});
map.on('click', function (event) {
var feature = map.forEachFeatureAtPixel(event.pixel, function (f) { return f;});
// handle the add/remove logic here
if (feature.get('group') === 'A') {
overlay.addFeature(feature);
}
// etc...
});