2017-06-27 22 views
0

私は2つのベクトルレイヤーを持っていますが、そのうちの1つはWFS getフィーチャー情報レイヤーで選択できるようにしたいだけです。 OL4 docsは、forEachFeatuerAtPixel関数用のopt_layerfilterがあると伝えます。OpenLayers 4 - LayerFilter for forEachFeatureAtPixel

私はこのような状況にあります:OpenLayers 3 hasFeatureAtPixel filter for layerです。 により、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); 
}); 

私が選択できるようにしたい層が「等時」という名前です。 マップ内の任意のベクターレイヤーをクリックしようとすると「d.callが関数ではありません」というエラーが表示されます。

誰かが正しい方向に向いていますか?

答えて

0

argsを入れ替えたようです。

forEachFeatureAtPixelのためのparamsは、あなたが(ピクセル、オプション、コールバック)の助けを

+0

感謝を持っている(ピクセル、コールバック、オプション)

あり、それが今取り組んでいます。注文がとても重要であることを理解していませんでした。私はlayerFilterコードを切り取り、最後まで移動しました。 – OpenLayers4