Openlayers webapps

From DreamsteepWiki

Jump to: navigation, search

SAMPLE DATA TO GET RUNNING WITH


SAMPLE URL

http://127.0.0.1/cgi-bin/mapserv.exe?map=/ms4w/apps/foobar/htdocs/foo.map&layer=states&mode=map


SIMPLE MAPFILE

MAP     
  IMAGETYPE        PNG24
  EXTENT -97.238976 41.619778 -82.122902 49.38562
  SIZE           400 300
  SHAPEPATH      "../data"                                                                          
  IMAGECOLOR     22 2 22
          
LAYER           
  NAME         states
  DATA         "states_ugl"        
  STATUS       ON
  TYPE         POLYGON                     
  OPACITY      50                   
  CLASS                                    
   NAME 'defualt'                          
     STYLE                                 
      COLOR      255 0 0
      OUTLINECOLOR 0 255 255     
      WIDTH 220                            
    END                                    
  END                                      
END                                        
          
END


SIMPLE OPENLAYERS HTML FILE

MAPSERVER LAYER IN OPENLAYERS
<pre>

<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>MapServer Layer</title>
    <link rel="stylesheet" href="../theme/default/style.css" type="text/css" />
    <link rel="stylesheet" href="style.css" type="text/css" />
    <script src="../lib/OpenLayers.js"></script>
    <script type="text/javascript">
        var lon = 5;
        var lat = 40;
        var zoom = 5;
        var map, layer;

        function init(){
            map = new OpenLayers.Map( 'map' );
            
            layer = new OpenLayers.Layer.MapServer( "local", "http://127.0.0.1/cgi-bin/mapserv.exe?map=/ms4w/apps/foobar/htdocs/foo.map", {layers: 'states'}, {gutter: 15});
                    
            map.addLayer(layer);

            map.setCenter(new OpenLayers.LonLat(lon, lat), zoom);
            map.addControl( new OpenLayers.Control.LayerSwitcher() );
        }
        
    </script>
  </head>
  <body onload="init()">
    <div id="title">MapServer Layer</div>
    <div id="tags"></div>
    <div id="shortdesc">Shows MapServer Layer</div>
    <div id="map" class="smallmap"></div>

  </body>
</html>


CODE TO DETECT BROWSER TYPE AND RESPOND ACCORDINGLY

<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Metroplanning Fantastic Maplication </title>
        <link rel="stylesheet" href="mystyle.css" type="text/css" />

        <script src="../../lib/OpenLayers.js"></script>

        <script type="text/javascript">
         var browserCode = OpenLayers.Util.getBrowserName();

            switch (browserCode) {
                case "opera":
                    browserName = "Opera";
                    break;
                case "msie":
                    browserName = "Internet Explorer";
                    break;
                case "safari":
                    browserName = "Safari";
                    break;
                case "firefox":
                    browserName = "FireFox";
                    break;
                case "mozilla":
                    browserName = "Mozilla";
                    break;
                default:
                    browserName = "detection error"
                    break;
            }

          //##########################################//
          if (browserName!="Internet Explorer" && browserName!="FireFox" && browserName != "Safari")
          {
           alert("Warning : Must be viewed in Chrome, Firefox ,or Internet Explorer")
          }
          //##########################################//
          if ( browserName=="FireFox")
          {
            window.open('http://127.0.0.1/open/examples/jasper_open/run_firefox.html');
            window.close('http://127.0.0.1/open/examples/jasper_open/app_start.html')
          }
            //######//
          if (browserName=="Safari" )
          {
            window.open('http://127.0.0.1/open/examples/jasper_open/run_chrome.html');
            window.close('http://127.0.0.1/open/examples/jasper_open/app_start.html')
          }
            //######//
          if (browserName=="Internet Explorer")
          {
            window.open('http://127.0.0.1/open/examples/jasper_open/run_microsoft.html');
            window.close('http://127.0.0.1/open/examples/jasper_open/app_start.html')
          }
          
          
          //##########################################//
        </script>
    </head>
    <body >
     <p>
      Detecting browser type...
     </p>
     <p>
      This page will launch the mapplication
     </p>
     <p>
      Be sure to disable popup blockers for this site.
     </p>
     
    </body>

</html>








QUERY DATA EXAMPLE FROM WMS


MAP WITH WMS QUERY


MAP
  NAME mytestmap
  IMAGETYPE        PNG24
  EXTENT -94.036389 30.888094 -93.937035 30.927913
  SIZE           400 300
  SHAPEPATH      "../data/projected"
  IMAGECOLOR     100 132 122
  #FONTSET
  
  PROJECTION
   "init=epsg:4326"
  END


  WEB
   #HEADER
   #FOOTER
   #TEMPLATE
   IMAGEPATH "/ms4w/apps/jasper/htdocs/tmp"
   IMAGEURL  "/tmp/"
  END


