XYZLayer.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  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. const vm = this
  36. vm.source = new XYZ({
  37. crossOrigin:'anonymous',
  38. url : url
  39. })
  40. vm.layer = new Tile({
  41. source:vm.source,
  42. maxZoom:maxZoom,
  43. minZoom:minZoom,
  44. zIndex:zIndex
  45. })
  46. vm.map.addLayer(vm.layer)
  47. }
  48. setProperty(properties){
  49. const vm = this;
  50. vm.properties = properties;
  51. }
  52. getProperty(){
  53. const vm = this;
  54. return vm.properties?vm.properties:null;
  55. }
  56. /**
  57. * @description 添加XYZ图层到地图
  58. * @memberof XYZLayer
  59. */
  60. add(){
  61. const vm = this
  62. if(!vm.state) {
  63. vm.map.addLayer(vm.layer)
  64. vm.state = true
  65. }
  66. }
  67. /**
  68. * @description 从当前地图中移除XYZ图层
  69. * @memberof XYZLayer
  70. */
  71. remove() {
  72. const vm = this
  73. if(vm.state) {
  74. vm.map.removeLayer(vm.layer)
  75. vm.state = false
  76. }
  77. }
  78. /**
  79. * @description 显示XYZ图层数据
  80. * @memberof XYZLayer
  81. */
  82. show(){
  83. const vm = this
  84. vm.layer.setVisible(true)
  85. }
  86. /**
  87. * @description 隐藏XYZ图层数据
  88. * @memberof XYZLayer
  89. */
  90. hide(){
  91. const vm = this
  92. vm.layer.setVisible(false)
  93. }
  94. /**
  95. * @description 缩放到过滤后的地图要素对应范围
  96. * @memberof XYZLayer
  97. */
  98. zoomTo() {
  99. const vm = this
  100. }
  101. }
  102. export default XYZLayer