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]); }; }
如有疑问请联系我