1 votos

La capa WMS de Geoserver no se muestra en OpenLayers

Me gustaría superponer una capa de Geoserver WMS en OpenLayers y OpenStreetMaps. Tengo problemas porque el WMS no se muestra encima de las capas de OSM (mapnik, cyclemap). Este es el código:

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Exercise 13 OSM Basemaps</title>
    <script src="http://openlayers.org/api/OpenLayers.js"></script>
    <script src="http://openstreetmap.org/openlayers/OpenStreetMap.js"></script>

<script>
    var map;

    function init(){
        map = new OpenLayers.Map("map");

        map.addControl(new OpenLayers.Control.LayerSwitcher());

        var mapnik = new OpenLayers.Layer.OSM.Mapnik("Mapnik");

        var cycleMap = new OpenLayers.Layer.OSM.CycleMap("CycleMap");
        //this is the wms layer addressm when opening in geoserver OL preview:
        //http://gis.otg.pr.gov:8080/geoserver/CENTRAL_GIS_PR/wms?service=WMS&version=1.1.0&request=GetMap&layers=CENTRAL_GIS_PR:AMB_CONSERV_AREAS_NATURALES_PROTEGIDAS_2010&styles=&bbox=-68.11626634304696,17.77573989512554,-65.21874395570885,18.645740062494458&width=1099&height=330&srs=EPSG:4326&format=application/openlayers
//          var mytest = new OpenLayers.Layer.WMS(
//              "Áreas naturales protegidas, 2010",
//              "http://gis.otg.pr.gov:8080/geoserver/CENTRAL_GIS_PR/wms?service=WMS&version=1.1.0",
//                  {
//                      layers: 'CENTRAL_GIS_PR:AMB_CONSERV_AREAS_NATURALES_PROTEGIDAS_2010',
//                      format: 'image/png',
//                      transparent: true
//                  },
//                  {
//                      'opacity': 0.66, 'isBaseLayer': false, 'wrapDateLine': true
//                  }
//          );

        mytest = new OpenLayers.Layer.WMS("Áreas naturales protegidas, 2010", 
            "http://gis.otg.pr.gov:8080/geoserver/CENTRAL_GIS_PR/wms?",
            {
                workspace: 'CENTRAL_GIS_PR',
                layers: 'AMB_CONSERV_AREAS_NATURALES_PROTEGIDAS_2010', 
                format: 'image/png'
            },
            {
                'opacity': 0.66, 'isBaseLayer': false
            }
        );

        map.addLayers([mapnik, cycleMap, mytest]);

        var center = new OpenLayers.LonLat(-66.25, 18.25);

        var centerOSM = center.transform(
            new OpenLayers.Projection("EPSG:4326"),
            new OpenLayers.Projection("EPSG:3857")
        );

        map.setCenter(centerOSM, 8);

    }

</script>

</head>
<body onload="init()">
    <div id="map"></div>
</body>
</html>

Usando otro código puedo ver el wms solo:

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Exercise OSM Basemaps</title>
    <script src="http://openlayers.org/api/OpenLayers.js"></script>
    <script src="http://openstreetmap.org/openlayers/OpenStreetMap.js"></script>

<script type="text/javascript">
    var map, layer;

    function init()
    {
        map = new OpenLayers.Map( 'map' );
        // This is the address in geoserver...
        // http://gis.otg.pr.gov:8080/geoserver/CENTRAL_GIS_PR/wms?service=WMS&version=1.1.0&request=GetMap&layers=CENTRAL_GIS_PR:AMB_CONSERV_AREAS_NATURALES_PROTEGIDAS_2010&styles=&bbox=-68.11626634304696,17.77573989512554,-65.21874395570885,18.645740062494458&width=1099&height=330&srs=EPSG:4326&format=application/openlayers
        layer = new OpenLayers.Layer.WMS("Áreas naturales protegidas, 2010", 
            "http://gis.otg.pr.gov:8080/geoserver/CENTRAL_GIS_PR/wms?",
            {
                workspace: 'CENTRAL_GIS_PR',
                layers: 'AMB_CONSERV_AREAS_NATURALES_PROTEGIDAS_2010', 
                format: 'image/png'
            },
            {
                buffer: 0,
                ratio: 1.9,
                displayOutsideMaxExtent: true
            }
        );
        map.addLayer(layer);
        map.addControl(new OpenLayers.Control.LayerSwitcher());
         -68.11626634304696,17.77573989512554,-65.21874395570885,18.645740062494458
        map.zoomToExtent(
            new OpenLayers.Bounds(-68.11,17.77,-65.21,18.64)
        );
    }
</script>
</head>
<body onload="init()">
    <div id="map"></div>
</body>
</html>

¿Qué me falta aquí? ¿Parece que hay incompatibilidades de proyección?

3voto

Brad8118 Puntos 1285

Tienes que poner transparent=true en la primera opción. Debería tener el siguiente aspecto

mytest = new OpenLayers.Layer.WMS("Áreas naturales protegidas, 2010", 
        "http://gis.otg.pr.gov:8080/geoserver/CENTRAL_GIS_PR/wms?",
        {
            workspace: 'CENTRAL_GIS_PR',
            layers: 'AMB_CONSERV_AREAS_NATURALES_PROTEGIDAS_2010', 
            format: 'image/png',
            transparent : true
        },
        {
            'opacity': 0.66, 'isBaseLayer': false
        }
    );

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X