import LTBaseObject from './KBaseObject' import XYZ from 'ol/source/XYZ' import Tile from 'ol/layer/Tile' import Common from './Common' import {GeoJSON} from "ol/format"; import VectorSource from "ol/source/Vector.js"; import VectorLayer from "ol/layer/Vector.js"; import Static from "ol/source/ImageStatic"; import ImageLayer from "ol/layer/Image"; /** * @description LTMap.GeoJsonLayer GeoJsonLayer图层类 */ class StaticImgLayer extends LTBaseObject{ /** * @description 构造函数 * @param {String} url XYZ图层服务地址 * @param {LTMap.Map} [mapInstance=null] map对象,单地图的时候可不传,多地图时候需要传 * @memberof XYZLayer */ constructor(url,options,zIndex,mapInstance = null){ super(mapInstance) const vm = this vm.initStaticImgLayer(url,options,zIndex) } /** * @description 初始化静态图片图层 */ initStaticImgLayer(url,options,zIndex){ var minZoom = Common.BaseLayerZoom[0]; var maxZoom = Common.BaseLayerZoom[1]; let opacity = 1; if(options && options.opacity != undefined){ opacity = options.opacity } if(options && options.minZoom != undefined){ minZoom = options.minZoom } if(options && options.maxZoom != undefined){ maxZoom = options.maxZoom } const vm = this vm.source = new Static({ url, // 替换为你的GeoJSON文件URL projection: 'EPSG:4326', imageExtent: options.extent, }); vm.layer = new ImageLayer({ source:vm.source, maxZoom:maxZoom, minZoom:minZoom, opacity:opacity, zIndex:zIndex, extent:options.extent || [Infinity, -Infinity, -Infinity, Infinity] }) vm.map.addLayer(vm.layer) } setProperty(properties){ const vm = this; vm.properties = properties; } getProperty(){ const vm = this; return vm.properties?vm.properties:null; } /** * @description 添加XYZ图层到地图 * @memberof XYZLayer */ add(){ const vm = this if(!vm.state) { vm.map.addLayer(vm.layer) vm.state = true } } /** * @description 从当前地图中移除XYZ图层 * @memberof XYZLayer */ remove() { const vm = this if(vm.state) { vm.map.removeLayer(vm.layer) vm.state = false } } /** * @description 显示XYZ图层数据 * @memberof XYZLayer */ show(){ const vm = this vm.layer.setVisible(true) } /** * @description 隐藏XYZ图层数据 * @memberof XYZLayer */ hide(){ const vm = this vm.layer.setVisible(false) } /** * @description 缩放到过滤后的地图要素对应范围 * @memberof XYZLayer */ zoomTo() { const vm = this } } export default StaticImgLayer