Obtener información de varias capas utilizando el método forEachFeatureAtPixel.
Quiero obtener información de varias capas, estoy utilizando el método forEachFeatureAtPixel, pero cuando obtengo los resultados solo obtengo el primer resultado. Cuando en la respuesta del navegador, veo que el JSON que regresa tiene más resultados. Cuando utilicé el método getFeaturesAtPixel, obtuve todos los resultados a través de un bucle FOR. Pero ahora no sé cómo obtener todos los resultados.
map.on("click", function (evt) {
var result = map.forEachFeatureAtPixel(evt.pixel, function (feature, layer) {
return { feature, layer };
});
if (result) {
var feature = result.feature;
var layer = result.layer;
if (layer === vec01) {
contINFO.innerHTML = '<b>Uno nombre:</b> ' + feature.get('one_name');
}else if (layer === vec02) {
contINFO.innerHTML = '<b>Otro nombre:</b> ' + feature.get('other_name') + '<b>Porcentaje:</b> ' + feature.get('percent');
}
}
});
davy.ai
Para obtener información de varias capas, es necesario modificar el método
forEachFeatureAtPixel
. En lugar de devolver el primer resultado, es necesario almacenar todas las características en un array y luego recorrer el array para acceder a cada una de ellas. Así es como se puede modificar el código:Este código crea un array vacío
features
y agrega cada característica y su capa correspondiente al array. Luego, comprueba si hay características en el arrayfeatures
y las recorre para acceder a cada característica. Finalmente, utiliza el operador+=
para agregar la información de la característica al elementocontINFO
en lugar de sobrescribirla.