Javascript 无法在openlayer3中两次选择同一直线层

Javascript 无法在openlayer3中两次选择同一直线层,javascript,openlayers-3,Javascript,Openlayers 3,我已经为它绘制了一个线字符串特性和设置样式,并为它显示的线字符串添加了id。当涉及到选择时,它现在按预期工作 第一步:当我第一次使用地图交互选择时,我能够选择并获取数据,并将样式应用于线字符串 第二步:我再次选择同一行字符串,该行字符串不允许选择,如果我选择了一些它可以选择的行字符串,则根本不响应。选择相同的行字符串不允许选择 下面是我的地图交互代码 var selectionStyle=styleForSelection(); var ifCondition="";

我已经为它绘制了一个线字符串特性和设置样式,并为它显示的线字符串添加了id。当涉及到选择时,它现在按预期工作

第一步:当我第一次使用地图交互选择时,我能够选择并获取数据,并将样式应用于线字符串

第二步:我再次选择同一行字符串,该行字符串不允许选择,如果我选择了一些它可以选择的行字符串,则根本不响应。选择相同的行字符串不允许选择

下面是我的地图交互代码

var selectionStyle=styleForSelection();
        var ifCondition="";         
        $.each(ispGeomResponse,function(key,value){
            ifCondition+="(layer.get('name')==\""+value.name+"\") || ";         
        });
        if(ifCondition)
            ifCondition=ifCondition.substring(0,ifCondition.lastIndexOf(" || "));
        selectInteraction= new ol.interaction.Select({
            hitTolerance:10,
            layers: function (layer) {
                if(eval(ifCondition)){
                    return layer;
                }
            },

        });

  map.addInteraction(selectInteraction);

selectInteraction.on('select', function(event){
            var selectFeature=event.selected[0];
            if(selectFeature!=undefined){
                   //some logic i am processing
            }   
        });

我的预期输出是,我需要选择相同的行字符串两次。如果已经选择,则无需应用样式。如果已经选择,我将编写一些自定义逻辑。

您无法选择已经选择的功能。如果希望在每次单击时更改样式,可以使用地图的单击事件

var样式=[
新ol风格({
填充:新的ol.style.fill({
颜色:“rgba(255,255,255,0.5)”
}),
笔划:新的ol风格笔划({
颜色:“#319FD3”,
宽度:1
})
}),
新ol风格({
填充:新的ol.style.fill({
颜色:“rgba(255,0,0,0.5)”
}),
笔划:新的ol风格笔划({
颜色:“#319FD3”,
宽度:1
})
}),
新ol风格({
填充:新的ol.style.fill({
颜色:“rgba(0,255,0,0.5)”
}),
笔划:新的ol风格笔划({
颜色:“#319FD3”,
宽度:1
})
}),
新ol风格({
填充:新的ol.style.fill({
颜色:“rgba(0,0,255,0.5)”
}),
笔划:新的ol风格笔划({
颜色:“#319FD3”,
宽度:1
})
})
];
var vectorLayer=新ol.layer.Vector({
来源:新ol.source.Vector({
网址:'https://openlayers.org/en/v4.6.5/examples/data/geojson/countries.geojson',
格式:new ol.format.GeoJSON()
}),
样式:样式[0]
});
var map=新ol.map({
图层:[矢量图层],
目标:“地图”,
视图:新ol.view({
中间:[0,0],
缩放:1
})
});
var updateStyle=函数(像素){
var feature=map.forEachFeatureAtPixel(像素,函数(特征){
返回特性;
});
如果(功能){
var-styleIndex=1;
if(feature.getStyle()==样式[1]){
styleIndex=2;
}else if(feature.getStyle()==样式[2]){
styleIndex=3;
}
feature.setStyle(样式[styleIndex])
}
}
映射打开('click',函数(evt){
更新样式(evt.pixel);
});
html,body,.map{
保证金:0;
填充:0;
宽度:100%;
身高:100%;
}


我上面问题中的示例代码一直执行到返回层;之后的互动是不允许的。是否有其他方法可以再次选择相同的行字符串。您找到解决问题的方法了吗?