Asumiendo que estás usando OpenLayers.Protocol.WFS
Entonces tienes algo como esto y puedes proporcionar un callback cuando llamas a la operación de lectura en el protocolo:
La devolución de la llamada tiene un OpenLayers.Protocol.Response
objeto. Este objeto tiene un error
que le avisará de cualquier error.
var protocol = new OpenLayers.Protocol.WFS({
version: "1.1.0",
url: xxx
featurePrefix: xxx
featureType: xxx
featureNS: xxx
geometryName: xxx
// defaultFilter: searchFilter,
srsName: xxx
});
var response = protocol.read({
maxFeatures: 100,
callback: _CallBack
});
function _CallBack (resp) {
console.log(resp);
console.log(resp.error);
});
Actualización
El problema de suministrar el protocolo en el constructor de la capa es que no tienes la oportunidad de llamar a .read()
y la oportunidad de proporcionar su propia devolución de llamada para controlar la respuesta porque la capa lo hace por usted.
Así que si quieres controlar los resultados vas a tener que crear la capa y el protocolo por separado para poder llamar al .read()
cada vez que hagas clic en el botón "buscar", por ejemplo. Luego, cuando obtengas los resultados, añadirás esas características a la capa newEventLayer.addFeatures(resp.features);
var newEventLayer = new OpenLayers.Layer.Vector('test');
map.addLayer(newEventLayer);
var protocol = new OpenLayers.Protocol.WFS({
version: "1.1.0",
url: xxx,
featurePrefix: xxx,
featureType: xxx,
featureNS: xxx,
geometryName: xxx,
defaultFilter: new OpenLayers.Filter.Logical({
type: OpenLayers.Filter.Logical.AND,
filters: getMyFilter()
}),
srsName: xxx
});
var response = protocol.read({
maxFeatures: 100,
callback: _CallBack
});
function _CallBack (resp) {
newEventLayer.addFeatures(resp.features);
});
Actualización 2
Pruebe esto si _callBack
no se llama:
var _CallBack = function (resp) {
newEventLayer.addFeatures(resp.features);
});
var response = protocol.read({
maxFeatures: 100,
callback: _CallBack
});
Estrategia de filtrado
Tienes razón, he eliminado la estrategia del constructor de la capa. Usted va a tener que especificar su filtrar por separado o en el constructor del protocolo como lo tengo arriba. Pero vas a tener que construir un filtro de búsqueda de todos modos si quieres buscar tu servicio WFS por atributos, fecha/hora, etc. ¿O sólo quieres depender de la estrategia BBox (dame TODO en la BBOX)? Si es así, entonces sólo tienes que configurar un filtro para eso y llamar al protocol.read()
en el evento de cambio de extensión del mapa. Después de todo, eso es todo lo que hace la estrategia. Pero esa es una pregunta separada con la que yo, u otros pueden ayudarte.