I'm refactoring the code used to getfeatureinfo from geoserver running on port 8080 at http://www.edpp.cz/zul_mapa-povodnoveho-planu-mesta/. The old version uses OpenLayers.loadURL and successfully requests the response from the server. The code is like:
map.events.register('click', map, function (e) {
var params = {
REQUEST: "GetFeatureInfo",
EXCEPTIONS: "application/vnd.ogc.se_xml",
BBOX: map.getExtent().toBBOX(),
SERVICE: "WMS",
VERSION: "1.1.1",
X: e.xy.x,
Y: e.xy.y,
INFO_FORMAT: 'text/html',
QUERY_LAYERS: layers_on,
FEATURE_COUNT: 1,
Layers: layers_on,
Styles: '',
WIDTH: map.size.w,
HEIGHT: map.size.h,
format: format,
srs: map.layers[0].params.SRS};
if(offline)
OpenLayers.loadURL("http://localhost:8080/geoserver/wms", params, this, setHTML, setHTML);
else
OpenLayers.loadURL("http://www.edpp.cz/mapinfo/geoserver/wms", params, this, setHTML, setHTML);
OpenLayers.Event.stop(e);
});
With the new code I try something like this:
popup = new OpenLayers.Control.WMSGetFeatureInfo({
url: offline ? 'http://localhost:8080/geoserver/wms' : 'http://www.edpp.cz/mapinfo/geoserver/wms',
layers: unbaseLayers,
layerUrls: offline ? ['http://localhost:8080/geoserver/wms'] : ['http://www.edpp.cz/mapinfo/geoserver/wms'],
title: 'Identify features by clicking',
queryVisible: true,
maxFeatures: 1,
eventListeners: {
getfeatureinfo: function(event) {
if (console) {
console.log(event);
}
if (event.text.length > 1088) { // nezobrazí prázdné bubliny
map.addPopup(new OpenLayers.Popup.FramedCloud(
"popup",
map.getLonLatFromPixel(event.xy),
null,
event.text,
null,
true
));
}
},
nogetfeatureinfo: function(event) {
if (console) {
console.log(event);
}
}
}
});
If I look into Firebug network log, I see that the clicking the map doesn't send any request to the geoserver (it runs fine on localhost though). Is this just a proxy related problem? I've already read about need to set up a proxy when running geoserver on the different port than a website. But it's really puzzling me there is no request being sent. Might it be a typo? I can't see any.
What if I am not able to set up a proxy, do I have any other option?
PS: All I get as a result is object of nogetfeatureinfo type.