マップをクリックして異なるオーバーレイレイヤーを取得したいので、ユーザーがポップアップでフィーチャー情報を取得したいレイヤーを選択できるようにしたい。 map.forEachFeatureAtPixelを使用していますが、オーバーレイされたレイヤーを1つだけ取得します。OL3:座標でオーバーレイされたレイヤーを取得する
var prue=[];
layers=[]
var displayFeatureInfo = function(pixel) {
var feature = map.forEachFeatureAtPixel(pixel, function(feature, layer) {
l=layer.get('name');
console.log("CAPA:",l)
layers.push(l);
console.log(layers);
if (layer == rustic_wfs){
var capa= "rustica";
prue[0]=capa;
return feature;};
if (layer == zonas_wfs){
var capa="zonas";
prue[0]=capa;
return feature;}
});
map.on('click', function(evt) {
displayFeatureInfo(evt.pixel);
});
ソースまたはレイヤーを保存してループしてみましたが、問題はまだ残っています。 2つのオーバーレイされたレイヤーをクリックすると、そのレイヤーの1つだけが認識されます。この機能がこの目的のためのプロッパーではないかもしれませんか? – Crisemar
ループに戻り、ループを壊し、他のレイヤーを続行しない、つまりループが1回だけ繰り返される場合は、「リターン機能」を参照してください。この機能をアレイに保存することをお勧めします。 "var layerinfo = {features:features、layers:layer}"と "layers.push(layerinfo)"のように、ループ仕上げ後にすべてのレイヤーとすべてのフィーチャーを取得できます – RaZoDiuM