[GIS] How to do GetFeatureInfo in OpenLayers2

fields-attributesgeoservergetfeatureinfoopenlayers-2wms

I am new to OpenLayers and I want to add OpenLayers.Control.WMSGetFeatureInfo to get the feature info to website, but I can't figure out right method.

I also see the source code of GeoServer OpenLayers page and still I can't find the syntax of OpenLayers.Control.WMSGetFeatureInfo code?

I use GeoServer, Apache-Tomcat-6.0.35 and OpenLayers 2.10. Should I use proxy to call OpenLayers.Control.WMSGetFeatureInfo?

This is my GeoServer WMS URL:

http://localhost:8080/geoserver/sac/wms?
service=WMS&
version=1.1.0&
request=GetMap&
layers=sac:contour&
styles=&
bbox=187754.5,204980.703125,192031.40625,210022.890625&
width=434&height=512&s
rs=EPSG:5235&
format=application/openlayers

Please give me sample code which calls OpenLayers.Control.WMSGetFeatureInfo?

Best Answer

you can check this example on openlayers.

    OpenLayers.ProxyHost = "proxy.cgi?url=";

    var map;

    function load() {
        map = new OpenLayers.Map('map', {
            maxExtent: new OpenLayers.Bounds(143.834,-43.648,148.479,-39.573)
        });

        var political = new OpenLayers.Layer.WMS("State Boundaries",
            "http://demo.opengeo.org/geoserver/wms", 
            {'layers': 'topp:tasmania_state_boundaries', 
transparent: true, format: 'image/gif'},
            {isBaseLayer: true}
        );
        };

        map.addLayer(political); 

if it didnt help you, you can read Open Layer with GeoSever example.

EDIT:

for wms get info function you have to add this code to which i have gave before:

info = new OpenLayers.Control.WMSGetFeatureInfo({
            url: 'http://demo.opengeo.org/geoserver/wms', 
            title: 'Identify features by clicking',
            queryVisible: true,
            eventListeners: {
                getfeatureinfo: function(event) {
                    map.addPopup(new OpenLayers.Popup.FramedCloud(
                        "chicken", 
                        map.getLonLatFromPixel(event.xy),
                        null,
                        event.text,
                        null,
                        true
                    ));
                }
            }
        });
        map.addControl(info);
        info.activate();

i hope it helps you...