openlayers控制图层显示范围

openlayers控制图层显示范围

简介:为了突出地图关注区域,需要限制图层显示范围,或者高亮显示区域。针对这种需求,openlayers提供了图层的extent属性。可以在初始化图层时设置,也可以在图层创建完成动态设置extent属性,图层会实时渲染。用户根据具体需求进行选择。

设置图层显示范围的两种方式 

  1.初始化图层时设置extent属性

 var base = new ol.layer.Tile({
        source: new ol.source.TileJSON({
          url: 'https://api.tiles.mapbox.com/v3/mapbox.world-light.json?secure',
          crossOrigin: 'anonymous',
          extent:[68.17665, 7.96553, 97.40256, 35.49401]//限制的extent范围
}) });

2.图层初始化完成,设置extent属性。

overlay.setExtent([68.17665, 7.96553, 97.40256, 35.49401]);

3.完整官方实例解析

      //转换extent坐标系
      function transform(extent) {
        return ol.proj.transformExtent(extent, 'EPSG:4326', 'EPSG:3857');
      }
      //定义多个extent
      var extents = {
        India: transform([68.17665, 7.96553, 97.40256, 35.49401]),
        Argentina: transform([-73.41544, -55.25, -53.62835, -21.83231]),
        Nigeria: transform([2.6917, 4.24059, 14.57718, 13.86592]),
        Sweden: transform([11.02737, 55.36174, 23.90338, 69.10625])
      };
      //底图
      var base = new ol.layer.Tile({
        source: new ol.source.TileJSON({
          url: 'https://api.tiles.mapbox.com/v3/mapbox.world-light.json?secure',
          crossOrigin: 'anonymous'
        })
      });
      //测试控制范围的图层
      var overlay = new ol.layer.Tile({
        extent: extents.India,
        source: new ol.source.TileJSON({
          url: 'https://api.tiles.mapbox.com/v3/mapbox.world-black.json?secure',
          crossOrigin: 'anonymous'
        })
      });
      //初始化地图
      var map = new ol.Map({
        layers: [base, overlay],
        target: 'map',
        view: new ol.View({
          center: [0, 0],
          zoom: 1
        })
      });
      //点击不同区域,测试图层实质不同extent
      for (var key in extents) {
        document.getElementById(key).onclick = function(event) {
          overlay.setExtent(extents[event.target.id]);
        };
      }

如有疑问请联系我

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

CAPTCHAis initialing...
退出移动版