7 votos

¿Cómo puedo buscar en mis capas con openlayers?

tengo mi mapa en funcionamiento más de geoserver y openlayers. pero quiero añadir un cuadro de búsqueda para encontrar los lugares en el mismo. Bueno, no específicamente lugares, pero las direcciones.

El mapa lee las capas directamente sobre geoserver ( sin postgis), pero estoy un poco perdido con la búsqueda de la cosa.

¿Cómo puedo implementar esta característica y qué herramientas son apropiadas?

Ahora voy a explicar cómo el proceso de búsqueda debe ser:

1.- He capas con calles, cuadras y los números de la casa.

2.- el usuario realizará la búsqueda por nombre de la calle o de la casa de la dirección (número de casa y nombre de calle) y el mapa mostrará una lista de concordancias, si el usuario selecciona uno de los resultados en la lista será ampliada en el destino. Muy similar a la de una Arcgis herramientas de búsqueda.

Cualquier ayuda será apreciada.

8voto

Celso Puntos 66

Usted puede preatty la facilidad de ejecutar una búsqueda mediante la combinación de WFS anc CQL como en el siguiente ejemplo:

layerQueryRun: function() {
    var wfs = new OpenLayers.Protocol.HTTP({
        url:WMSCONFIG.wfs_server_path+"?service=wfs&version=1.0&request=GetFeature&typename=" + youLayerTypeName,
        format: new OpenLayers.Format.GML.v3({})
    });

    // start spinner
    Maps.set("isLoading", YES);

    wfs.read({
        params:{
            "CQL_FILTER":"STREET = 'Godric Hollow' AND NUMBER=1"
        },
        callback: this.didFetchWfsFeatures
    });
},

didFetchWfsFeatures : function(response, options) {
    try {
        var gml = new OpenLayers.Format.GML({extractAttributes: true});
        response.features = gml.read(response.priv.responseXML);
        doSomethingWithFeatures(response);
    } catch(e) {
        alert("Error!");
    }
    // stop spinner
    Maps.set("isLoading", NO);
},

El CQL de referencia está disponible aquí.

Una vez se han cargado las características de los resultados (en doSomethingWithFeatures) se les puede hacer a HTML y enlazar un detector de eventos para cada uno, de modo que cuando una característica se hace clic en la aplicación que se notifique y se puede hacer zoom en el mapa a la característica de los límites.

Las características regresó de la cumbre llamada de tener ambos atributos y la geometría. Por favor, tenga en cuenta que la geometría de la capa original de la proyección que podrían ser diferentes de lo que usted está utilizando en OpenLayers (supongo que 900913?). En ese caso, usted puede:

  • uso proj4js para manejar la conversión para usted en el navegador

  • reproyectar los datos originales

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X