7 votos

La funcionalidad de búsqueda en Openlayers/Geoserver

Estoy usando Openlayers,Geoserver Y Postgis.... Mi postgis tablas que están teniendo las columnas id, nombre, PUNTO/POLÍGONO LÍNEA/. Cada tabla corresponde a una capa que estoy mostrando en layerswitcher en OL. Estoy recibiendo estas capas a través de WMS de geoserver.

Quiero implementar la funcionalidad de búsqueda de modo que cada vez que un usuario da una cadena(valor de nombre de la tabla) en la caja de búsqueda, que debe acercarse a esa característica particular en el mapa.

¿Alguien puede guiarme cómo lograr esta funcionalidad??? Cualquier ayuda es muy apreciada

La idea que yo tengo es:

Paso 1: el Usuario tiene que comprobar de una sola capa(la capa en la que se desea buscar) en layerswitcher antes de iniciar la búsqueda . Pero, ¿cómo conseguir que la capa ha sido seleccionado??

Paso 2: Después de saber de la capa seleccionada , Usando php búsqueda de la tabla correspondiente para la cadena de búsqueda en los nombres de columna , si está presente, obtener los valores de latitud y longitud. Pero, ¿cómo obtener estos valores y lo que si son polígonos/líneas???

Paso 3: cómo enviar estos latitud longitud valores de JS para que yo pueda ampliar ese punto???

He completado 2 1/2 pasos. Estoy usando st_box2d y llegar a los límites de la característica como "CUADRO(minx miny,maxx, maxy)"...... donde los límites contienen CUADRO(minx miny,maxx, maxy)

el código siguiente es la función de ajax para obtener los límites de la db. Ahora, cómo usar los límites de la variable para acercar a esa característica.

 <?-- code for displaying map -->
 function searchfunction(form)
        {   
            httpObject = getHTTPObject();
            var searchvalue=form.searchvalue.value;
            if (httpObject != null) 
            {
                httpObject.open("GET","searchfeature.php?selectedlayer="+selLayer+"&searchvalue="+searchvalue,true);
                httpObject.send(null); 
                httpObject.onreadystatechange = function()
                {
                    if(httpObject.readyState == 4)
                    {
                        bounds=httpObject.responseText;
                    }
                }
            }
        }

5voto

Adam Puntos 343

Usted puede pasar los términos de la consulta en la URL de una Vista SQL en GeoServer 2.1 y superiores. Crear la vista con un ilike cláusula y usted debe obtener la funcionalidad básica. Han OpenLayers recuperar la vista con el nombre provisto como un parámetro. A continuación, dígale a OpenLayers zoom a la medida del resultado.

Si usted no tiene GeoServer 2.1:

  1. Obtener el nombre de la función Javascript/OpenLayers,
  2. pase el nombre de forma asíncrona a un script php en el servidor,
  3. el script php se consulta la base de datos directamente por el st_envelope o st_box2d de la función con ese nombre (select st_envelope(the_geom) from table where name ilike passed_parameter),
  4. el script de php que devuelve la extensión/cuadro delimitador de la característica que se utiliza en Javascript/OpenLayers para hacer zoom en el mapa.

Tendrás que analizar el st_envelope resultado en algo que OpenLayers entiende. Usted también puede añadir un poco de búfer para el alcance del zoom. Usted puede agregar manualmente o utilizar st_expand en lugar de st_envelope.

5voto

Adam Ernst Puntos 6939

Está usted buscando algo como http://ian01.geog.psu.edu/geoserver/www/search/gazetteer.html si es así, entonces usted puede seguir las instrucciones en http://ian01.geog.psu.edu/geoserver_docs/apps/gaz/index.html para crear su propia versión.

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