Javascript OpenLayers 4-forEachFeatureAtPixel上的LayerFilter
我有2个向量层,其中我只希望1个是可选的WFS获取功能信息层。OL4文档告诉我ForEachFeatureRatPixel函数有一个opt_layerfilter 我的处境与此相似:。 由于缺乏JavaScript知识,我似乎无法在OpenLayers 4中使用以下代码: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, {
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(', ') || ' ';
} else {
document.getElementById('info').innerHTML = ' ';
}
};
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你能解释一下吗,或者用代码更新你的答案