LAYER
  NAME         plats
  DATA         "plats_subdiv"
  STATUS       ON
  TYPE         POLYGON
  OPACITY      100
  TOLERANCE 5

   #HEADER "/ms4w/apps/jasper/htdocs/jasper_header.html"
   #FOOTER "/ms4w/apps/jasper/htdocs/jasper_footer.html"
   TEMPLATE "/ms4w/apps/jasper/htdocs/content_template.html"

    METADATA
      "wms_title" "alltest debug "
      "wms_srs" "EPSG:4326"
      "ows_include_items" "all"
      "wms_feature_info_mime_type" "text/html"
      "queryable" "true"
      
      #"wms_featureinfoformat" "text/html"
      #"searchfield" "DO"
      #"fields" "DO:DO"

    END #metadata
    
  CLASS
   NAME 'defualt'
     STYLE
      COLOR      20 200 0
      OUTLINECOLOR 255 0 0
      WIDTH 220
    END
  END
END

END



QUERY A SHAPEFILE VIA LOCAL WMS




<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>SelectFeature Control on multiple vector layers</title>
    <link rel="stylesheet" href="../theme/default/style.css" type="text/css" />
    <link rel="stylesheet" href="style.css" type="text/css" />
    <style type="text/css">
        #controlToggle li {
            list-style: none;
        }
    </style>
    <script src="../lib/OpenLayers.js"></script>
    <script src="../lib/WMSGetFeatrueInfo.js"></script>
    

    
    <script type="text/javascript">


             var map;                                                                    
             function init(){                                                            

                map = new OpenLayers.Map('map');
                
               //////////////////////////////////////////////

               ///default ol wms
                 var ol_wms = new OpenLayers.Layer.WMS( "OpenLayers WMS",
                     "http://labs.metacarta.com/wms/vmap0?", {layers: 'basic'} );
                 map.addLayers( [ol_wms]);

               ///local vector layer
               layer2 = new OpenLayers.Layer.MapServer( "localnonwms", "http://127.0.0.1/cgi-bin/mapserv.exe?map=/ms4w/apps/jasper/htdocs/jasper.map", {layers: 'plats'}, {gutter: 15});
               map.addLayer(layer2);

               ///local jasper wms (this is the query data)
               layerwms = new OpenLayers.Layer.WMS('jasper', "http://127.0.0.1/cgi-bin/mapserv.exe?map=/ms4w/apps/jasper/htdocs/jasper_wms.map", {layers: 'plats'}
                  //{transparent: true, format: 'image/png'},
                  //{isBaseLayer: false, singleTile: true}
                );
               map.addLayer(layerwms);
               
              //////////////////////////////////////////////
               ///setup click callback
               map.events.register('click', map, function (e)
                {
                    findLayerClick(e)
                });
                

              //////////////////////////////////////////////
              //Build a URL string to make a query to mapserver
              function findLayerClick(event) {

              mouseLoc = map.getLonLatFromPixel(event.xy);

              //this builds a query to send to mapserver via url
              var url = layerwms.getFullRequestString({
                        REQUEST: "GetFeatureInfo",
                        EXCEPTIONS: "application/vnd.ogc.se_xml",       //#  /
                        STYLES: "",
                        BBOX: map.getExtent().toBBOX(),
                        X: event.xy.x,
                        Y: event.xy.y,
                        //INFO_FORMAT: 'text/plain',
                        QUERY_LAYERS: 'plats',
                        FEATURE_COUNT: 1,
                        WIDTH: map.size.w,
                        HEIGHT: map.size.h}

                         );


                        // alert(url)  //this is the actual query string
                         

             OpenLayers.loadURL(url, '', this, show_popup );   //show_popup //OR// show_browser
             Event.stop(event);
             }
             ////////////////////

            function show_browser(response) {
            alert(response.responseText);
   			    }

           ////////////////////
           //create a popup from response
           function show_popup (response) {
             var popup_info = response.responseText
             //var doce = response.responseXML.documentElement;
             // var PCode = doce.getElementsByTagName('PCode')[0].firstChild.data;
             // var SCode = doce.getElementsByTagName('SCode')[0].firstChild.data;
             //   popup_info = "<font size=2><b>Project: </b>" + PCode +
             //           "<br>System Code: " + SCode + "</font>";
              //if (popup != null) {
              //    popup.destroy();
             //     popup = null;
             // }
                //popup.setBackgroundColor("#bcd2ee");
        //      popup.setOpacity(.7);
        
                popup = new OpenLayers.Popup.AnchoredBubble("mypopup",
                                                mouseLoc,
                                                new OpenLayers.Size(250,120),
                                                popup_info,
                                                null,
                                                true);

                map.addPopup(popup);
                popup.events.register("click", map, popupDestroy);
            }


            ////////////////////
            map.addControl(new OpenLayers.Control.LayerSwitcher());
            map.addControl(new OpenLayers.Control.MousePosition());
            ////////////////////
            //     map.zoomToMaxExtent();
            bounds = new OpenLayers.Bounds( -94.036389, 30.888094 ,-93.937035, 30.927913 );
            map.zoomToExtent(bounds);
            
             }                                                                            
    </script>
  </head>
  <body onload="init()">
   <h1 id="title">this sucks</h1>
    <p id="shortdesc">
