¿Existe alguna manera de seleccionar varios polígonos y/o puntos de un servicio WFS o WMS y luego obtener la información de la característica para cada elemento seleccionado?
Hay numerosos ejemplos en el sitio web de OpenLayers pero ninguno muestra cómo hacer una selección múltiple Y obtener los atributos de los elementos seleccionados.
Por ejemplo, puedo obtener la información de la característica para un elemento seleccionado único utilizando la opción GetFeatureInfo para un servicio WMS, pero esto no me permite seleccionar varios elementos. ¡Absolutamente necesito tener la capacidad de seleccionar varios elementos!
También puedo seleccionar varios elementos dibujando un cuadro, un polígono a mano alzada o seleccionando múltiples características individualmente utilizando varios métodos diferentes, pero ninguno de esos métodos tiene la capacidad de obtener la información de la característica.
Mi objetivo es poder seleccionar múltiples características y luego extraer mi identificador único (número de punto o número de polígono) de cada información de la característica para consultar datos de una base de datos de SQL Server. No necesito hacer nada sofisticado con los datos espaciales, todo lo que quiero hacer es seleccionar varios elementos y tomar el id único de cada uno de ellos para poder consultar mi base de datos en busca de información relacionada con los elementos seleccionados.
Estoy utilizando OpenLayers para construir la interfaz de mi mapa y GeoServer para servir mis servicios WMS/WFS. Puedo conectarme a mis shapefiles de puntos y polígonos utilizando WMS o WFS, pero no encuentro una manera de seleccionar varios elementos y luego obtener la información de atributos de los elementos.
Aquí está el código que terminé utilizando:
// ESTA FUNCIÓN ACTUALIZA EL CUADRO DE TEXTO CON LA LISTA DE ATRIBUTOS SELECCIONADOS CUANDO EL USUARIO SELECCIONA UN NUEVO POLÍGONO O MÚLTIPLES POLÍGONOS
var actualizar = function(característica) {
nombres.push(característica.attributes['nombreDelAtributoDeTusCapasAqui']);
mostrarEstado(nombres.join(", "));
};
// ESTA FUNCIÓN ACTUALIZA EL CUADRO DE TEXTO CON LA LISTA DE ATRIBUTOS SELECCIONADOS CUANDO EL USUARIO DESELECCIONA UN POLÍGONO
var limpiar = function(característica) {
nombre = característica.attributes['nombreDelAtributoDeTusCapasAqui'];
for(var y in nombres){
if (nombre === nombres[y]){
nombres.splice(y,1);
}
}
mostrarEstado(nombres.join(", "));
};
// INSTANCIAR UN NUEVO CONTROL QUE PERMITE AL USUARIO SELECCIONAR DE LOS RECURSOS DISPONIBLES DE WFS
// var control = new OpenLayers.Control.SelectFeature(
nombreDeTuCapaAqui,
{
clickout: true,
toggle: true,
multiple: true,
hover: false, // si hover se establece en true elimina la funcionalidad de selección.
toggleKey: "ctrlKey", // la tecla Ctrl elimina de la selección
multipleKey: "shiftKey", // la tecla Shift agrega a la selección
onSelect: actualizar, // AL SELECCIONAR LLAMA A LA FUNCIÓN ACTUALIZAR
onUnselect: limpiar, // AL DESELECCIONAR LLAMA A LA FUNCIÓN LIMPIAR
//
// }
// );
// AGREGAR EL CONTROL A LA COLECCIÓN DE CONTROLES DEL MAPA
// map.addControl(control);
// ACTIVAR EL NUEVO CONTROL
//control.activate();