Exemple serveis rasters ICGC i MapICGC GL JS

Veure codi font pantalla completa



<html>
<head>
    <meta charset='utf-8'/>
    <title>Exemple serveis rasters ICGC i MapICGC GL JS</title>
    <meta name='viewport' content='initial-scale=1,maximum-scale=1,user-scalable=no'/>
    <script src="https://eines.icgc.cat/recursos/mapicgc-gl-js/mapicgc-gl.js"></script>
    <link href="https://eines.icgc.cat/recursos/mapicgc-gl-js/mapicgc-gl.css" rel="stylesheet"/>
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
    <style>
        body {
            margin: 0;
            padding: 0;
        }
        #map {
            position: absolute;
            top: 0;
            bottom: 0;
            width: 100%;
            height: 100%
        }
        #menu {
            position: absolute;
            z-index: 1000;
            background: #fff;
            padding: 10px;
            font-family: 'Open Sans', sans-serif;
            top: 5px;
            left: 5px;
            border-radius: 7px;
            -webkit-box-shadow: 5px 5px 5px -5px rgba(0, 0, 0, 0.75);
            -moz-box-shadow: 5px 5px 5px -5px rgba(0, 0, 0, 0.75);
            box-shadow: 5px 5px 5px -5px rgba(0, 0, 0, 0.75);
        }
    </style>
</head>
<body>
    <div id='menu'>
    <input id="topografic" type="radio" name="rtoggle" value="topografic" checked="checked" />
    <label for="topografic">Topogràfic</label><br />
    
    <input id="topografic-gris" type="radio" name="rtoggle" value="topografic-gris" />
    <label for="topografic-gris">Topogràfic gris</label><br />
    
    <input id="simplificat" type="radio" name="rtoggle" value="simplificat" />
    <label for="simplificat">Simplificat</label><br />
    
    <input id="administratiu" type="radio" name="rtoggle" value="administratiu" />
    <label for="administratiu">Administratiu</label><br />
    
    <input id="estandard" type="radio" name="rtoggle" value="estandard" />
    <label for="estandard">Estàndard</label><br />
    
    <input id="orto" type="radio" name="rtoggle" value="orto" />
    <label for="orto">Orto</label><br />
    
    <input id="orto-gris" type="radio" name="rtoggle" value="orto-gris" />
    <label for="orto-gris">Orto gris</label><br />
    
    <input id="orto-hibrida" type="radio" name="rtoggle" value="orto-hibrida" />
    <label for="orto-hibrida">Orto híbrida</label><br />
    
    </div>

    <div id="map"></div>
    <script>
 
    async function initMap() {
      const data = await mapicgcgl.Config.getConfigICGC();
      const map = new mapicgcgl.Map({
          container: "map",
          style: data.Styles.TOPO,
          center: [2.1464, 41.306],
          zoom: 7.4,
          maxZoom: 19,
          hash: true,
          pitch: 0,
      });
      map.on("load", () => {
          map.addFullscreenControl()
          map.addNavigationControl()
          map.addAttributionControl({ compact: true });
          map.addGeolocateControl(
              {
                  positionOptions: {
                      enableHighAccuracy: true,
                  }, 
                  trackUserLocation: true,
              }
          );

          switchLayer();
      })
      const layerList = document.getElementById('menu');
      const inputs = layerList.getElementsByTagName('input');
 
      function switchLayer(layer) {
        let layerId;

        if (layer === undefined) {
            layerId = "topografic";
        } else {
            layerId = layer.target.id;
        }

        if (map.getLayer("wmts-layer")) {
            map.removeLayer("wmts-layer");
            map.removeSource("wmts-layer");
        }

        map.addSource("wmts-layer", {
            type: "raster",
            tiles: [
                `https://geoserveis.icgc.cat/servei/catalunya/mapa-base/wmts/${layerId}/MON3857NW/{z}/{x}/{y}.png`,
            ],
            tileSize: 256,
        });

        map.addLayer({
            id: "wmts-layer",
            type: "raster",
            source: "wmts-layer",
            paint: {},
        });
      }
   
      for (let i = 0; i < inputs.length; i++) {
          inputs[i].onclick = switchLayer;
      }
      
  }
  initMap();

    </script>
</body>
</html>