[OpenLayers-Users] need a little help with this ( user input & wfsprotocol.read )

Diego M. oo_O2_oo at hotmail.com
Tue Feb 14 06:48:52 EST 2012


*
Hello all

this was my q:*

Diego M. wrote
> 
> I'm looking for the best way to apply a search function on my map. 
> am working on Vector Layer + Geoserver + PostgreSQL. 
> 
> I want to implement search functionality so that whenever a user gives a
> name or id of the feature in search box, he should be zoomed to that
> particular feature on the map.
> 
> 
*
I am thankful to Mr.Phil Scadden. he has helping me with it.
he suggest me to do this :*


Phil Scadden wrote
> 
> If layer is on the server, then do filter with WFS to fetch features. 
> Add them to a "selected" vector layer on the map and then zoomtoExtent 
> for the selected vector layer. This works for WFS spatial searches too - 
> (search within polygon, DWithin etc). 
> 

*here is my previous post:*
http://osgeo-org.1560.n6.nabble.com/How-to-apply-a-Search-Function-td4364140.html
*
So, I was following the steps but since I have no that much experience in
this field,  I'm stuck :/
would anybody please review my code and let me know what's wrong ?
Thank you so much in advance.*

*first, I need to know how wfsprotocol.read should be called in response to
the input submit. 
my form in body part is :*
<form name="form" id="form">
<input type="submit" value="submet" id="searchText" />
<input type="text"  name="Search" id="searchText" value="Enter... " />
 </form>
 
*
it seems like the code cannot recognize the input text.
all the features are displaying again !
it had to be the one which user input*


var filter = new OpenLayers.Filter.Logical({
    type: OpenLayers.Filter.Logical.AND,
    filters: [
	 new OpenLayers.Filter.Comparison({
            type: OpenLayers.Filter.Comparison.LIKE,
            property: "name",
            value: document.getElementById('searchText').value
        }),
		new OpenLayers.Filter.Comparison({
            type: OpenLayers.Filter.Comparison.LIKE,
            property: "id",
            value: document.getElementById('searchText').value
        })
		 ]
});
	

			 
var strategy = new OpenLayers.Strategy.BBOX({ 
 		            ratio: 1 // makes for easier comparison to map bounds 
 		        });
var wfsProtocol = new OpenLayers.Protocol.WFS.v1_1_0({ 
                   url: "IP/geoserver/wfs", 
                    featureType: "Initial_view", 	
			featureNS: "http://mapmap.org", 
			srsName: "EPSG:3857", 
                   version: "1.1.0", 
                   extractAttributes: true, 
                   isBaseLayer: false, 
                   visibility: true 
               });
			   
var vessels = new OpenLayers.Layer.Vector("The Vessels", { 

styleMap: styleMap,
maxExtent: new OpenLayers.Bounds(-180, -90,
180,90)transform(geographic,mercator), 
sphericalMercator: true,
strategies: [strategy],				   
protocol: wfsProtocol
           });
	 		  
map.addLayers([googleMap , vessels]); 


*wfsProtocol.read ({ 

             filter:filter, 
             callback: processTheQuery, 
             scope: strategy
         });*
		
	 
function processTheQuery(request) {

// the first bit sets the value of sExt to be the a boundingbox on the
features returned. 
// Depending on application logic, this could happen in other places in the
code. 
     if (request.data && request.data.bbox) { 
           var b = request.data.bbox; 
           sExt = new OpenLayers.Bounds(b[0],b[1],b[2],b[3]); 
     }else { 
           var fts = request.features; 
           if (fts.length>0) { 
               sExt = fts[0].geometry.getBounds().clone(); 
               for(var i=1;i<fts.length;i++) { 
                  sExt.extend(fts[i].geometry.getBounds()); 
               } 
           } 
     } 
     vessels.destroyFeatures(); // get rid of values from previous call 
	 
   // any other process of the returned features goes here eg display
attributes in a popup 
     vessels.addFeatures(request.features); 
   map.zoomToExtent(sExt); 
} 

--
View this message in context: http://osgeo-org.1560.n6.nabble.com/need-a-little-help-with-this-user-input-wfsprotocol-read-tp4468479p4468479.html
Sent from the OpenLayers Users mailing list archive at Nabble.com.


More information about the Users mailing list