美文网首页
图层相关

图层相关

作者: 扶不起的蝌蚪 | 来源:发表于2020-06-09 15:11 被阅读0次

    除特殊注明的HTML结构
    默认均为

    <!DOCTYPE html>
    <html lang="en">
      <head>
        <title>Image ArcGIS MapServer</title>
        <!-- The line below is only needed for old environments like Internet Explorer and Android 4.x -->
        <script src="https://cdn.polyfill.io/v2/polyfill.min.js?features=fetch,requestAnimationFrame,Element.prototype.classList,URL"></script>
        <style>
          .map {
            width: 100%;
            height:400px;
          }
        </style>
      </head>
      <body>
        <div id="map" class="map"></div>
        <script src="index.js"></script>
      </body>
    </html>
    

    加载ArcGIS图片图层

    
    var layers =  new ol.layer.Image({
        source: new ImageArcGISRest({
          ratio: 1,
          params: {},
          url: `https://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StateCityHighway_USA/MapServer`
        })
      })
    var map = new Map({
      layers: layer,
      target: 'map',
      view: new View({
        center: [-10997148, 4569099],
        zoom: 4
      })
    });
    

    [加载ArcGIS瓦片图层]

    这种source类型支持地图和图片服务,为了缓存ArcGis服务,但是最好的方式是推荐使用o.source.XYZ

    import 'ol/ol.css';
    import Map from 'ol/Map';
    import View from 'ol/View';
    import TileLayer from 'ol/layer/Tile';
    import {OSM, TileArcGISRest} from 'ol/source';
    
    var url = 'https://sampleserver1.arcgisonline.com/ArcGIS/rest/services/' +
        'Specialty/ESRI_StateCityHighway_USA/MapServer';
    
    var layers = [
      new TileLayer({
        source: new OSM()
      }),
      new TileLayer({
        extent: [-13884991, 2870341, -7455066, 6338219],
        source: new TileArcGISRest({
          url: url
        })
      })
    ];
    var map = new Map({
      layers: layers,
      target: 'map',
      view: new View({
        center: [-10997148, 4569099],
        zoom: 4
      })
    });
    

    图层的显示与隐藏

    通过setVisible(Boolean)来控制图层的显示与隐藏

    <!DOCTYPE html>
    <html lang="en">
      <head>
        <title>Bing Maps</title>
        <!-- The line below is only needed for old environments like Internet Explorer and Android 4.x -->
        <script src="https://cdn.polyfill.io/v2/polyfill.min.js?features=fetch,requestAnimationFrame,Element.prototype.classList,URL"></script>
        <style>
          .map {
            width: 100%;
            height:400px;
          }
        </style>
      </head>
      <body>
         <div id="map" class="map"></div>
         <select id="layer-select">
           <option value="Aerial">Aerial</option>
           <option value="AerialWithLabelsOnDemand" selected>Aerial with labels</option>
           <option value="RoadOnDemand">Road</option>
           <option value="CanvasDark">Road dark</option>
           <option value="OrdnanceSurvey">Ordnance Survey</option>
         </select>
        <script src="index.js"></script>
      </body>
    </html>
    
    var styles = [
      'RoadOnDemand',
      'Aerial',
      'AerialWithLabelsOnDemand',
      'CanvasDark',
      'OrdnanceSurvey'
    ];
    var layers = [];
    for (var i = 0 ; i < styles.length; ++i) {
      layers.push(new TileLayer({
        visible: false,
        preload: Infinity,
        source: new BingMaps({
          key: 'Your Bing Maps Key from http://www.bingmapsportal.com/ here ',
          imagerySet: styles[i]
          // 超过19级的放大后,BING图层会显示为一张标识没有图层的图标,如果为了不显示此效果,你需要最大的放大层级设置为19
          // maxZoom: 19
        })
      }));
    }
    var map = new Map({
      layers: layers,
      target: 'map',
      view: new View({
        center: [-6655.5402445057125, 6709968.258934638],
        zoom: 13
      })
    });
    
    var select = document.getElementById('layer-select');
    function onChange() {
    //通过遍历匹配与当前选中值相等的图层,使其显示
      for (var i = 0 ; i < layers.length; ++i) {
        layers[i].setVisible(styles[i] === select.value;);
      }
    }
    select.addEventListener('change', onChange);
    //初始化选中的图层
    onChange();
    

    相关文章

      网友评论

          本文标题:图层相关

          本文链接:https://www.haomeiwen.com/subject/gtznzhtx.html