</p>
    <div id="map" class="smallmap"></div>
    <div id="status"></div>  
<br >                                                                          
<textarea rows="10" columns="100" id="text">code some nodes ...</textarea>     
<br />                                                                         
  </body>
</html>







EXAMPLE WITH BUTTONS

<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>OpenLayers Event Handling</title>
        <link rel="stylesheet" href="style.css" type="text/css" />
        <style type="text/css">
            #panel {
                margin: 5px;
                height: 30px; 
                width: 200px;
            }
            #panel div { 
                float: left;
                margin-left: 5px;
                width: 25px;
                height: 25px;
                border: 1px solid gray;
            }
            #output {
                position: absolute;
                left: 550px;
                top: 40px;
                width: 350px;
                height: 400px;
            }
            div.blueItemInactive {
                background-color: #aac;

            }
            div.blueItemActive {
                background-color: #33c;
            }
            div.orangeItemInactive {
                background-color: #ca6;
            }
            div.orangeItemActive {
                background-color: #ea0;
            }
            div.greenItemInactive {
                background-color: #aca;
            }
            div.greenItemActive {
                background-color: #3c3;
            }
                
        </style>
        <script src="../lib/OpenLayers.js"></script>
        <script src="jasper_testapp.js" </script>

    </head>
    <body onload="init()">
        <h1 id="title">BETA Jasper Map</h1>

        <div id="tags">
        </div>

        <p id="shortdesc">
           <p>

            Blue button changes zoom
           </p>
           <p>
             Green button clears log and sets view to jasper
           </p>
           <p>
             Orange button clears log
           </p>
           

        </p>

        <div id="map" class="smallmap"></div>
        <div id="panel"></div>
        <textarea id="output"></textarea>
        <div id="docs"></div>
    </body>
</html>

