GeoJsonLayer.js 2.3 KB

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