XYZLayer.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. import LTBaseObject from './KBaseObject'
  2. import XYZ from 'ol/source/XYZ'
  3. import Tile from 'ol/layer/Tile'
  4. import Common from './Common'
  5. /**
  6. * @description LTMap.XYZLayer XYZ图层类
  7. */
  8. class XYZLayer extends LTBaseObject{
  9. /**
  10. * @description 构造函数
  11. * @param {String} url XYZ图层服务地址
  12. * @param {LTMap.Map} [mapInstance=null] map对象,单地图的时候可不传,多地图时候需要传
  13. * @memberof XYZLayer
  14. */
  15. constructor(url,options,zIndex,mapInstance = null){
  16. super(mapInstance)
  17. const vm = this
  18. vm.initXYZLayer(url,options,zIndex)
  19. }
  20. /**
  21. * @description 切片加载XYZ图层
  22. * @param {*} url
  23. * @param {*} layerName
  24. * @memberof XYZLayer
  25. */
  26. initXYZLayer(url,options,zIndex){
  27. var minZoom = Common.BaseLayerZoom[0];
  28. var maxZoom = Common.BaseLayerZoom[1];
  29. if(options && options.minZoom != undefined){
  30. minZoom = options.minZoom
  31. }
  32. if(options && options.maxZoom != undefined){
  33. maxZoom = options.maxZoom
  34. }
  35. if(options && options.zIndex != undefined){
  36. zIndex = options.zIndex
  37. }
  38. const vm = this
  39. vm.source = new XYZ({
  40. crossOrigin:'anonymous',
  41. url : url
  42. })
  43. vm.layer = new Tile({
  44. source:vm.source,
  45. maxZoom:maxZoom,
  46. minZoom:minZoom,
  47. zIndex:zIndex,
  48. extent:options.extent || null
  49. })
  50. if(options && options.padding != undefined){
  51. vm.layer.set('padding',options.padding)
  52. }
  53. vm.map.addLayer(vm.layer)
  54. }
  55. setProperty(properties){
  56. const vm = this;
  57. vm.properties = properties;
  58. }
  59. getProperty(){
  60. const vm = this;
  61. return vm.properties?vm.properties:null;
  62. }
  63. /**
  64. * @description 添加XYZ图层到地图
  65. * @memberof XYZLayer
  66. */
  67. add(){
  68. const vm = this
  69. if(!vm.state) {
  70. vm.map.addLayer(vm.layer)
  71. vm.state = true
  72. }
  73. }
  74. /**
  75. * @description 从当前地图中移除XYZ图层
  76. * @memberof XYZLayer
  77. */
  78. remove() {
  79. const vm = this
  80. if(vm.state) {
  81. vm.map.removeLayer(vm.layer)
  82. vm.state = false
  83. }
  84. }
  85. /**
  86. * @description 显示XYZ图层数据
  87. * @memberof XYZLayer
  88. */
  89. show(){
  90. const vm = this
  91. vm.layer.setVisible(true)
  92. }
  93. /**
  94. * @description 隐藏XYZ图层数据
  95. * @memberof XYZLayer
  96. */
  97. hide(){
  98. const vm = this
  99. vm.layer.setVisible(false)
  100. }
  101. /**
  102. * @description 缩放到过滤后的地图要素对应范围
  103. * @memberof XYZLayer
  104. */
  105. zoomTo() {
  106. const vm = this
  107. }
  108. }
  109. export default XYZLayer