我在OpenLayers 4(4.4.1)中有一个单一的矢量图层。该图层具有多个带有
下面的图片显示了当要素ID 10048被标记为已选择时的情况。
如果我在最南端的某个特征上点击,它会正确地绘制在顶部作为所选。
为了跟踪需要视觉选择的功能,有一个变量:
我使用以下的selectInteraction代码:
LineString
几何类型的要素。其中一些要素重叠。
如果我点击一个特征重叠的点,我只想绘制一个被选中的要素。其他要素应仍可供以后选择(通过单独的UI选择列表中的要素ID)。
如果我点击另一个特征ID(在单独的UI选择列表中),该要素应被绘制为已选择,先前选择的要素不应被绘制为已选择,但仍然在选择列表中可用。
这个功能可以实现,但似乎只有第一个(默认)选择的要素能够被正确地绘制在最上层。下面的图片显示了当要素ID 10049被标记为已选择时的情况。
![The first element in the selection is drawn correctly](https://istack.dev59.com/fs5ky.webp)
![The second element in the selection is drawn below the first](https://istack.dev59.com/BxGlq.webp)
var multiselectPrimaryId = 0;
我使用以下的selectInteraction代码:
selectInteraction.on('select', function (e) {
e.deselected.forEach(function (feature) {
feature.setStyle(null);
});
if (e.selected.length <= 1) {
$("#multipleHitWindow").hide();
multiselectPrimaryId = 0;
if (e.selected.length == 0) {
return;
}
}
var features = e.selected;
if (multiselectPrimaryId == 0) {
multiselectPrimaryId = features[0].getId();
}
if (features.length > 1) {
var text = "Multiple hits: ";
features.forEach(function (elem, index, array) {
text += "<a href='javascript:changeSelectedFeature("
+ elem.getId() + ")'>" + elem.getId() + "</a> ";
if (elem.getId() == multiselectPrimaryId) {
elem.setStyle(selectedStyleFunction);
}
});
$('#multipleHit').html(text);
$("#multipleHitWindow").show();
}
else {
features[0].setStyle(selectedStyleFunction);
}
});
我从一个动态创建的链接列表中调用此函数:
function changeSelectedFeature(id) {
multiselectPrimaryId = id;
var featuresArray = selectInteraction.getFeatures().getArray().slice(0);
var event = new ol.interaction.Select.Event()
event.deselected = featuresArray;
event.selected = featuresArray;
event.type = 'select';
event.target = selectInteraction;
event.mapBrowserEvent = map.mapBrowserEventHandler_;
selectInteraction.dispatchEvent(event);
}
如何使设置了selectedStyle的选项显示在顶部?我尝试给selectedStyle添加zIndex,但似乎没有任何效果。
这是一个JsFiddle链接:https://jsfiddle.net/5j6c6mgo/7/。还有一些其他小问题与选择相关,但希望您能看到我上面描述的行为。
var features = selectInteraction.getFeatures()
获取要素集合,清除features
集合,然后将新选择的要素添加到features
中来更新交互的选定要素集合。 - user8651755