@antv/l7-layers 2.8.35 → 2.8.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (183) hide show
  1. package/es/Geometry/models/billboard.d.ts +0 -3
  2. package/es/Geometry/models/billboard.js +0 -9
  3. package/es/Geometry/models/billboard.js.map +1 -1
  4. package/es/Geometry/models/sprite.js +2 -2
  5. package/es/core/BaseLayer.d.ts +2 -2
  6. package/es/core/BaseLayer.js.map +1 -1
  7. package/es/core/LayerGroup.d.ts +2 -1
  8. package/es/core/LayerGroup.js +5 -0
  9. package/es/core/LayerGroup.js.map +1 -1
  10. package/es/core/interface.d.ts +25 -2
  11. package/es/core/interface.js.map +1 -1
  12. package/es/image/models/image.js.map +1 -1
  13. package/es/index.d.ts +2 -2
  14. package/es/index.js +2 -2
  15. package/es/index.js.map +1 -1
  16. package/es/line/models/arc.js +4 -4
  17. package/es/line/models/arc.js.map +1 -1
  18. package/es/line/models/arc_3d.js +4 -5
  19. package/es/line/models/arc_3d.js.map +1 -1
  20. package/es/line/models/arcmini.js +5 -5
  21. package/es/line/models/arcmini.js.map +1 -1
  22. package/es/line/models/great_circle.js +3 -3
  23. package/es/line/models/great_circle.js.map +1 -1
  24. package/es/line/models/line.js +3 -3
  25. package/es/line/models/line.js.map +1 -1
  26. package/es/line/models/linearline.js +3 -3
  27. package/es/line/models/linearline.js.map +1 -1
  28. package/es/line/models/simpleLine.js +8 -8
  29. package/es/line/models/simpleLine.js.map +1 -1
  30. package/es/line/models/wall.js +5 -5
  31. package/es/line/models/wall.js.map +1 -1
  32. package/es/mask/index.d.ts +1 -4
  33. package/es/mask/index.js.map +1 -1
  34. package/es/mask/models/fill.js.map +1 -1
  35. package/es/plugins/FeatureScalePlugin.js.map +1 -1
  36. package/es/point/models/extrude.js +3 -4
  37. package/es/point/models/extrude.js.map +1 -1
  38. package/es/point/models/fill.js +3 -4
  39. package/es/point/models/fill.js.map +1 -1
  40. package/es/point/models/fillmage.d.ts +1 -1
  41. package/es/point/models/fillmage.js +6 -21
  42. package/es/point/models/fillmage.js.map +1 -1
  43. package/es/point/models/icon-font.js +1 -1
  44. package/es/point/models/image.js +4 -4
  45. package/es/point/models/image.js.map +1 -1
  46. package/es/point/models/normal.js +1 -2
  47. package/es/point/models/normal.js.map +1 -1
  48. package/es/point/models/radar.js +5 -18
  49. package/es/point/models/radar.js.map +1 -1
  50. package/es/point/models/simplePoint.js +5 -6
  51. package/es/point/models/simplePoint.js.map +1 -1
  52. package/es/point/models/text.js +4 -4
  53. package/es/point/models/text.js.map +1 -1
  54. package/es/polygon/models/extrude.js +2 -3
  55. package/es/polygon/models/extrude.js.map +1 -1
  56. package/es/polygon/models/fill.d.ts +1 -0
  57. package/es/polygon/models/fill.js +37 -12
  58. package/es/polygon/models/fill.js.map +1 -1
  59. package/es/polygon/models/ocean.js +3 -4
  60. package/es/polygon/models/ocean.js.map +1 -1
  61. package/es/polygon/models/water.js +3 -4
  62. package/es/polygon/models/water.js.map +1 -1
  63. package/es/raster/index.d.ts +3 -3
  64. package/es/raster/index.js +16 -6
  65. package/es/raster/index.js.map +1 -1
  66. package/es/raster/models/index.d.ts +1 -1
  67. package/es/raster/models/index.js +3 -1
  68. package/es/raster/models/index.js.map +1 -1
  69. package/es/raster/models/raste-tile.d.ts +23 -0
  70. package/es/raster/models/raste-tile.js +285 -0
  71. package/es/raster/models/raste-tile.js.map +1 -0
  72. package/es/raster/models/raster.js +2 -0
  73. package/es/raster/models/raster.js.map +1 -1
  74. package/es/wind/index.d.ts +1 -17
  75. package/es/wind/index.js.map +1 -1
  76. package/es/wind/models/utils.d.ts +12 -12
  77. package/es/wind/models/utils.js +6 -5
  78. package/es/wind/models/utils.js.map +1 -1
  79. package/es/wind/models/wind.js.map +1 -1
  80. package/es/wind/models/windRender.js.map +1 -1
  81. package/lib/Geometry/models/billboard.js +0 -6
  82. package/lib/Geometry/models/billboard.js.map +1 -1
  83. package/lib/Geometry/models/sprite.js +2 -2
  84. package/lib/core/BaseLayer.js.map +1 -1
  85. package/lib/core/LayerGroup.js +5 -0
  86. package/lib/core/LayerGroup.js.map +1 -1
  87. package/lib/core/interface.js.map +1 -1
  88. package/lib/image/models/image.js.map +1 -1
  89. package/lib/index.js +29 -8
  90. package/lib/index.js.map +1 -1
  91. package/lib/line/models/arc.js +4 -5
  92. package/lib/line/models/arc.js.map +1 -1
  93. package/lib/line/models/arc_3d.js +4 -6
  94. package/lib/line/models/arc_3d.js.map +1 -1
  95. package/lib/line/models/arcmini.js +5 -6
  96. package/lib/line/models/arcmini.js.map +1 -1
  97. package/lib/line/models/great_circle.js +3 -4
  98. package/lib/line/models/great_circle.js.map +1 -1
  99. package/lib/line/models/line.js +3 -4
  100. package/lib/line/models/line.js.map +1 -1
  101. package/lib/line/models/linearline.js +3 -4
  102. package/lib/line/models/linearline.js.map +1 -1
  103. package/lib/line/models/simpleLine.js +8 -9
  104. package/lib/line/models/simpleLine.js.map +1 -1
  105. package/lib/line/models/wall.js +5 -6
  106. package/lib/line/models/wall.js.map +1 -1
  107. package/lib/mask/index.js.map +1 -1
  108. package/lib/mask/models/fill.js.map +1 -1
  109. package/lib/plugins/FeatureScalePlugin.js.map +1 -1
  110. package/lib/point/models/extrude.js +3 -5
  111. package/lib/point/models/extrude.js.map +1 -1
  112. package/lib/point/models/fill.js +3 -5
  113. package/lib/point/models/fill.js.map +1 -1
  114. package/lib/point/models/fillmage.js +7 -23
  115. package/lib/point/models/fillmage.js.map +1 -1
  116. package/lib/point/models/icon-font.js +1 -1
  117. package/lib/point/models/image.js +4 -5
  118. package/lib/point/models/image.js.map +1 -1
  119. package/lib/point/models/normal.js +1 -3
  120. package/lib/point/models/normal.js.map +1 -1
  121. package/lib/point/models/radar.js +5 -19
  122. package/lib/point/models/radar.js.map +1 -1
  123. package/lib/point/models/simplePoint.js +5 -7
  124. package/lib/point/models/simplePoint.js.map +1 -1
  125. package/lib/point/models/text.js +4 -5
  126. package/lib/point/models/text.js.map +1 -1
  127. package/lib/polygon/models/extrude.js +2 -4
  128. package/lib/polygon/models/extrude.js.map +1 -1
  129. package/lib/polygon/models/fill.js +37 -13
  130. package/lib/polygon/models/fill.js.map +1 -1
  131. package/lib/polygon/models/ocean.js +3 -5
  132. package/lib/polygon/models/ocean.js.map +1 -1
  133. package/lib/polygon/models/water.js +3 -5
  134. package/lib/polygon/models/water.js.map +1 -1
  135. package/lib/raster/index.js +16 -6
  136. package/lib/raster/index.js.map +1 -1
  137. package/lib/raster/models/index.js +4 -1
  138. package/lib/raster/models/index.js.map +1 -1
  139. package/lib/raster/models/raste-tile.js +294 -0
  140. package/lib/raster/models/raste-tile.js.map +1 -0
  141. package/lib/raster/models/raster.js +2 -0
  142. package/lib/raster/models/raster.js.map +1 -1
  143. package/lib/wind/index.js.map +1 -1
  144. package/lib/wind/models/utils.js +6 -5
  145. package/lib/wind/models/utils.js.map +1 -1
  146. package/lib/wind/models/wind.js.map +1 -1
  147. package/lib/wind/models/windRender.js.map +1 -1
  148. package/package.json +5 -6
  149. package/es/imagetile/index.d.ts +0 -22
  150. package/es/imagetile/index.js +0 -82
  151. package/es/imagetile/index.js.map +0 -1
  152. package/es/imagetile/models/imagetile.d.ts +0 -12
  153. package/es/imagetile/models/imagetile.js +0 -133
  154. package/es/imagetile/models/imagetile.js.map +0 -1
  155. package/es/imagetile/models/index.d.ts +0 -5
  156. package/es/imagetile/models/index.js +0 -6
  157. package/es/imagetile/models/index.js.map +0 -1
  158. package/es/imagetile/utils/ImageTile.d.ts +0 -20
  159. package/es/imagetile/utils/ImageTile.js +0 -92
  160. package/es/imagetile/utils/ImageTile.js.map +0 -1
  161. package/es/imagetile/utils/Tile.d.ts +0 -27
  162. package/es/imagetile/utils/Tile.js +0 -313
  163. package/es/imagetile/utils/Tile.js.map +0 -1
  164. package/es/imagetile/utils/lruCache.d.ts +0 -20
  165. package/es/imagetile/utils/lruCache.js +0 -105
  166. package/es/imagetile/utils/lruCache.js.map +0 -1
  167. package/es/imagetile/utils/tileCache.d.ts +0 -8
  168. package/es/imagetile/utils/tileCache.js +0 -50
  169. package/es/imagetile/utils/tileCache.js.map +0 -1
  170. package/lib/imagetile/index.js +0 -95
  171. package/lib/imagetile/index.js.map +0 -1
  172. package/lib/imagetile/models/imagetile.js +0 -146
  173. package/lib/imagetile/models/imagetile.js.map +0 -1
  174. package/lib/imagetile/models/index.js +0 -17
  175. package/lib/imagetile/models/index.js.map +0 -1
  176. package/lib/imagetile/utils/ImageTile.js +0 -101
  177. package/lib/imagetile/utils/ImageTile.js.map +0 -1
  178. package/lib/imagetile/utils/Tile.js +0 -316
  179. package/lib/imagetile/utils/Tile.js.map +0 -1
  180. package/lib/imagetile/utils/lruCache.js +0 -109
  181. package/lib/imagetile/utils/lruCache.js.map +0 -1
  182. package/lib/imagetile/utils/tileCache.js +0 -58
  183. package/lib/imagetile/utils/tileCache.js.map +0 -1
