Hi, the one advice I can give you is: ask on the list or on irc before you struggle for two days. This time, the answer would have been simple:
either do as you discovered, or set the vendorParams option of the WMS GetFeatureInfo control (http://dev.openlayers.org/releases/OpenLayers-2.8/doc/devdocs/files/OpenLayers/Control/WMSGetFeatureInfo-js.html#OpenLayers.Control.WMSGetFeatureInfo.vendorParams) Regards, Andreas. P Kishor wrote: > On Sat, Sep 19, 2009 at 7:47 PM, P Kishor <punk.k...@gmail.com> wrote: > >> I have a bizarre problem that I can't debug. My code is >> >> var info = new OpenLayers.Control.WMSGetFeatureInfo({ >> url: "http://localhost/cgi-bin/mapserv?map=/path/to/my.map&", >> maxFeatures: 12, >> title: 'Identify features by clicking', >> queryVisible: true, >> layers: [wms_cds_stands], >> infoFormat: "text/plain", >> eventListeners: { >> getfeatureinfo: function(event) { >> map.addPopup(new OpenLayers.Popup.FramedCloud( ... ), >> true); >> } >> } >> }); >> map.addControl(info); >> info.activate(); >> >> If I change the url to "http://localhost/cgi-bin/mapserv" it fires >> correctly on click, and a framed cloud pops up with the error message >> that CGI variable map is not declared. However, if I add the map >> variable to the query string as shown above, then the event doesn't >> fire on click at all. There is no proxy nor remote host involved. >> Everything is on localhost. Doesn't matter if the url starts with >> "http://localhost/cgi-bin//mapserv" or just "/cgi-bin//mapserv", it is >> the presence of the url query string that seems to cause the click >> event to not fire at all. >> >> What could I do to correct this? >> >> > > So, after two days of struggling with this, I figured it out. Turns > out, my layer was defined like so... > > var wms_cds_stands = new OpenLayers.Layer.WMS( > "CDS Stands", > "http://localhost/cgi-bin/mapserv", > { map: "/path/to/my.map", layers : "cds_stands", map_imagetype: > "agga", transparent: true }, > { reproject: true, singleTile: true } > ); > > and my WMSGetFeatureInfo control had url set like so > > url: "http://localhost/cgi-bin/mapserv?map=/Users/punkish/Data/cnnf/cnnf.map&" > > Well, the urlMatches() function in WMSGetFeatureInfo class was causing > my control to fail. The url for my layer definition did not have the > map parameter attached as a query string. Instead, it was provided as > a separate parameter in the params hash supplied to the object > constructor. However, the control constructor does not provide a > similar facility to supply the map value separately. > > I changed my mapserver url in the layer constructor to > > "http://localhost/cgi-bin/mapserv?map=/Users/punkish/Data/cnnf/cnnf.map&" > > and now since urlMatches() returns true for the two urls, the click > event fires and I get a popup bubble. > > Once again, I ask, was there a more efficient and obvious way for me > to discover this? > > OpenLayers is an absolutely fantastic piece of work which is severely > hampered by its documentation, UNLESS, there is a strategy to > discovering how it works that I am completely missing. I am determined > to using OL and making it a showcase in my work, so I can also > evangelize it to others as a replacement for Google or Yahoo maps. > But, right now, either its documentation, or the way I am going about > it, is tripping me up severely. Any advice from you more seasoned > folks is very welcome. > > > > > -- Andreas Hocevar OpenGeo - http://opengeo.org/ Expert service straight from the developers. _______________________________________________ Users mailing list Users@openlayers.org http://openlayers.org/mailman/listinfo/users