JAVASCRIPT FOR ABOVE HTML


            var map, panel , map2;

            //////////////////////////////                //////////////////////////////
                
            function init(){

                // define custom map event listeners
                function mapEvent(event) {
                    log(event.type);
                }
                function mapBaseLayerChanged(event) {
                    log(event.type + " " + event.layer.name);
                }
                function mapLayerChanged(event) {
                    log(event.type + " " + event.layer.name + " " + event.property);
                }
                //////////////////////////////
                   map = new OpenLayers.Map('map');
                
                    // 'map',{ eventListeners: {
                    //    "moveend":         mapEvent,
                    //    "zoomend":         mapEvent,
                    //    "changelayer":     mapLayerChanged,
                    //    "changebaselayer": mapBaseLayerChanged
                   // }   });
                   
                //////////////////////////////
                //////////////////////////////
               ///local vector layer
               layer2 = new OpenLayers.Layer.MapServer( "localnonwms", "http://127.0.0.1/cgi-bin/mapserv.exe?map=/ms4w/apps/jasper/htdocs/jasper.map", {layers: 'plats'}, {gutter: 15});
               map.addLayer(layer2);

               ///local jasper wms (this is the query data)
               layerwms = new OpenLayers.Layer.WMS('jasper', "http://127.0.0.1/cgi-bin/mapserv.exe?map=/ms4w/apps/jasper/htdocs/jasper_wms.map", {layers: 'plats'}
                );
               map.addLayer(layerwms);

                //////////////////////////////
                //////////////////////////////
                panel = new OpenLayers.Control.Panel(
                    {div: document.getElementById("panel")}
                );

                // define custom event listeners
                function toolActivate(event) {
                    keithtest(event);

                    log("activate " + event.object.displayClass);
                }
                function toolDeactivate(event) {
                    log("deactivate " + event.object.displayClass);
                }


                // Multiple objects can share listeners with the same scope
                var toolListeners = {
                    "activate": toolActivate,
                    "deactivate": toolDeactivate
                };


                var blue = new OpenLayers.Control({
                    type: OpenLayers.Control.TYPE_TOGGLE,
                    eventListeners: toolListeners,
                    displayClass: "blue"
                    //twat: "itchey"

                });
                var orange = new OpenLayers.Control({
                    type: OpenLayers.Control.TYPE_TOGGLE,
                    eventListeners: toolListeners,
                    displayClass: "orange"
                });
                var green = new OpenLayers.Control({
                    type: OpenLayers.Control.TYPE_TOGGLE,
                    eventListeners: toolListeners,
                    displayClass: "green"
                });

                ///////////////////////////

                // add buttons to a panel
                panel.addControls([blue, orange, green]);
                map.addControl(panel);

                ///////////////////////////


                ///
                var vmap = new OpenLayers.Layer.WMS(
                    "OpenLayers WMS",
                    "http://labs.metacarta.com/wms/vmap0",
                    {layers: 'basic'}
                );

                ///
                var landsat = new OpenLayers.Layer.WMS(
                    "NASA Global Mosaic",
                    "http://t1.hypercube.telascience.org/cgi-bin/landsat7",
                    {layers: "landsat7"}
                );

                ///
                map.addLayers([vmap, landsat]);
                map.addControl(new OpenLayers.Control.LayerSwitcher());

                //map.zoomToMaxExtent();
                bounds = new OpenLayers.Bounds( -94.036389, 30.888094 ,-93.937035, 30.927913 );
                map.zoomToExtent(bounds);
            



            ///////////////////////////
            ///////////////////////////
               ///setup click callback
               map.events.register('click', map, function (e)
                {
                    findLayerClick(e)
                });


              //////////////////////////////////////////////
              //Build a URL string to make a query to mapserver
              function findLayerClick(event) {
                mouseLoc = map.getLonLatFromPixel(event.xy);
                //this builds a query to send to mapserver via url
                var url = layerwms.getFullRequestString({
                        REQUEST: "GetFeatureInfo",
                        EXCEPTIONS: "application/vnd.ogc.se_xml",       //#  /
                        STYLES: "",
                        BBOX: map.getExtent().toBBOX(),
                        X: event.xy.x,
                        Y: event.xy.y,
                        //INFO_FORMAT: 'text/plain',
                        QUERY_LAYERS: 'plats',
                        FEATURE_COUNT: 1,
                        WIDTH: map.size.w,
                        HEIGHT: map.size.h}

                         );
                   //alert(url)  //this is the actual query string
                  OpenLayers.loadURL(url, '', this, show_log );  // show_log //show_popup //OR// show_browser
                  Event.stop(event);
                }
             ////////////////////

            function show_browser(response) {
            alert(response.responseText);
   			    }

           ////////////////////
           function show_log(response){
            write("output",response.responseText)
           }
           
           //create a popup from response
           function show_popup (response) {
             var popup_info = response.responseText
                popup = new OpenLayers.Popup.AnchoredBubble("mypopup",
                                                mouseLoc,
                                                new OpenLayers.Size(250,120),
                                                popup_info,
                                                null,
                                                true);

                map.addPopup(popup);
                //popup.events.register("click", map, popupDestroy);
            }
                        //alert(read("output"))
                        
            }//END OF INTI
            
            ///////////////////////////
            ///////////////////////////
            //read text from an html window
            function read(TAGNAME) {
               textstr = document.getElementById(TAGNAME).value;
               return textstr
            }

            ///
            //read text from an html window
            function write(TAGNAME,TEXT) {
                document.getElementById(TAGNAME).innerHTML = TEXT ;
            }

            ///
            
            function clear_log(){
              write("output","");
            }


            
            //###############################///
            //RAN ON BUTTON ACTIVATION , SORTS OUT TYPE OF CONTROL
            
            function keithtest (eventx){
              //
              if (eventx.object.displayClass =="green")
              {
                bounds = new OpenLayers.Bounds( -94.036389, 30.888094 ,-93.937035, 30.927913 );
                map.zoomToExtent(bounds);
                clear_log();
                            
              }
              //
              if (eventx.object.displayClass =="orange")
              {
               // bounds = new OpenLayers.Bounds( -94.036389, 30.888094 ,-93.937035, 30.927913 );
              //  map.zoomToExtent(bounds);
                clear_log();

              }
              //
              if (eventx.object.displayClass =="blue")
              {
               bounds = new OpenLayers.Bounds( -92.036389, 28.888094 ,-93.937035, 30.927913 );
                map.zoomToExtent(bounds);
              }

            }
            
            ///////////////////////////
            function log(msg) {
                document.getElementById("output").innerHTML += msg + "\n";
            }








						
						
Personal tools