Javascript OpenLayers 4-forEachFeatureAtPixel上的LayerFilter

Javascript OpenLayers 4-forEachFeatureAtPixel上的LayerFilter,javascript,openlayers,Javascript,Openlayers,我有2个向量层,其中我只希望1个是可选的WFS获取功能信息层。OL4文档告诉我ForEachFeatureRatPixel函数有一个opt_layerfilter 我的处境与此相似:。 由于缺乏JavaScript知识,我似乎无法在OpenLayers 4中使用以下代码: var displayFeatureInfo = function (pixel) { var features = []; map.forEachFeatureAtPixel(pixel, {

我有2个向量层,其中我只希望1个是可选的WFS获取功能信息层。OL4文档告诉我ForEachFeatureRatPixel函数有一个opt_layerfilter

我的处境与此相似:。 由于缺乏JavaScript知识,我似乎无法在OpenLayers 4中使用以下代码:

var displayFeatureInfo = function (pixel) {

    var features = [];
    map.forEachFeatureAtPixel(pixel, {
        layerFilter: function (layer) {
            return layer.get('name') === 'isochrones';
        }
    }, function (feature) {
        features.push(feature);
    });

    if (features.length > 0) {
        var info = [];
        var i, ii;
        for (i = 0, ii = features.length; i < ii; ++i) {
            info.push('<div id="infobox">' + '<p2>' + 'Isochroon ' + features[i].get('name') + ', locatie ' + features[i].get('facilityid') + '</p2>' + '<p>' + 'aantal lopend: ' + features[i].get('n_pedestrians') + ', fiets: ' + features[i].get('n_bike') + ', ebike: ' + features[i].get('n_ebike') + '<br>' + 'speedpedelec: ' + features[i].get('n_speedpedelec') + ', auto: ' + features[i].get('n_car') + '</p>' + '</div>');
        }
        document.getElementById('info').innerHTML = info.join(', ') || '&nbsp';
    } else {
        document.getElementById('info').innerHTML = '&nbsp;';
    }
};

map.on('click', function (evt) {
    displayFeatureInfo(evt.pixel);
});
var displayFeatureInfo=函数(像素){
var特征=[];
map.forEachFeatureAtPixel(像素{
图层过滤器:功能(图层){
返回层。get('name')=='isochrones';
}
},功能(特点){
功能。推送(功能);
});
如果(features.length>0){
var信息=[];
变量i、ii;
对于(i=0,ii=features.length;i'+'Speedpeedpede:'+features[i].get('n_car')+”

“+”; } document.getElementById('info').innerHTML=info.join(',')| |'; }否则{ document.getElementById('info')。innerHTML=''; } }; 映射打开('click',函数(evt){ displayFeatureInfo(evt.像素); });
我想要选择的图层名为“等时线”。 当我尝试单击地图中的任何向量层时,它会抛出一个错误“d.call不是函数”


有人能给我指一下正确的方向吗?

看起来你的args被调换了

forEachFeatureAtPixel的参数为(像素、回调、选项)


您有(像素、选项、回调)

谢谢您的帮助,它现在正在工作。没有意识到订单是如此重要。我删掉了layerFilter代码,只是把它移到了末尾。@Bob你能解释一下吗,或者用代码更新你的答案