@@ -1,146 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
-
10
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
-
12
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
-
14
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
-
16
- var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
17
-
18
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
19
-
20
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
21
-
22
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
23
-
24
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
25
-
26
- var _BaseModel2 = _interopRequireDefault(require("../../core/BaseModel"));
27
-
28
- var _Tile = _interopRequireDefault(require("../utils/Tile"));
29
-
30
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
31
-
32
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
33
-
34
- var ImageTileModel = function (_BaseModel) {
35
- (0, _inherits2.default)(ImageTileModel, _BaseModel);
36
-
37
- var _super = _createSuper(ImageTileModel);
38
-
39
- function ImageTileModel() {
40
- var _this;
41
-
42
- (0, _classCallCheck2.default)(this, ImageTileModel);
43
-
44
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
45
- args[_key] = arguments[_key];
46
- }
47
-
48
- _this = _super.call.apply(_super, [this].concat(args));
49
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "tileLayer", void 0);
50
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "timestamp", void 0);
51
- return _this;
52
- }
53
-
54
- (0, _createClass2.default)(ImageTileModel, [{
55
- key: "getUninforms",
56
- value: function getUninforms() {
57
- return {};
58
- }
59
- }, {
60
- key: "tile",
61
- value: function tile() {
62
- var _this$mapService$getB = this.mapService.getBounds(),
63
- _this$mapService$getB2 = (0, _slicedToArray2.default)(_this$mapService$getB, 2),
64
- WS = _this$mapService$getB2[0],
65
- EN = _this$mapService$getB2[1];
66
-
67
- var NE = {
68
- lng: EN[0],
69
- lat: EN[1]
70
- };
71
- var SW = {
72
- lng: WS[0],
73
- lat: WS[1]
74
- };
75
- this.tileLayer.calCurrentTiles({
76
- NE: NE,
77
- SW: SW,
78
- tileCenter: this.mapService.getCenter(),
79
- currentZoom: this.mapService.getZoom(),
80
- minSourceZoom: this.mapService.getMinZoom(),
81
- minZoom: this.mapService.getMinZoom(),
82
- maxZoom: this.mapService.getMaxZoom()
83
- });
84
- }
85
- }, {
86
- key: "initModels",
87
- value: function initModels() {
88
- var _this2 = this;
89
-
90
- this.layer.zIndex = -999;
91
-
92
- var _ref = this.layer.getLayerConfig(),
93
- _ref$resolution = _ref.resolution,
94
- resolution = _ref$resolution === void 0 ? 'low' : _ref$resolution,
95
- _ref$maxSourceZoom = _ref.maxSourceZoom,
96
- maxSourceZoom = _ref$maxSourceZoom === void 0 ? 17 : _ref$maxSourceZoom;
97
-
98
- var source = this.layer.getSource();
99
-
100
- if (source.data.tileurl) {
101
- this.tileLayer = new _Tile.default({
102
- url: source.data.tileurl,
103
- layerService: this.layerService,
104
- layer: this.layer,
105
- resolution: resolution,
106
- maxSourceZoom: maxSourceZoom,
107
- crstype: 'epsg3857'
108
- });
109
- this.tile();
110
- this.mapService.on('mapchange', function (e) {
111
- if (_this2.timestamp) {
112
- clearTimeout(_this2.timestamp);
113
- _this2.timestamp = null;
114
- }
115
-
116
- _this2.timestamp = setTimeout(function () {
117
- if (_this2.mapService.getZoom() >= 2.0) {
118
- _this2.tile();
119
- }
120
- }, 500);
121
- });
122
- }
123
-
124
- return [];
125
- }
126
- }, {
127
- key: "clearModels",
128
- value: function clearModels() {
129
- this.tileLayer.removeTiles();
130
- }
131
- }, {
132
- key: "buildModels",
133
- value: function buildModels() {
134
- return this.initModels();
135
- }
136
- }, {
137
- key: "registerBuiltinAttributes",
138
- value: function registerBuiltinAttributes() {
139
- return;
140
- }
141
- }]);
142
- return ImageTileModel;
143
- }(_BaseModel2.default);
144
-
145
- exports.default = ImageTileModel;
146
- //# sourceMappingURL=imagetile.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/imagetile/models/imagetile.ts"],"names":["ImageTileModel","mapService","getBounds","WS","EN","NE","lng","lat","SW","tileLayer","calCurrentTiles","tileCenter","getCenter","currentZoom","getZoom","minSourceZoom","getMinZoom","minZoom","maxZoom","getMaxZoom","layer","zIndex","getLayerConfig","resolution","maxSourceZoom","source","getSource","data","tileurl","Tile","url","layerService","crstype","tile","on","e","timestamp","clearTimeout","setTimeout","removeTiles","initModels","BaseModel"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AACA;;;;;;IAOqBA,c;;;;;;;;;;;;;;;;;;;;;;WAGnB,wBAAqC;AACnC,aAAO,EAAP;AACD;;;WAGD,gBAAc;AACZ,kCAAiB,KAAKC,UAAL,CAAgBC,SAAhB,EAAjB;AAAA;AAAA,UAAOC,EAAP;AAAA,UAAWC,EAAX;;AACA,UAAMC,EAAE,GAAG;AAAEC,QAAAA,GAAG,EAAEF,EAAE,CAAC,CAAD,CAAT;AAAcG,QAAAA,GAAG,EAAEH,EAAE,CAAC,CAAD;AAArB,OAAX;AACA,UAAMI,EAAE,GAAG;AAAEF,QAAAA,GAAG,EAAEH,EAAE,CAAC,CAAD,CAAT;AAAcI,QAAAA,GAAG,EAAEJ,EAAE,CAAC,CAAD;AAArB,OAAX;AACA,WAAKM,SAAL,CAAeC,eAAf,CAA+B;AAC7BL,QAAAA,EAAE,EAAFA,EAD6B;AAE7BG,QAAAA,EAAE,EAAFA,EAF6B;AAG7BG,QAAAA,UAAU,EAAE,KAAKV,UAAL,CAAgBW,SAAhB,EAHiB;AAI7BC,QAAAA,WAAW,EAAE,KAAKZ,UAAL,CAAgBa,OAAhB,EAJgB;AAK7BC,QAAAA,aAAa,EAAE,KAAKd,UAAL,CAAgBe,UAAhB,EALc;AAM7BC,QAAAA,OAAO,EAAE,KAAKhB,UAAL,CAAgBe,UAAhB,EANoB;AAO7BE,QAAAA,OAAO,EAAE,KAAKjB,UAAL,CAAgBkB,UAAhB;AAPoB,OAA/B;AASD;;;WAED,sBAAoB;AAAA;;AAElB,WAAKC,KAAL,CAAWC,MAAX,GAAoB,CAAC,GAArB;;AACA,iBAGI,KAAKD,KAAL,CAAWE,cAAX,EAHJ;AAAA,iCACEC,UADF;AAAA,UACEA,UADF,gCACe,KADf;AAAA,oCAEEC,aAFF;AAAA,UAEEA,aAFF,mCAEkB,EAFlB;;AAIA,UAAMC,MAAM,GAAG,KAAKL,KAAL,CAAWM,SAAX,EAAf;;AAEA,UAAID,MAAM,CAACE,IAAP,CAAYC,OAAhB,EAAyB;AACvB,aAAKnB,SAAL,GAAiB,IAAIoB,aAAJ,CAAS;AACxBC,UAAAA,GAAG,EAAEL,MAAM,CAACE,IAAP,CAAYC,OADO;AAExBG,UAAAA,YAAY,EAAE,KAAKA,YAFK;AAGxBX,UAAAA,KAAK,EAAE,KAAKA,KAHY;AAIxBG,UAAAA,UAAU,EAAVA,UAJwB;AAKxBC,UAAAA,aAAa,EAAbA,aALwB;AAOxBQ,UAAAA,OAAO,EAAE;AAPe,SAAT,CAAjB;AAWA,aAAKC,IAAL;AAEA,aAAKhC,UAAL,CAAgBiC,EAAhB,CAAmB,WAAnB,EAAgC,UAACC,CAAD,EAAO;AACrC,cAAI,MAAI,CAACC,SAAT,EAAoB;AAClBC,YAAAA,YAAY,CAAC,MAAI,CAACD,SAAN,CAAZ;AACA,YAAA,MAAI,CAACA,SAAL,GAAiB,IAAjB;AACD;;AAED,UAAA,MAAI,CAACA,SAAL,GAAiBE,UAAU,CAAC,YAAM;AAEhC,gBAAI,MAAI,CAACrC,UAAL,CAAgBa,OAAhB,MAA6B,GAAjC,EAAsC;AACpC,cAAA,MAAI,CAACmB,IAAL;AACD;AACF,WAL0B,EAKxB,GALwB,CAA3B;AAMD,SAZD;AAaD;;AAED,aAAO,EAAP;AACD;;;WAED,uBAAqB;AACnB,WAAKxB,SAAL,CAAe8B,WAAf;AACD;;;WAED,uBAAqB;AACnB,aAAO,KAAKC,UAAL,EAAP;AACD;;;WAED,qCAAsC;AACpC;AACD;;;EA1EyCC,mB","sourcesContent":["import { gl, IModelUniform } from '@antv/l7-core';\nimport BaseModel from '../../core/BaseModel';\nimport Tile from '../utils/Tile';\n\ninterface IImageLayerStyleOptions {\n resolution: string;\n maxSourceZoom: number;\n}\n\nexport default class ImageTileModel extends BaseModel {\n public tileLayer: any;\n private timestamp: number | null;\n public getUninforms(): IModelUniform {\n return {};\n }\n\n // 瓦片方法\n public tile() {\n const [WS, EN] = this.mapService.getBounds();\n const NE = { lng: EN[0], lat: EN[1] };\n const SW = { lng: WS[0], lat: WS[1] };\n this.tileLayer.calCurrentTiles({\n NE,\n SW,\n tileCenter: this.mapService.getCenter(),\n currentZoom: this.mapService.getZoom(),\n minSourceZoom: this.mapService.getMinZoom(),\n minZoom: this.mapService.getMinZoom(),\n maxZoom: this.mapService.getMaxZoom(),\n });\n }\n\n public initModels() {\n // TODO: 瓦片组件默认在最下层\n this.layer.zIndex = -999;\n const {\n resolution = 'low',\n maxSourceZoom = 17,\n } = this.layer.getLayerConfig() as IImageLayerStyleOptions;\n const source = this.layer.getSource();\n // 当存在 url 的时候生效\n if (source.data.tileurl) {\n this.tileLayer = new Tile({\n url: source.data.tileurl,\n layerService: this.layerService,\n layer: this.layer,\n resolution,\n maxSourceZoom,\n // Tip: 当前为 default\n crstype: 'epsg3857',\n });\n\n // TODO: 首次加载的时候请求瓦片\n this.tile();\n\n this.mapService.on('mapchange', (e) => {\n if (this.timestamp) {\n clearTimeout(this.timestamp);\n this.timestamp = null;\n }\n // @ts-ignore 节流\n this.timestamp = setTimeout(() => {\n // TODO: 瓦片地图最大层级为 2\n if (this.mapService.getZoom() >= 2.0) {\n this.tile();\n }\n }, 500);\n });\n }\n\n return [];\n }\n\n public clearModels() {\n this.tileLayer.removeTiles();\n }\n\n public buildModels() {\n return this.initModels();\n }\n\n protected registerBuiltinAttributes() {\n return;\n }\n}\n"],"file":"imagetile.js"}
@@ -1,17 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
-
10
- var _imagetile = _interopRequireDefault(require("./imagetile"));
11
-
12
- var ImageTileModels = {
13
- imageTile: _imagetile.default
14
- };
15
- var _default = ImageTileModels;
16
- exports.default = _default;
17
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/imagetile/models/index.ts"],"names":["ImageTileModels","imageTile","ImageTileModel"],"mappings":";;;;;;;;;AAAA;;AAGA,IAAMA,eAAqD,GAAG;AAC5DC,EAAAA,SAAS,EAAEC;AADiD,CAA9D;eAIeF,e","sourcesContent":["import ImageTileModel from './imagetile';\nexport type ImageTileModelType = 'imageTile';\n\nconst ImageTileModels: { [key in ImageTileModelType]: any } = {\n imageTile: ImageTileModel,\n};\n\nexport default ImageTileModels;\n"],"file":"index.js"}
@@ -1,101 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
-
10
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
-
12
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
-
14
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
-
16
- var _geoCoord = require("@antv/geo-coord");
17
-
18
- var _image = _interopRequireDefault(require("../../image"));
19
-
20
- var r2d = 180 / Math.PI;
21
- var tileURLRegex = /\{([zxy])\}/g;
22
-
23
- var ImageTile = function () {
24
- function ImageTile(key, url, container, sceneContainer) {
25
- (0, _classCallCheck2.default)(this, ImageTile);
26
- (0, _defineProperty2.default)(this, "tile", void 0);
27
- (0, _defineProperty2.default)(this, "name", void 0);
28
- (0, _defineProperty2.default)(this, "imageLayer", void 0);
29
- this.name = key;
30
- this.tile = key.split('_').map(function (v) {
31
- return Number(v);
32
- });
33
- var urlParams = {
34
- x: this.tile[0],
35
- y: this.tile[1],
36
- z: this.tile[2]
37
- };
38
- var imageSrc = this.getTileURL(urlParams, url);
39
- var lnglatBounds = this.tileLnglatBounds(this.tile);
40
- var west = lnglatBounds.getWest();
41
- var south = lnglatBounds.getSouth();
42
- var east = lnglatBounds.getEast();
43
- var north = lnglatBounds.getNorth();
44
- var imageLayer = new _image.default({
45
- zIndex: -999
46
- });
47
- imageLayer.source(imageSrc, {
48
- parser: {
49
- type: 'image',
50
- extent: [west, south, east, north]
51
- }
52
- });
53
- imageLayer.setContainer(container, sceneContainer);
54
- imageLayer.init();
55
- this.imageLayer = imageLayer;
56
- }
57
-
58
- (0, _createClass2.default)(ImageTile, [{
59
- key: "destroy",
60
- value: function destroy() {
61
- this.imageLayer.clearModels();
62
- this.imageLayer.destroy();
63
- }
64
- }, {
65
- key: "getTileURL",
66
- value: function getTileURL(urlParams, path) {
67
- if (!urlParams.s) {
68
- urlParams.s = String.fromCharCode(97 + Math.floor(Math.random() * 3));
69
- }
70
-
71
- tileURLRegex.lastIndex = 0;
72
- return path.replace(tileURLRegex, function (value, key) {
73
- return urlParams[key];
74
- });
75
- }
76
- }, {
77
- key: "tileLnglatBounds",
78
- value: function tileLnglatBounds(tile) {
79
- var e = this.tile2lng(tile[0] + 1, tile[2]);
80
- var w = this.tile2lng(tile[0], tile[2]);
81
- var s = this.tile2lat(tile[1] + 1, tile[2]);
82
- var n = this.tile2lat(tile[1], tile[2]);
83
- return (0, _geoCoord.toLngLatBounds)([w, n], [e, s]);
84
- }
85
- }, {
86
- key: "tile2lng",
87
- value: function tile2lng(x, z) {
88
- return x / Math.pow(2, z) * 360 - 180;
89
- }
90
- }, {
91
- key: "tile2lat",
92
- value: function tile2lat(y, z) {
93
- var n = Math.PI - 2 * Math.PI * y / Math.pow(2, z);
94
- return r2d * Math.atan(0.5 * (Math.exp(n) - Math.exp(-n)));
95
- }
96
- }]);
97
- return ImageTile;
98
- }();
99
-
100
- exports.default = ImageTile;
101
- //# sourceMappingURL=ImageTile.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/imagetile/utils/ImageTile.ts"],"names":["r2d","Math","PI","tileURLRegex","ImageTile","key","url","container","sceneContainer","name","tile","split","map","v","Number","urlParams","x","y","z","imageSrc","getTileURL","lnglatBounds","tileLnglatBounds","west","getWest","south","getSouth","east","getEast","north","getNorth","imageLayer","ImageLayer","zIndex","source","parser","type","extent","setContainer","init","clearModels","destroy","path","s","String","fromCharCode","floor","random","lastIndex","replace","value","e","tile2lng","w","tile2lat","n","pow","atan","exp"],"mappings":"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","sourcesContent":["import { LngLatBounds, toBounds, toLngLatBounds } from '@antv/geo-coord';\nimport { Container } from 'inversify';\nimport ImageLayer from '../../image';\n\ninterface IUrlParams {\n x: number;\n y: number;\n z: number;\n s?: string;\n}\n\nconst r2d = 180 / Math.PI;\nconst tileURLRegex = /\\{([zxy])\\}/g;\n\nexport default class ImageTile {\n public tile: number[]; // 当前图片瓦片的索引\n public name: string;\n public imageLayer: any;\n constructor(\n key: string,\n url: string,\n container: Container,\n sceneContainer: Container,\n ) {\n this.name = key;\n this.tile = key.split('_').map((v) => Number(v));\n\n const urlParams = {\n x: this.tile[0],\n y: this.tile[1],\n z: this.tile[2],\n };\n const imageSrc = this.getTileURL(urlParams, url);\n\n const lnglatBounds = this.tileLnglatBounds(this.tile);\n const west = lnglatBounds.getWest();\n const south = lnglatBounds.getSouth();\n const east = lnglatBounds.getEast();\n const north = lnglatBounds.getNorth();\n\n const imageLayer = new ImageLayer({ zIndex: -999 });\n imageLayer.source(\n // 'https://gw.alipayobjects.com/zos/rmsportal/FnHFeFklTzKDdUESRNDv.jpg',\n imageSrc,\n {\n parser: {\n type: 'image',\n // extent: [121.168, 30.2828, 121.384, 30.4219],\n extent: [west, south, east, north],\n },\n },\n );\n\n imageLayer.setContainer(container, sceneContainer);\n imageLayer.init();\n\n this.imageLayer = imageLayer;\n }\n\n public destroy() {\n this.imageLayer.clearModels();\n this.imageLayer.destroy();\n }\n\n public getTileURL(urlParams: IUrlParams, path: string) {\n if (!urlParams.s) {\n // Default to a random choice of a, b or c\n urlParams.s = String.fromCharCode(97 + Math.floor(Math.random() * 3));\n }\n\n tileURLRegex.lastIndex = 0;\n return path.replace(tileURLRegex, (value, key: any) => {\n // @ts-ignore\n return urlParams[key];\n });\n }\n\n // Get tile bounds in WGS84 coordinates\n public tileLnglatBounds(tile: number[]) {\n const e = this.tile2lng(tile[0] + 1, tile[2]);\n const w = this.tile2lng(tile[0], tile[2]);\n const s = this.tile2lat(tile[1] + 1, tile[2]);\n const n = this.tile2lat(tile[1], tile[2]);\n return toLngLatBounds([w, n], [e, s]);\n }\n\n public tile2lng(x: number, z: number) {\n return (x / Math.pow(2, z)) * 360 - 180;\n }\n\n public tile2lat(y: number, z: number) {\n const n = Math.PI - (2 * Math.PI * y) / Math.pow(2, z);\n return r2d * Math.atan(0.5 * (Math.exp(n) - Math.exp(-n)));\n }\n}\n"],"file":"ImageTile.js"}
@@ -1,316 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
-
10
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
-
12
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
-
14
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
-
16
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
17
-
18
- var _geoCoord = require("@antv/geo-coord");
19
-
20
- var _l7Core = require("@antv/l7-core");
21
-
22
- var _ImageTile = _interopRequireDefault(require("./ImageTile"));
23
-
24
- var _tileCache = _interopRequireDefault(require("./tileCache"));
25
-
26
- var CacheLimit = 30;
27
-
28
- var Tile = function () {
29
- function Tile(props) {
30
- (0, _classCallCheck2.default)(this, Tile);
31
- (0, _defineProperty2.default)(this, "tileList", {});
32
- (0, _defineProperty2.default)(this, "tileCache", void 0);
33
- (0, _defineProperty2.default)(this, "updateTileList", void 0);
34
- (0, _defineProperty2.default)(this, "tileZoom", void 0);
35
- (0, _defineProperty2.default)(this, "noPruneRange", void 0);
36
- (0, _defineProperty2.default)(this, "url", void 0);
37
- (0, _defineProperty2.default)(this, "resolution", void 0);
38
- (0, _defineProperty2.default)(this, "maxSourceZoom", void 0);
39
- (0, _defineProperty2.default)(this, "crstype", void 0);
40
- (0, _defineProperty2.default)(this, "currentCrs", void 0);
41
- (0, _defineProperty2.default)(this, "layerService", void 0);
42
- (0, _defineProperty2.default)(this, "layer", void 0);
43
- this.layerService = props.layerService;
44
- this.layer = props.layer;
45
- this.url = props.url;
46
- this.resolution = props.resolution === 'low' ? -1 : 0;
47
- this.maxSourceZoom = props.maxSourceZoom;
48
- this.crstype = props.crstype;
49
- this.currentCrs = new _geoCoord.GeoCoordinates.default({
50
- start: {
51
- x: 0,
52
- y: 0
53
- },
54
- end: {
55
- x: 0,
56
- y: 0
57
- },
58
- projection: this.crstype
59
- }).crs;
60
- this.destroyTile = this.destroyTile.bind(this);
61
- this.tileCache = new _tileCache.default(CacheLimit, this.destroyTile);
62
- this.updateTileList = [];
63
- this.removeTiles = this.removeTiles.bind(this);
64
- }
65
-
66
- (0, _createClass2.default)(Tile, [{
67
- key: "calCurrentTiles",
68
- value: function calCurrentTiles(oprions) {
69
- var _this = this;
70
-
71
- var NE = oprions.NE,
72
- SW = oprions.SW,
73
- tileCenter = oprions.tileCenter,
74
- currentZoom = oprions.currentZoom,
75
- minSourceZoom = oprions.minSourceZoom,
76
- minZoom = oprions.minZoom,
77
- maxZoom = oprions.maxZoom;
78
-
79
- if (currentZoom >= this.maxSourceZoom) {
80
- return;
81
- }
82
-
83
- var zoom = Math.floor(currentZoom) + this.resolution;
84
- this.tileZoom = zoom > this.maxSourceZoom ? this.maxSourceZoom : zoom;
85
-
86
- if (currentZoom < minZoom || currentZoom >= maxZoom || currentZoom < minSourceZoom) {
87
- this.removeTiles();
88
- return;
89
- }
90
-
91
- this.updateTileList = [];
92
- var centerPoint = this.currentCrs.lngLatToPoint((0, _geoCoord.toLngLat)(tileCenter.lng, tileCenter.lat), this.tileZoom);
93
- var centerXY = centerPoint.divideBy(256).floor();
94
- var pixelBounds = this.getPixelBounds(NE, SW, tileCenter, this.tileZoom, this.currentCrs);
95
- var tileRange = this.pxBoundsToTileRange(pixelBounds);
96
- var margin = 4;
97
- this.noPruneRange = new _geoCoord.Bounds(tileRange.getBottomLeft().subtract([margin, -margin]), tileRange.getTopRight().add([margin, -margin]));
98
-
99
- if (!(isFinite(tileRange.min.x) && isFinite(tileRange.min.y) && isFinite(tileRange.max.x) && isFinite(tileRange.max.y))) {
100
- throw new Error('Attempted to load an infinite number of tiles');
101
- }
102
-
103
- for (var j = tileRange.min.y; j <= tileRange.max.y; j++) {
104
- for (var i = tileRange.min.x; i <= tileRange.max.x; i++) {
105
- var coords = [i, j, this.tileZoom];
106
- var tile = this.tileList[coords.join('_')];
107
-
108
- if (tile) {
109
- tile.current = true;
110
- } else {
111
- this.tileList[coords.join('_')] = {
112
- current: true,
113
- coords: coords
114
- };
115
- this.updateTileList.push(coords);
116
- }
117
- }
118
- }
119
-
120
- this.updateTileList.sort(function (a, b) {
121
- var tile1 = a;
122
- var tile2 = b;
123
- var d1 = Math.pow(tile1[0] * 1 - centerXY.x, 2) + Math.pow(tile1[1] * 1 - centerXY.y, 2);
124
- var d2 = Math.pow(tile2[0] * 1 - centerXY.x, 2) + Math.pow(tile2[1] * 1 - centerXY.y, 2);
125
- return d1 - d2;
126
- });
127
- this.pruneTiles();
128
- this.updateTileList.forEach(function (coords) {
129
- var key = coords.join('_');
130
-
131
- if (_this.tileList[key].current) {
132
- _this.requestTile(key);
133
- }
134
- });
135
- }
136
- }, {
137
- key: "pxBoundsToTileRange",
138
- value: function pxBoundsToTileRange(pixelBounds) {
139
- return new _geoCoord.Bounds(pixelBounds.min.divideBy(256).floor(), pixelBounds.max.divideBy(256).ceil().subtract([1, 1]));
140
- }
141
- }, {
142
- key: "getPixelBounds",
143
- value: function getPixelBounds(NE, SW, tileCenter, tileZoom, crs) {
144
- var zoom = tileZoom;
145
- var NEPoint = crs.lngLatToPoint((0, _geoCoord.toLngLat)(NE.lng, NE.lat), zoom);
146
- var SWPoint = crs.lngLatToPoint((0, _geoCoord.toLngLat)(SW.lng, SW.lat), zoom);
147
- var centerPoint = crs.lngLatToPoint((0, _geoCoord.toLngLat)(tileCenter.lng, tileCenter.lat), zoom);
148
- var topHeight = centerPoint.y - NEPoint.y;
149
- var bottomHeight = SWPoint.y - centerPoint.y;
150
- var leftWidth;
151
- var rightWidth;
152
-
153
- if (tileCenter.lng - NE.lng > 0 || tileCenter.lng - SW.lng < 0) {
154
- var width = Math.pow(2, zoom) * 256 / 360 * (180 - NE.lng) + Math.pow(2, zoom) * 256 / 360 * (SW.lng + 180);
155
-
156
- if (tileCenter.lng - NE.lng > 0) {
157
- leftWidth = Math.pow(2, zoom) * 256 / 360 * (tileCenter.lng - NE.lng);
158
- rightWidth = width - leftWidth;
159
- } else {
160
- rightWidth = Math.pow(2, zoom) * 256 / 360 * (SW.lng - tileCenter.lng);
161
- leftWidth = width - rightWidth;
162
- }
163
- } else {
164
- leftWidth = Math.pow(2, zoom) * 256 / 360 * (tileCenter.lng - SW.lng);
165
- rightWidth = Math.pow(2, zoom) * 256 / 360 * (NE.lng - tileCenter.lng);
166
- }
167
-
168
- var pixelBounds = new _geoCoord.Bounds(centerPoint.subtract(leftWidth, topHeight), centerPoint.add(rightWidth, bottomHeight));
169
- return pixelBounds;
170
- }
171
- }, {
172
- key: "pruneTiles",
173
- value: function pruneTiles() {
174
- var _this2 = this;
175
-
176
- Object.keys(this.tileList).map(function (key) {
177
- var c = _this2.tileList[key].coords;
178
-
179
- if (c[2] !== _this2.tileZoom || !_this2.noPruneRange.contains(new _geoCoord.Point(c[0], c[1]))) {
180
- _this2.tileList[key].current = false;
181
- }
182
- });
183
- Object.keys(this.tileList).map(function (key) {
184
- var tile = _this2.tileList[key];
185
- tile.retain = tile.current;
186
- });
187
- Object.keys(this.tileList).map(function (key) {
188
- var tile = _this2.tileList[key];
189
-
190
- if (tile.current && !tile.active) {
191
- var _key$split$map = key.split('_').map(function (v) {
192
- return Number(v);
193
- }),
194
- _key$split$map2 = (0, _slicedToArray2.default)(_key$split$map, 3),
195
- x = _key$split$map2[0],
196
- y = _key$split$map2[1],
197
- z = _key$split$map2[2];
198
-
199
- if (!_this2.retainParent(x, y, z, z - 5)) {
200
- _this2.retainChildren(x, y, z, z + 2);
201
- }
202
- }
203
- });
204
- this.removeOutTiles();
205
- }
206
- }, {
207
- key: "requestTile",
208
- value: function requestTile(key) {
209
- var t = this.tileList[key];
210
-
211
- if (!t) {
212
- return;
213
- }
214
-
215
- var tile = this.tileCache.getTile(key);
216
-
217
- if (!tile) {
218
- var container = (0, _l7Core.createLayerContainer)(this.layer.sceneContainer);
219
- tile = new _ImageTile.default(key, this.url, container, this.layer.sceneContainer);
220
- tile.name = key;
221
- t.current = true;
222
- t.retain = true;
223
- t.active = true;
224
- this.layer.addChild(tile.imageLayer);
225
- this.tileCache.setTile(tile, key);
226
- this.pruneTiles();
227
- this.layerService.updateLayerRenderList();
228
- this.layerService.renderLayers();
229
- } else {
230
- tile.imageLayer.show();
231
- t.current = true;
232
- t.retain = true;
233
- t.active = true;
234
- this.pruneTiles();
235
- }
236
- }
237
- }, {
238
- key: "retainParent",
239
- value: function retainParent(x, y, z, minZoom) {
240
- var x2 = Math.floor(x / 2);
241
- var y2 = Math.floor(y / 2);
242
- var z2 = z - 1;
243
- var tile = this.tileList[[x2, y2, z2].join('_')];
244
-
245
- if (tile && tile.active) {
246
- tile.retain = true;
247
- return true;
248
- } else if (tile && tile.loaded) {
249
- tile.retain = true;
250
- }
251
-
252
- if (z2 > minZoom) {
253
- return this.retainParent(x2, y2, z2, minZoom);
254
- }
255
-
256
- return false;
257
- }
258
- }, {
259
- key: "retainChildren",
260
- value: function retainChildren(x, y, z, maxZoom) {
261
- for (var i = 2 * x; i < 2 * x + 2; i++) {
262
- for (var j = 2 * y; j < 2 * y + 2; j++) {
263
- var key = [i, j, z + 1].join('_');
264
- var tile = this.tileList[key];
265
-
266
- if (tile && tile.active) {
267
- tile.retain = true;
268
- continue;
269
- } else if (tile && tile.loaded) {
270
- tile.retain = true;
271
- }
272
-
273
- if (z + 1 < maxZoom) {
274
- this.retainChildren(i, j, z + 1, maxZoom);
275
- }
276
- }
277
- }
278
- }
279
- }, {
280
- key: "destroyTile",
281
- value: function destroyTile(tile) {
282
- this.layer.removeChild(tile.imageLayer);
283
- this.layerService.updateLayerRenderList();
284
- this.layerService.renderLayers();
285
- tile = null;
286
- }
287
- }, {
288
- key: "removeOutTiles",
289
- value: function removeOutTiles() {
290
- for (var key in this.tileList) {
291
- if (!this.tileList[key].retain) {
292
- var tile = this.tileCache.getTile(key);
293
-
294
- if (tile) {
295
- tile.imageLayer.hide();
296
- }
297
-
298
- delete this.tileList[key];
299
- }
300
- }
301
- }
302
- }, {
303
- key: "removeTiles",
304
- value: function removeTiles() {
305
- this.layer.clearChild();
306
- this.layerService.updateLayerRenderList();
307
- this.layerService.renderLayers();
308
- this.tileList = {};
309
- this.tileCache.destory();
310
- }
311
- }]);
312
- return Tile;
313
- }();
314
-
315
- exports.default = Tile;
316
- //# sourceMappingURL=Tile.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/imagetile/utils/Tile.ts"],"names":["CacheLimit","Tile","props","layerService","layer","url","resolution","maxSourceZoom","crstype","currentCrs","GeoCoordinates","default","start","x","y","end","projection","crs","destroyTile","bind","tileCache","TileCache","updateTileList","removeTiles","oprions","NE","SW","tileCenter","currentZoom","minSourceZoom","minZoom","maxZoom","zoom","Math","floor","tileZoom","centerPoint","lngLatToPoint","lng","lat","centerXY","divideBy","pixelBounds","getPixelBounds","tileRange","pxBoundsToTileRange","margin","noPruneRange","Bounds","getBottomLeft","subtract","getTopRight","add","isFinite","min","max","Error","j","i","coords","tile","tileList","join","current","push","sort","a","b","tile1","tile2","d1","pow","d2","pruneTiles","forEach","key","requestTile","ceil","NEPoint","SWPoint","topHeight","bottomHeight","leftWidth","rightWidth","width","Object","keys","map","c","contains","Point","retain","active","split","v","Number","z","retainParent","retainChildren","removeOutTiles","t","getTile","container","sceneContainer","ImageTile","name","addChild","imageLayer","setTile","updateLayerRenderList","renderLayers","show","x2","y2","z2","loaded","removeChild","hide","clearChild","destory"],"mappings":"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","sourcesContent":["import { Bounds, GeoCoordinates, Point, toLngLat } from '@antv/geo-coord';\nimport {\n createLayerContainer,\n ILayer,\n ILayerGroup,\n ILayerService,\n ILngLat,\n} from '@antv/l7-core';\nimport { Container } from 'inversify';\n\nimport ImageTile from './ImageTile';\nimport TileCache from './tileCache';\n\n// Tip: 瓦片地图的存储上限\nconst CacheLimit = 30;\n\nexport default class Tile {\n public tileList: any = {};\n public tileCache: any;\n\n public updateTileList: any[];\n public tileZoom: number;\n public noPruneRange: any;\n public url: string;\n public resolution: number;\n public maxSourceZoom: number;\n public crstype: string;\n public currentCrs: any;\n\n public layerService: ILayerService;\n public layer: ILayerGroup;\n constructor(props: any) {\n this.layerService = props.layerService;\n this.layer = props.layer;\n this.url = props.url;\n this.resolution = props.resolution === 'low' ? -1 : 0;\n this.maxSourceZoom = props.maxSourceZoom;\n this.crstype = props.crstype;\n\n this.currentCrs = new GeoCoordinates.default({\n start: { x: 0, y: 0 },\n end: { x: 0, y: 0 },\n projection: this.crstype,\n }).crs as any;\n\n this.destroyTile = this.destroyTile.bind(this);\n this.tileCache = new TileCache(CacheLimit, this.destroyTile);\n\n this.updateTileList = [];\n\n this.removeTiles = this.removeTiles.bind(this);\n }\n\n public calCurrentTiles(oprions: any) {\n const {\n NE,\n SW,\n tileCenter,\n currentZoom,\n minSourceZoom,\n minZoom,\n maxZoom,\n } = oprions;\n // TODO: 当前瓦片的层级要比地图底图的层级低\n if (currentZoom >= this.maxSourceZoom) {\n return;\n }\n const zoom = Math.floor(currentZoom) + this.resolution;\n\n this.tileZoom = zoom > this.maxSourceZoom ? this.maxSourceZoom : zoom;\n\n if (\n currentZoom < minZoom ||\n currentZoom >= maxZoom ||\n currentZoom < minSourceZoom\n ) {\n this.removeTiles();\n return;\n }\n\n this.updateTileList = [];\n\n // 计算瓦片中心\n const centerPoint = this.currentCrs.lngLatToPoint(\n toLngLat(tileCenter.lng, tileCenter.lat),\n this.tileZoom,\n );\n const centerXY = centerPoint.divideBy(256).floor();\n\n const pixelBounds = this.getPixelBounds(\n NE,\n SW,\n tileCenter,\n this.tileZoom,\n this.currentCrs,\n ); // 计算像素范围\n const tileRange = this.pxBoundsToTileRange(pixelBounds); // 计算瓦片范围\n\n const margin = 4;\n\n this.noPruneRange = new Bounds(\n tileRange.getBottomLeft().subtract([margin, -margin]),\n tileRange.getTopRight().add([margin, -margin]),\n );\n\n // T: isFinite(n: number) 用于检测 n 是否无穷大\n if (\n !(\n isFinite(tileRange.min.x) &&\n isFinite(tileRange.min.y) &&\n isFinite(tileRange.max.x) &&\n isFinite(tileRange.max.y)\n )\n ) {\n throw new Error('Attempted to load an infinite number of tiles');\n }\n\n // 根据视野判断新增的瓦片索引\n for (let j = tileRange.min.y; j <= tileRange.max.y; j++) {\n for (let i = tileRange.min.x; i <= tileRange.max.x; i++) {\n const coords = [i, j, this.tileZoom];\n const tile = this.tileList[coords.join('_')];\n if (tile) {\n tile.current = true;\n } else {\n this.tileList[coords.join('_')] = {\n current: true,\n coords,\n };\n this.updateTileList.push(coords);\n }\n }\n }\n\n // 瓦片列表排序\n this.updateTileList.sort((a: any, b: any) => {\n const tile1 = a;\n const tile2 = b;\n const d1 =\n Math.pow(tile1[0] * 1 - centerXY.x, 2) +\n Math.pow(tile1[1] * 1 - centerXY.y, 2);\n const d2 =\n Math.pow(tile2[0] * 1 - centerXY.x, 2) +\n Math.pow(tile2[1] * 1 - centerXY.y, 2);\n return d1 - d2;\n });\n\n this.pruneTiles();\n this.updateTileList.forEach((coords: any) => {\n const key = coords.join('_');\n if (this.tileList[key].current) {\n this.requestTile(key);\n }\n });\n }\n\n public pxBoundsToTileRange(pixelBounds: any) {\n return new Bounds(\n pixelBounds.min.divideBy(256).floor(),\n pixelBounds.max\n .divideBy(256)\n .ceil()\n .subtract([1, 1]),\n );\n }\n\n public getPixelBounds(\n NE: ILngLat,\n SW: ILngLat,\n tileCenter: ILngLat,\n tileZoom: number,\n crs: any,\n ) {\n const zoom = tileZoom;\n const NEPoint = crs.lngLatToPoint(toLngLat(NE.lng, NE.lat), zoom);\n const SWPoint = crs.lngLatToPoint(toLngLat(SW.lng, SW.lat), zoom);\n const centerPoint = crs.lngLatToPoint(\n toLngLat(tileCenter.lng, tileCenter.lat),\n zoom,\n );\n const topHeight = centerPoint.y - NEPoint.y;\n const bottomHeight = SWPoint.y - centerPoint.y;\n // 跨日界线的情况\n let leftWidth;\n let rightWidth;\n if (tileCenter.lng - NE.lng > 0 || tileCenter.lng - SW.lng < 0) {\n const width =\n ((Math.pow(2, zoom) * 256) / 360) * (180 - NE.lng) +\n ((Math.pow(2, zoom) * 256) / 360) * (SW.lng + 180);\n if (tileCenter.lng - NE.lng > 0) {\n // 日界线在右侧\n leftWidth =\n ((Math.pow(2, zoom) * 256) / 360) * (tileCenter.lng - NE.lng);\n rightWidth = width - leftWidth;\n } else {\n rightWidth =\n ((Math.pow(2, zoom) * 256) / 360) * (SW.lng - tileCenter.lng);\n leftWidth = width - rightWidth;\n }\n } else {\n // 不跨日界线\n leftWidth = ((Math.pow(2, zoom) * 256) / 360) * (tileCenter.lng - SW.lng);\n rightWidth =\n ((Math.pow(2, zoom) * 256) / 360) * (NE.lng - tileCenter.lng);\n }\n const pixelBounds = new Bounds(\n centerPoint.subtract(leftWidth, topHeight),\n centerPoint.add(rightWidth, bottomHeight),\n );\n return pixelBounds;\n }\n\n public pruneTiles() {\n Object.keys(this.tileList).map((key) => {\n const c = this.tileList[key].coords;\n // 如果不是同一个缩放层级,则将瓦片设为不显示\n if (\n c[2] !== this.tileZoom ||\n !this.noPruneRange.contains(new Point(c[0], c[1]))\n ) {\n this.tileList[key].current = false;\n }\n });\n\n Object.keys(this.tileList).map((key) => {\n const tile = this.tileList[key];\n tile.retain = tile.current;\n });\n\n Object.keys(this.tileList).map((key) => {\n const tile = this.tileList[key];\n if (tile.current && !tile.active) {\n const [x, y, z] = key.split('_').map((v) => Number(v));\n\n if (!this.retainParent(x, y, z, z - 5)) {\n this.retainChildren(x, y, z, z + 2);\n }\n }\n });\n\n this.removeOutTiles();\n }\n\n public requestTile(key: string) {\n const t = this.tileList[key];\n if (!t) {\n return;\n }\n let tile = this.tileCache.getTile(key);\n if (!tile) {\n const container = createLayerContainer(\n this.layer.sceneContainer as Container,\n );\n tile = new ImageTile(\n key,\n this.url,\n container,\n this.layer.sceneContainer as Container,\n );\n tile.name = key;\n\n t.current = true;\n t.retain = true;\n t.active = true;\n\n // 往 imageTileLayer 中添加子图层\n this.layer.addChild(tile.imageLayer);\n\n this.tileCache.setTile(tile, key);\n\n this.pruneTiles();\n this.layerService.updateLayerRenderList();\n this.layerService.renderLayers();\n } else {\n // Tip: show 方法就是将相应的瓦片图片添加到渲染队列\n tile.imageLayer.show();\n t.current = true;\n t.retain = true;\n t.active = true;\n\n this.pruneTiles();\n }\n }\n\n public retainParent(x: number, y: number, z: number, minZoom: number): any {\n const x2 = Math.floor(x / 2);\n const y2 = Math.floor(y / 2);\n const z2 = z - 1;\n const tile = this.tileList[[x2, y2, z2].join('_')];\n if (tile && tile.active) {\n tile.retain = true;\n return true;\n } else if (tile && tile.loaded) {\n tile.retain = true;\n }\n if (z2 > minZoom) {\n return this.retainParent(x2, y2, z2, minZoom);\n }\n return false;\n }\n\n public retainChildren(x: number, y: number, z: number, maxZoom: number) {\n for (let i = 2 * x; i < 2 * x + 2; i++) {\n for (let j = 2 * y; j < 2 * y + 2; j++) {\n const key = [i, j, z + 1].join('_');\n const tile = this.tileList[key];\n if (tile && tile.active) {\n tile.retain = true;\n continue;\n } else if (tile && tile.loaded) {\n tile.retain = true;\n }\n\n if (z + 1 < maxZoom) {\n this.retainChildren(i, j, z + 1, maxZoom);\n }\n }\n }\n }\n\n public destroyTile(tile: any) {\n this.layer.removeChild(tile.imageLayer);\n this.layerService.updateLayerRenderList();\n this.layerService.renderLayers();\n\n // 清除 tileCache 中的存储 相当于 tileCache.setTile(tile, null)\n tile = null;\n }\n\n public removeOutTiles() {\n for (const key in this.tileList) {\n if (!this.tileList[key].retain) {\n // Tip: 不需要显示的瓦片对象\n const tile = this.tileCache.getTile(key);\n // Tip: 若是网格对象存在\n if (tile) {\n // Tip: hide 方法就是将相应的瓦片图片从渲染队列中剔除\n tile.imageLayer.hide();\n }\n delete this.tileList[key];\n }\n }\n }\n\n public removeTiles() {\n this.layer.clearChild();\n this.layerService.updateLayerRenderList();\n this.layerService.renderLayers();\n this.tileList = {};\n this.tileCache.destory();\n }\n}\n"],"file":"Tile.js"}