WMS base con MS4W y Openlayers

From OSGeo
Jump to navigation Jump to search

Nota:

EN: THIS IS STILL A DRAFT 
ES: SIGUE SIENDO UN BORRADOR

Objectivos

El objetivo de esta clase es acercar el usuario común al utilizo de los estándares OGC en un contesto de web mapping utilizando solamente software libre.

WMS base con MS4W y Openlayers

una vez que MS4W ha sido instalado y el juego de datos Itasca ha sido añadido, se puede utilizar el servidor WMS para recibir las capas de sus mapas. Existe un gran variedad de clientes WMS sea que se quiera utilizar clientes pesados, para el Desktop, que clientes livianos, para la Web. Unos de los client FOSS (Free and Open Source Software) mas apreciado es sin duda OpenLayers Openlayers.org.

la primera mapa en la web

considerando la configuración de los mapas Itasca lo que necesitamos para crear nuestra primera mapa web son estos datos:

codigo de ejemplo

para crear la pagina web necesitamos crear un nuevo fichero con un editor de texto sencillo. este fichero lo llamaremos:

C:\ms4w\apps\mapserv-demo\ol.html


luego hay que poner el siguiente texto en ella:

 <html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <style type="text/css">
        #map {
            width: 512px;
            height: 512px;
            border: 1px solid black;
        }
    </style>
    <script src="http://www.openlayers.org/api/OpenLayers.js"></script>
    <script type="text/javascript">
        
        var map, layer;
 
        function init(){
            map = new OpenLayers.Map( 'map',{
 					maxExtent: new OpenLayers.Bounds(378107,5193120,510896,5320243),
 					maxResolution: 'auto',
 					units: "m",
 					projection: "EPSG:26915"} 
 				);
            
            layer = new OpenLayers.Layer.WMS( "OpenLayers WMS",
                    "http://localhost:9000/cgi-bin/mapserv.exe?map=/ms4w/apps/mapserv-demo/itasca.map", {layers: 'drgs'} );
                    
            map.addLayers([layer]);
 
            map.zoomToMaxExtent();
            map.addControl( new OpenLayers.Control.LayerSwitcher() );
        }
    </script>
   </head>
   <body onload="init()">

         <b>Ejemplo de WMS</b>
   
     <div>
          El uso basico de Openlayers con un layer WMS
     </div>
   
     <div id="map"></div>
   
     <div id="docs">
         mas texto aquì
     </div>
   </body>
  </html>

comprobar la pagina web con el mapa

una vez guardada la pagina web con el codigo añadido podemos comprobar con nuestro browser web (ex: Mozilla Firefox, Internet Explorer, ecc.) si la pagina responde como nos esperamos:

este es el resultado:

la primera vista del mapa creado por Openlayers en la pagina web

Todo lo que hay que notar en nuestro codigo

El codigo que hemos utilizado es de verdad muy poco pero hay que estar muy atentos a que lo que escriba sea exacto y tenga sentido.

el estilo CSS

El minimo de estilo CSS que necesitamos es para posicionar el marco del mapa. A este DIV se le da el ID de MAP. Los elementos importantes son el alto (width) y el ancho (height).

   <style type="text/css">
       #map {
           width: 512px;
           height: 512px;
           border: 1px solid black;
       }
   </style>

la biblioteca Javascript de Openlayers

para que se pueda crear la mapa es indispensable la biblioteca de codigo de Openlayers que se puede utilizar en varias maneras. La mas comoda, por el comienzo, es utilizar su versión publicada online.

   <script src="http://www.openlayers.org/api/OpenLayers.js"></script>

el código Javascript personalizado

para definir nuestro mapa especifico tenemos que dar unas indicaciones a Openlayers, como que mapa utilizar y como enseñarla.

   <script type="text/javascript">
       
       var map, layer;
       function init(){
           map = new OpenLayers.Map( 'map',{
					maxExtent: new OpenLayers.Bounds(378107,5193120,510896,5320243),
					maxResolution: 'auto',
					units: "m",
					projection: "EPSG:26915"} 
				);
           
           layer = new OpenLayers.Layer.WMS( "OpenLayers WMS",
                   "http://localhost:9000/cgi-bin/mapserv.exe?map=/ms4w/apps/mapserv-demo/itasca.map", {layers: 'drgs'} );
                   
           map.addLayers([layer]);

           map.zoomToMaxExtent();
       }
   </script>

<body onload="init()">

<div id="map"></div>

Autores