@antv/l7-layers 2.5.45 → 2.5.49
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.
- package/es/core/BaseLayer.js +1 -0
- package/es/core/BaseLayer.js.map +1 -1
- package/es/earth/models/base.js +2 -0
- package/es/earth/models/base.js.map +1 -1
- package/es/image/models/image.js +4 -0
- package/es/image/models/image.js.map +1 -1
- package/es/imagetile/models/imagetile.d.ts +3 -3
- package/es/imagetile/models/imagetile.js +7 -18
- package/es/imagetile/models/imagetile.js.map +1 -1
- package/es/imagetile/utils/ImageTile.js +3 -1
- package/es/imagetile/utils/ImageTile.js.map +1 -1
- package/es/imagetile/utils/Tile.js +3 -0
- package/es/imagetile/utils/Tile.js.map +1 -1
- package/lib/core/BaseLayer.js +1 -0
- package/lib/core/BaseLayer.js.map +1 -1
- package/lib/earth/models/base.js +2 -0
- package/lib/earth/models/base.js.map +1 -1
- package/lib/image/models/image.js +4 -0
- package/lib/image/models/image.js.map +1 -1
- package/lib/imagetile/models/imagetile.js +6 -17
- package/lib/imagetile/models/imagetile.js.map +1 -1
- package/lib/imagetile/utils/ImageTile.js +3 -1
- package/lib/imagetile/utils/ImageTile.js.map +1 -1
- package/lib/imagetile/utils/Tile.js +3 -0
- package/lib/imagetile/utils/Tile.js.map +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
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","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":";;;;;;;;;;;;;;;AAAA;;AAEA;;AASA,IAAMA,GAAG,GAAG,MAAMC,IAAI,CAACC,EAAvB;AACA,IAAMC,YAAY,GAAG,cAArB;;IAEqBC,S;AAInB,qBACEC,GADF,EAEEC,GAFF,EAGEC,SAHF,EAIEC,cAJF,EAKE;AAAA;AAAA;AAAA;AAAA;AACA,SAAKC,IAAL,GAAYJ,GAAZ;AACA,SAAKK,IAAL,GAAYL,GAAG,CAACM,KAAJ,CAAU,GAAV,EAAeC,GAAf,CAAmB,UAACC,CAAD;AAAA,aAAOC,MAAM,CAACD,CAAD,CAAb;AAAA,KAAnB,CAAZ;AAEA,QAAME,SAAS,GAAG;AAChBC,MAAAA,CAAC,EAAE,KAAKN,IAAL,CAAU,CAAV,CADa;AAEhBO,MAAAA,CAAC,EAAE,KAAKP,IAAL,CAAU,CAAV,CAFa;AAGhBQ,MAAAA,CAAC,EAAE,KAAKR,IAAL,CAAU,CAAV;AAHa,KAAlB;AAKA,QAAMS,QAAQ,GAAG,KAAKC,UAAL,CAAgBL,SAAhB,EAA2BT,GAA3B,CAAjB;AAEA,QAAMe,YAAY,GAAG,KAAKC,gBAAL,CAAsB,KAAKZ,IAA3B,CAArB;AACA,QAAMa,IAAI,GAAGF,YAAY,CAACG,OAAb,EAAb;AACA,QAAMC,KAAK,GAAGJ,YAAY,CAACK,QAAb,EAAd;AACA,QAAMC,IAAI,GAAGN,YAAY,CAACO,OAAb,EAAb;AACA,QAAMC,KAAK,GAAGR,YAAY,CAACS,QAAb,EAAd;AAEA,QAAMC,UAAU,GAAG,IAAIC,cAAJ,CAAe,
|
|
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"}
|
|
@@ -224,6 +224,7 @@ var Tile = function () {
|
|
|
224
224
|
this.layer.layerChildren.push(tile.imageLayer);
|
|
225
225
|
this.tileCache.setTile(tile, key);
|
|
226
226
|
this.pruneTiles();
|
|
227
|
+
this.layerService.updateLayerRenderList();
|
|
227
228
|
this.layerService.renderLayers();
|
|
228
229
|
} else {
|
|
229
230
|
tile.imageLayer.show();
|
|
@@ -286,6 +287,7 @@ var Tile = function () {
|
|
|
286
287
|
|
|
287
288
|
tile.imageLayer.emit('remove', null);
|
|
288
289
|
tile.imageLayer.destroy();
|
|
290
|
+
this.layerService.updateLayerRenderList();
|
|
289
291
|
this.layerService.renderLayers();
|
|
290
292
|
tile = null;
|
|
291
293
|
}
|
|
@@ -312,6 +314,7 @@ var Tile = function () {
|
|
|
312
314
|
layer.destroy();
|
|
313
315
|
});
|
|
314
316
|
this.layer.layerChildren = [];
|
|
317
|
+
this.layerService.updateLayerRenderList();
|
|
315
318
|
this.layerService.renderLayers();
|
|
316
319
|
this.tileList = {};
|
|
317
320
|
this.tileCache.destory();
|
|
@@ -1 +1 @@
|
|
|
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","layerChildren","imageLayer","setTile","renderLayers","show","x2","y2","z2","loaded","layerIndex","indexOf","splice","emit","destroy","hide","destory"],"mappings":"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","sourcesContent":["import { Bounds, GeoCoordinates, Point, toLngLat } from '@antv/geo-coord';\nimport {\n createLayerContainer,\n ILayer,\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: ILayer;\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.layerChildren.push(tile.imageLayer);\n\n this.tileCache.setTile(tile, key);\n\n this.pruneTiles();\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 const layerIndex = this.layer.layerChildren.indexOf(tile.imageLayer);\n if (layerIndex > -1) {\n this.layer.layerChildren.splice(layerIndex, 1);\n }\n\n tile.imageLayer.emit('remove', null);\n tile.imageLayer.destroy();\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.layerChildren.forEach((layer: any) => {\n layer.emit('remove', null);\n layer.destroy();\n });\n\n this.layer.layerChildren = [];\n this.layerService.renderLayers();\n this.tileList = {};\n this.tileCache.destory();\n }\n}\n"],"file":"Tile.js"}
|
|
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","layerChildren","imageLayer","setTile","updateLayerRenderList","renderLayers","show","x2","y2","z2","loaded","layerIndex","indexOf","splice","emit","destroy","hide","destory"],"mappings":"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","sourcesContent":["import { Bounds, GeoCoordinates, Point, toLngLat } from '@antv/geo-coord';\nimport {\n createLayerContainer,\n ILayer,\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: ILayer;\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.layerChildren.push(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 const layerIndex = this.layer.layerChildren.indexOf(tile.imageLayer);\n if (layerIndex > -1) {\n this.layer.layerChildren.splice(layerIndex, 1);\n }\n\n tile.imageLayer.emit('remove', null);\n tile.imageLayer.destroy();\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.layerChildren.forEach((layer: any) => {\n layer.emit('remove', null);\n layer.destroy();\n });\n\n this.layer.layerChildren = [];\n this.layerService.updateLayerRenderList();\n this.layerService.renderLayers();\n this.tileList = {};\n this.tileCache.destory();\n }\n}\n"],"file":"Tile.js"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@antv/l7-layers",
|
|
3
|
-
"version": "2.5.
|
|
3
|
+
"version": "2.5.49",
|
|
4
4
|
"description": "L7's collection of built-in layers",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "es/index.js",
|
|
@@ -24,9 +24,9 @@
|
|
|
24
24
|
"license": "ISC",
|
|
25
25
|
"dependencies": {
|
|
26
26
|
"@antv/geo-coord": "^1.0.8",
|
|
27
|
-
"@antv/l7-core": "2.5.
|
|
28
|
-
"@antv/l7-source": "2.5.
|
|
29
|
-
"@antv/l7-utils": "2.5.
|
|
27
|
+
"@antv/l7-core": "^2.5.49",
|
|
28
|
+
"@antv/l7-source": "^2.5.49",
|
|
29
|
+
"@antv/l7-utils": "^2.5.49",
|
|
30
30
|
"@babel/runtime": "^7.7.7",
|
|
31
31
|
"@mapbox/martini": "^0.2.0",
|
|
32
32
|
"@turf/meta": "^6.0.2",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"@types/gl-matrix": "^2.4.5",
|
|
53
53
|
"@types/lodash": "^4.14.138"
|
|
54
54
|
},
|
|
55
|
-
"gitHead": "
|
|
55
|
+
"gitHead": "c94a4ec29d727a56a919dff6a75ee3ba54ecb66d",
|
|
56
56
|
"publishConfig": {
|
|
57
57
|
"access": "public"
|
|
58
58
|
}
|