@antv/l7-layers 2.8.23 → 2.8.27

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 (58) hide show
  1. package/es/core/BaseLayer.d.ts +4 -0
  2. package/es/core/BaseLayer.js +39 -0
  3. package/es/core/BaseLayer.js.map +1 -1
  4. package/es/core/LayerGroup.d.ts +8 -0
  5. package/es/core/LayerGroup.js +66 -0
  6. package/es/core/LayerGroup.js.map +1 -0
  7. package/es/core/interface.d.ts +7 -0
  8. package/es/core/interface.js.map +1 -1
  9. package/es/core/triangulation.d.ts +1 -0
  10. package/es/core/triangulation.js +1 -0
  11. package/es/core/triangulation.js.map +1 -1
  12. package/es/imagetile/index.d.ts +2 -2
  13. package/es/imagetile/index.js +4 -4
  14. package/es/imagetile/index.js.map +1 -1
  15. package/es/imagetile/models/imagetile.d.ts +2 -2
  16. package/es/imagetile/models/imagetile.js +1 -15
  17. package/es/imagetile/models/imagetile.js.map +1 -1
  18. package/es/imagetile/utils/Tile.d.ts +2 -2
  19. package/es/imagetile/utils/Tile.js +3 -12
  20. package/es/imagetile/utils/Tile.js.map +1 -1
  21. package/es/line/models/line.js +15 -6
  22. package/es/line/models/line.js.map +1 -1
  23. package/es/mask/models/fill.js +1 -1
  24. package/es/mask/models/fill.js.map +1 -1
  25. package/es/plugins/DataMappingPlugin.d.ts +1 -0
  26. package/es/plugins/DataMappingPlugin.js +30 -7
  27. package/es/plugins/DataMappingPlugin.js.map +1 -1
  28. package/es/point/models/fill.js +1 -1
  29. package/es/polygon/models/ocean.js +4 -4
  30. package/es/polygon/models/ocean.js.map +1 -1
  31. package/es/utils/extrude_polyline.d.ts +6 -0
  32. package/es/utils/extrude_polyline.js +29 -1
  33. package/es/utils/extrude_polyline.js.map +1 -1
  34. package/lib/core/BaseLayer.js +36 -0
  35. package/lib/core/BaseLayer.js.map +1 -1
  36. package/lib/core/LayerGroup.js +78 -0
  37. package/lib/core/LayerGroup.js.map +1 -0
  38. package/lib/core/interface.js.map +1 -1
  39. package/lib/core/triangulation.js +1 -0
  40. package/lib/core/triangulation.js.map +1 -1
  41. package/lib/imagetile/index.js +4 -4
  42. package/lib/imagetile/index.js.map +1 -1
  43. package/lib/imagetile/models/imagetile.js +1 -18
  44. package/lib/imagetile/models/imagetile.js.map +1 -1
  45. package/lib/imagetile/utils/Tile.js +3 -12
  46. package/lib/imagetile/utils/Tile.js.map +1 -1
  47. package/lib/line/models/line.js +15 -6
  48. package/lib/line/models/line.js.map +1 -1
  49. package/lib/mask/models/fill.js +1 -1
  50. package/lib/mask/models/fill.js.map +1 -1
  51. package/lib/plugins/DataMappingPlugin.js +29 -6
  52. package/lib/plugins/DataMappingPlugin.js.map +1 -1
  53. package/lib/point/models/fill.js +1 -1
  54. package/lib/polygon/models/ocean.js +4 -4
  55. package/lib/polygon/models/ocean.js.map +1 -1
  56. package/lib/utils/extrude_polyline.js +28 -1
  57. package/lib/utils/extrude_polyline.js.map +1 -1
  58. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/triangulation.ts"],"names":["lngLatToMeters","earcut","vec3","EARTH_RADIUS","EARTH_RADIUS_OUTER","EARTH_SEGMENTS","lglt2xyz","primitiveSphere","ExtrudePolyline","calculateCentroid","calculatePointsCenterAndRadius","extrudePolygon","extrude_PolygonNormal","fillPolygon","geometryShape","GeometryCache","PointFillTriangulation","feature","coordinates","vertices","indices","size","length","GlobelPointFillTriangulation","xyz","PointExtrudeTriangulation","shape","getGeometry","positions","index","normals","PointImageTriangulation","LineTriangulation","originCoordinates","version","line","dash","join","path1","Array","isArray","path2","i","item1","item2","extrude_gaode2","path","forEach","item","extrude","linebuffer","complex","SimpleLineTriangulation","simpleExtrude_gaode2","simpleExtrude","polygonTriangulation","flattengeo","flatten","dimensions","holes","polygonTriangulationWithCenter","getVerticesWithCenter","verticesWithCenter","center","radius","lng","lat","push","PolygonExtrudeTriangulation","HeatmapGridTriangulation","getHeatmapGeometry","RasterImageTriangulation","indexs","LineArcTriangulation","segmentNumber","segNum","indexArray","map","v","HeatmapTriangulation","dir","addDir","dir1","dir2","dir3","needFlat","cylinder","geometry","computeVertexNormals","dim","Float32Array","vA","vB","vC","cb","create","ab","normal","li","p1","p2","p3","ax","ay","pA","fromValues","bx","by","pB","cx","cy","pC","sub","cross","normalizeNormals","newNormal","normalize","set","checkIsClosed","points","shape3d","circle","indexOf","dirX","dirY","x","y","earthTriangulation","earthmesh","segments","positionsArr","indicesArr","normalArr","earthOuterTriangulation"],"mappings":"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","sourcesContent":["import { IEncodeFeature } from '@antv/l7-core';\nimport { aProjectFlat, lngLatToMeters } from '@antv/l7-utils';\nimport earcut from 'earcut';\n// @ts-ignore\nimport { mat4, vec3 } from 'gl-matrix';\nimport {\n EARTH_RADIUS,\n EARTH_RADIUS_OUTER,\n EARTH_SEGMENTS,\n lglt2xyz,\n primitiveSphere,\n} from '../earth/utils';\nimport ExtrudePolyline from '../utils/extrude_polyline';\nimport {\n calculateCentroid,\n calculatePointsCenterAndRadius,\n} from '../utils/geo';\nimport extrudePolygon, {\n extrude_PolygonNormal,\n fillPolygon,\n IExtrudeGeomety,\n} from './shape/extrude';\nimport {\n geometryShape,\n IPosition,\n ShapeType2D,\n ShapeType3D,\n} from './shape/Path';\ntype IShape = ShapeType2D & ShapeType3D;\ninterface IGeometryCache {\n [key: string]: IExtrudeGeomety;\n}\nconst GeometryCache: IGeometryCache = {};\n\n/**\n * 计算2D 填充点图顶点\n * @param feature 映射feature\n */\n\nexport function PointFillTriangulation(feature: IEncodeFeature) {\n const coordinates = calculateCentroid(feature.coordinates);\n return {\n vertices: [...coordinates, ...coordinates, ...coordinates, ...coordinates],\n indices: [0, 1, 2, 2, 3, 0],\n size: coordinates.length,\n };\n}\n/**\n * 计算2D 填充点图顶点 (地球模式)\n * @param feature 映射feature\n */\nexport function GlobelPointFillTriangulation(feature: IEncodeFeature) {\n const coordinates = calculateCentroid(feature.coordinates);\n const xyz = lglt2xyz(coordinates as [number, number]);\n return {\n vertices: [...xyz, ...xyz, ...xyz, ...xyz],\n indices: [0, 1, 2, 2, 3, 0],\n size: xyz.length,\n };\n}\n\n/**\n * 计算3D 拉伸点图\n * @param feature 映射feature\n */\nexport function PointExtrudeTriangulation(feature: IEncodeFeature) {\n const { shape } = feature;\n const { positions, index, normals } = getGeometry(\n shape as ShapeType3D,\n false,\n );\n return {\n vertices: positions,\n indices: index,\n normals,\n size: 5,\n };\n}\n\n/**\n * 计算图片标注\n * @param feature 映射feature\n */\nexport function PointImageTriangulation(feature: IEncodeFeature) {\n const coordinates = calculateCentroid(feature.coordinates);\n return {\n vertices: [...coordinates],\n indices: [0],\n size: coordinates.length,\n };\n}\n\n/**\n * 线三角化\n * @param feature 映射feature\n */\nexport function LineTriangulation(feature: IEncodeFeature) {\n const { coordinates, originCoordinates, version } = feature;\n // let path = coordinates as number[][][] | number[][];\n // if (!Array.isArray(path[0][0])) {\n // path = [coordinates] as number[][][];\n // }\n\n const line = new ExtrudePolyline({\n dash: true,\n join: 'bevel',\n });\n\n if (version === 'GAODE2.x') {\n // 处理高德2.0几何体构建\n let path1 = coordinates as number[][][] | number[][]; // 计算位置\n if (!Array.isArray(path1[0][0])) {\n path1 = [coordinates] as number[][][];\n }\n let path2 = originCoordinates as number[][][] | number[][]; // 计算法线\n if (!Array.isArray(path2[0][0])) {\n path2 = [originCoordinates] as number[][][];\n }\n\n for (let i = 0; i < path1.length; i++) {\n // 高德2.0在计算线时,需要使用经纬度计算发现,使用 customCoords.lnglatToCoords 计算的数据来计算顶点的位置\n const item1 = path1[i];\n const item2 = path2[i];\n line.extrude_gaode2(item1 as number[][], item2 as number[][]);\n }\n } else {\n // 处理非高德2.0的几何体构建\n let path = coordinates as number[][][] | number[][];\n if (path[0] && !Array.isArray(path[0][0])) {\n path = [coordinates] as number[][][];\n }\n path.forEach((item: any) => {\n line.extrude(item as number[][]);\n });\n }\n\n const linebuffer = line.complex;\n return {\n vertices: linebuffer.positions, // [ x,y,z, distance, miter,total ]\n indices: linebuffer.indices,\n normals: linebuffer.normals,\n size: 6,\n };\n}\n\nexport function SimpleLineTriangulation(feature: IEncodeFeature) {\n const { coordinates, originCoordinates, version } = feature;\n\n const line = new ExtrudePolyline({\n dash: true,\n join: 'bevel',\n });\n\n if (version === 'GAODE2.x') {\n // 处理高德2.0几何体构建\n let path1 = coordinates as number[][][] | number[][]; // 计算位置\n if (!Array.isArray(path1[0][0])) {\n path1 = [coordinates] as number[][][];\n }\n let path2 = originCoordinates as number[][][] | number[][]; // 计算法线\n if (!Array.isArray(path2[0][0])) {\n path2 = [originCoordinates] as number[][][];\n }\n\n for (let i = 0; i < path1.length; i++) {\n // 高德2.0在计算线时,需要使用经纬度计算发现,使用 customCoords.lnglatToCoords 计算的数据来计算顶点的位置\n const item1 = path1[i];\n const item2 = path2[i];\n line.simpleExtrude_gaode2(item1 as number[][], item2 as number[][]);\n }\n } else {\n // 处理非高德2.0的几何体构建\n let path = coordinates as number[][][] | number[][];\n if (path[0] && !Array.isArray(path[0][0])) {\n path = [coordinates] as number[][][];\n }\n path.forEach((item: any) => {\n line.simpleExtrude(item as number[][]);\n });\n }\n\n const linebuffer = line.complex;\n return {\n vertices: linebuffer.positions, // [ x,y,z, distance, miter,total ]\n indices: linebuffer.indices,\n normals: linebuffer.normals,\n size: 6,\n };\n}\n\nexport function polygonTriangulation(feature: IEncodeFeature) {\n const { coordinates } = feature;\n const flattengeo = earcut.flatten(coordinates as number[][][]);\n const { vertices, dimensions, holes } = flattengeo;\n return {\n indices: earcut(vertices, holes, dimensions),\n vertices,\n size: dimensions,\n };\n}\n\n// TODO:构建几何图形(带有中心点和大小)\nexport function polygonTriangulationWithCenter(feature: IEncodeFeature) {\n const { coordinates } = feature;\n const flattengeo = earcut.flatten(coordinates as number[][][]);\n const { vertices, dimensions, holes } = flattengeo;\n\n return {\n indices: earcut(vertices, holes, dimensions),\n vertices: getVerticesWithCenter(vertices),\n size: dimensions + 4,\n };\n}\n\nfunction getVerticesWithCenter(vertices: number[]) {\n const verticesWithCenter = [];\n const { center, radius } = calculatePointsCenterAndRadius(vertices);\n for (let i = 0; i < vertices.length; i += 2) {\n const lng = vertices[i];\n const lat = vertices[i + 1];\n verticesWithCenter.push(lng, lat, 0, ...center, radius);\n }\n return verticesWithCenter;\n}\n\nexport function PolygonExtrudeTriangulation(feature: IEncodeFeature) {\n const coordinates = feature.coordinates as IPosition[][];\n const { positions, index, normals } = extrude_PolygonNormal(\n coordinates,\n true,\n );\n return {\n vertices: positions, // [ x, y, z, uv.x,uv.y ]\n indices: index,\n normals,\n size: 5,\n };\n}\n\nexport function HeatmapGridTriangulation(feature: IEncodeFeature) {\n const { shape } = feature;\n const { positions, index } = getHeatmapGeometry(shape as IShape);\n return {\n vertices: positions, // [ x, y, z ] 多边形顶点\n indices: index,\n size: 3,\n };\n}\n\n/**\n * 图片图层顶点构造\n * @param feature 数据\n */\nexport function RasterImageTriangulation(feature: IEncodeFeature) {\n const coordinates = feature.coordinates as IPosition[];\n // [ x, y, z. uv.x, uv.y]\n const positions: number[] = [\n ...coordinates[0],\n 0,\n 0,\n 1,\n coordinates[1][0],\n coordinates[0][1],\n 0,\n 1,\n 1,\n ...coordinates[1],\n 0,\n 1,\n 0,\n ...coordinates[0],\n 0,\n 0,\n 1,\n ...coordinates[1],\n 0,\n 1,\n 0,\n coordinates[0][0],\n coordinates[1][1],\n 0,\n 0,\n 0,\n ];\n const indexs = [0, 1, 2, 3, 4, 5];\n return {\n vertices: positions,\n indices: indexs,\n size: 5,\n };\n}\n\n/**\n * 计算3D弧线顶点\n * @param feature 映射数据\n * @param segNum 弧线线段数\n */\nexport function LineArcTriangulation(\n feature: IEncodeFeature,\n segmentNumber?: number,\n) {\n const segNum = segmentNumber ? segmentNumber : 30;\n const coordinates = feature.coordinates as IPosition[];\n const positions = [];\n const indexArray = [];\n for (let i = 0; i < segNum; i++) {\n // 上线两个顶点\n // [ x, y, z, sx,sy, tx,ty]\n positions.push(\n i,\n 1,\n i,\n coordinates[0][0],\n coordinates[0][1],\n coordinates[1][0],\n coordinates[1][1],\n i,\n -1,\n i,\n coordinates[0][0],\n coordinates[0][1],\n coordinates[1][0],\n coordinates[1][1],\n );\n\n if (i !== segNum - 1) {\n indexArray.push(\n ...[0, 1, 2, 1, 3, 2].map((v) => {\n return i * 2 + v;\n }),\n );\n }\n }\n return {\n vertices: positions,\n indices: indexArray,\n size: 7,\n };\n}\n\n/**\n * 构建热力图密度图的顶点\n * @param feature\n * @returns\n */\nexport function HeatmapTriangulation(feature: IEncodeFeature) {\n const coordinates = feature.coordinates as number[];\n if (coordinates.length === 2) {\n coordinates.push(0);\n }\n const size = feature.size as number;\n const dir = addDir(-1, 1);\n const dir1 = addDir(1, 1);\n const dir2 = addDir(-1, -1);\n const dir3 = addDir(1, -1);\n // [x,y,z, dirx ,diry, weight]\n const positions = [\n ...coordinates,\n ...dir,\n ...coordinates,\n ...dir2,\n ...coordinates,\n ...dir3,\n ...coordinates,\n ...dir1,\n ];\n const indexArray = [0, 1, 2, 3, 0, 2];\n return {\n vertices: positions,\n indices: indexArray,\n size: 5,\n };\n}\n\n/**\n * 点图层3d geomerty\n * @param shape 3D形状\n */\nfunction getGeometry(shape: ShapeType3D, needFlat = false): IExtrudeGeomety {\n if (GeometryCache && GeometryCache[shape]) {\n return GeometryCache[shape];\n }\n const path = geometryShape[shape]\n ? geometryShape[shape]()\n : geometryShape.cylinder();\n const geometry = extrude_PolygonNormal([path], needFlat);\n GeometryCache[shape] = geometry;\n return geometry;\n}\n\nfunction computeVertexNormals(\n positions: number[],\n indexArray: number[],\n dim: number = 3,\n needFlat: boolean = false,\n) {\n const normals = new Float32Array((positions.length / dim) * 3);\n let vA: number;\n let vB: number;\n let vC: number;\n const cb = vec3.create();\n const ab = vec3.create();\n const normal = vec3.create();\n for (let i = 0, li = indexArray.length; i < li; i += 3) {\n vA = indexArray[i + 0] * 3;\n vB = indexArray[i + 1] * 3;\n vC = indexArray[i + 2] * 3;\n let p1 = [positions[vA], positions[vA + 1]];\n let p2 = [positions[vB], positions[vB + 1]];\n let p3 = [positions[vC], positions[vC + 1]];\n if (needFlat) {\n p1 = lngLatToMeters(p1);\n p2 = lngLatToMeters(p2);\n p3 = lngLatToMeters(p3);\n }\n const [ax, ay] = p1;\n const pA = vec3.fromValues(ax, ay, positions[vA + 2]);\n const [bx, by] = p2;\n const pB = vec3.fromValues(bx, by, positions[vB + 2]);\n const [cx, cy] = p3;\n const pC = vec3.fromValues(cx, cy, positions[vC + 2]);\n vec3.sub(cb, pC, pB);\n vec3.sub(ab, pA, pB);\n vec3.cross(normal, cb, ab);\n normals[vA] += cb[0];\n normals[vA + 1] += cb[1];\n normals[vA + 2] += cb[2];\n normals[vB] += cb[0];\n normals[vB + 1] += cb[1];\n normals[vB + 2] += cb[2];\n normals[vC] += cb[0];\n normals[vC + 1] += cb[1];\n normals[vC + 2] += cb[2];\n }\n normalizeNormals(normals);\n return normals;\n}\n\nfunction normalizeNormals(normals: Float32Array) {\n for (let i = 0, li = normals.length; i < li; i += 3) {\n const normal = vec3.fromValues(normals[i], normals[i + 1], normals[i + 2]);\n const newNormal = vec3.create();\n vec3.normalize(newNormal, normal);\n normals.set(newNormal, i);\n }\n}\n\nfunction checkIsClosed(points: number[][][]) {\n const p1 = points[0][0];\n const p2 = points[0][points[0].length - 1];\n return p1[0] === p2[0] && p1[1] === p2[1];\n}\n\nfunction getHeatmapGeometry(shape: ShapeType2D | ShapeType3D): IExtrudeGeomety {\n const shape3d = [\n 'cylinder',\n 'triangleColumn',\n 'hexagonColumn',\n 'squareColumn',\n ];\n const path = geometryShape[shape]\n ? geometryShape[shape]()\n : geometryShape.circle();\n const geometry =\n shape3d.indexOf(shape) === -1\n ? fillPolygon([path])\n : extrudePolygon([path]);\n // const geometry = fillPolygon([path]);\n return geometry;\n}\n// 热力图计算范围\nfunction addDir(dirX: number, dirY: number) {\n const x = (dirX + 1) / 2;\n const y = (dirY + 1) / 2;\n return [x, y];\n}\n\n/**\n * 构建地球三角网格\n * @returns\n */\nexport function earthTriangulation() {\n const earthmesh = primitiveSphere(EARTH_RADIUS, { segments: EARTH_SEGMENTS });\n const { positionsArr, indicesArr, normalArr } = earthmesh;\n return {\n vertices: positionsArr,\n indices: indicesArr,\n size: 5,\n normals: normalArr,\n };\n}\n\nexport function earthOuterTriangulation() {\n const earthmesh = primitiveSphere(EARTH_RADIUS + EARTH_RADIUS_OUTER, {\n segments: EARTH_SEGMENTS,\n });\n const { positionsArr, indicesArr, normalArr } = earthmesh;\n return {\n vertices: positionsArr,\n indices: indicesArr,\n size: 5,\n normals: normalArr,\n };\n}\n"],"file":"triangulation.js"}
1
+ {"version":3,"sources":["../../src/core/triangulation.ts"],"names":["lngLatToMeters","earcut","vec3","EARTH_RADIUS","EARTH_RADIUS_OUTER","EARTH_SEGMENTS","lglt2xyz","primitiveSphere","ExtrudePolyline","calculateCentroid","calculatePointsCenterAndRadius","extrudePolygon","extrude_PolygonNormal","fillPolygon","geometryShape","GeometryCache","PointFillTriangulation","feature","coordinates","vertices","indices","size","length","GlobelPointFillTriangulation","xyz","PointExtrudeTriangulation","shape","getGeometry","positions","index","normals","PointImageTriangulation","LineTriangulation","originCoordinates","version","line","dash","join","path1","Array","isArray","path2","i","item1","item2","extrude_gaode2","path","forEach","item","extrude","linebuffer","complex","indexes","SimpleLineTriangulation","simpleExtrude_gaode2","simpleExtrude","polygonTriangulation","flattengeo","flatten","dimensions","holes","polygonTriangulationWithCenter","getVerticesWithCenter","verticesWithCenter","center","radius","lng","lat","push","PolygonExtrudeTriangulation","HeatmapGridTriangulation","getHeatmapGeometry","RasterImageTriangulation","indexs","LineArcTriangulation","segmentNumber","segNum","indexArray","map","v","HeatmapTriangulation","dir","addDir","dir1","dir2","dir3","needFlat","cylinder","geometry","computeVertexNormals","dim","Float32Array","vA","vB","vC","cb","create","ab","normal","li","p1","p2","p3","ax","ay","pA","fromValues","bx","by","pB","cx","cy","pC","sub","cross","normalizeNormals","newNormal","normalize","set","checkIsClosed","points","shape3d","circle","indexOf","dirX","dirY","x","y","earthTriangulation","earthmesh","segments","positionsArr","indicesArr","normalArr","earthOuterTriangulation"],"mappings":";;AACA,SAAuBA,cAAvB,QAA6C,gBAA7C;AACA,OAAOC,MAAP,MAAmB,QAAnB;AAEA,SAAeC,IAAf,QAA2B,WAA3B;AACA,SACEC,YADF,EAEEC,kBAFF,EAGEC,cAHF,EAIEC,QAJF,EAKEC,eALF,QAMO,gBANP;AAOA,OAAOC,eAAP,MAA4B,2BAA5B;AACA,SACEC,iBADF,EAEEC,8BAFF,QAGO,cAHP;AAIA,OAAOC,cAAP,IACEC,qBADF,EAEEC,WAFF,QAIO,iBAJP;AAKA,SACEC,aADF,QAKO,cALP;AAUA,IAAMC,aAA6B,GAAG,EAAtC;AAOA,OAAO,SAASC,sBAAT,CAAgCC,OAAhC,EAAyD;AAC9D,MAAMC,WAAW,GAAGT,iBAAiB,CAACQ,OAAO,CAACC,WAAT,CAArC;AACA,SAAO;AACLC,IAAAA,QAAQ,+BAAMD,WAAN,sBAAsBA,WAAtB,sBAAsCA,WAAtC,sBAAsDA,WAAtD,EADH;AAELE,IAAAA,OAAO,EAAE,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAFJ;AAGLC,IAAAA,IAAI,EAAEH,WAAW,CAACI;AAHb,GAAP;AAKD;AAKD,OAAO,SAASC,4BAAT,CAAsCN,OAAtC,EAA+D;AACpE,MAAMC,WAAW,GAAGT,iBAAiB,CAACQ,OAAO,CAACC,WAAT,CAArC;AACA,MAAMM,GAAG,GAAGlB,QAAQ,CAACY,WAAD,CAApB;AACA,SAAO;AACLC,IAAAA,QAAQ,+BAAMK,GAAN,sBAAcA,GAAd,sBAAsBA,GAAtB,sBAA8BA,GAA9B,EADH;AAELJ,IAAAA,OAAO,EAAE,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAFJ;AAGLC,IAAAA,IAAI,EAAEG,GAAG,CAACF;AAHL,GAAP;AAKD;AAMD,OAAO,SAASG,yBAAT,CAAmCR,OAAnC,EAA4D;AACjE,MAAQS,KAAR,GAAkBT,OAAlB,CAAQS,KAAR;;AACA,qBAAsCC,WAAW,CAC/CD,KAD+C,EAE/C,KAF+C,CAAjD;AAAA,MAAQE,SAAR,gBAAQA,SAAR;AAAA,MAAmBC,KAAnB,gBAAmBA,KAAnB;AAAA,MAA0BC,OAA1B,gBAA0BA,OAA1B;;AAIA,SAAO;AACLX,IAAAA,QAAQ,EAAES,SADL;AAELR,IAAAA,OAAO,EAAES,KAFJ;AAGLC,IAAAA,OAAO,EAAPA,OAHK;AAILT,IAAAA,IAAI,EAAE;AAJD,GAAP;AAMD;AAMD,OAAO,SAASU,uBAAT,CAAiCd,OAAjC,EAA0D;AAC/D,MAAMC,WAAW,GAAGT,iBAAiB,CAACQ,OAAO,CAACC,WAAT,CAArC;AACA,SAAO;AACLC,IAAAA,QAAQ,qBAAMD,WAAN,CADH;AAELE,IAAAA,OAAO,EAAE,CAAC,CAAD,CAFJ;AAGLC,IAAAA,IAAI,EAAEH,WAAW,CAACI;AAHb,GAAP;AAKD;AAMD,OAAO,SAASU,iBAAT,CAA2Bf,OAA3B,EAAoD;AACzD,MAAQC,WAAR,GAAoDD,OAApD,CAAQC,WAAR;AAAA,MAAqBe,iBAArB,GAAoDhB,OAApD,CAAqBgB,iBAArB;AAAA,MAAwCC,OAAxC,GAAoDjB,OAApD,CAAwCiB,OAAxC;AAMA,MAAMC,IAAI,GAAG,IAAI3B,eAAJ,CAAoB;AAC/B4B,IAAAA,IAAI,EAAE,IADyB;AAE/BC,IAAAA,IAAI,EAAE;AAFyB,GAApB,CAAb;;AAKA,MAAIH,OAAO,KAAK,UAAhB,EAA4B;AAE1B,QAAII,KAAK,GAAGpB,WAAZ;;AACA,QAAI,CAACqB,KAAK,CAACC,OAAN,CAAcF,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,CAAd,CAAL,EAAiC;AAC/BA,MAAAA,KAAK,GAAG,CAACpB,WAAD,CAAR;AACD;;AACD,QAAIuB,KAAK,GAAGR,iBAAZ;;AACA,QAAI,CAACM,KAAK,CAACC,OAAN,CAAcC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,CAAd,CAAL,EAAiC;AAC/BA,MAAAA,KAAK,GAAG,CAACR,iBAAD,CAAR;AACD;;AAED,SAAK,IAAIS,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGJ,KAAK,CAAChB,MAA1B,EAAkCoB,CAAC,EAAnC,EAAuC;AAErC,UAAMC,KAAK,GAAGL,KAAK,CAACI,CAAD,CAAnB;AACA,UAAME,KAAK,GAAGH,KAAK,CAACC,CAAD,CAAnB;AACAP,MAAAA,IAAI,CAACU,cAAL,CAAoBF,KAApB,EAAyCC,KAAzC;AACD;AACF,GAjBD,MAiBO;AAEL,QAAIE,IAAI,GAAG5B,WAAX;;AACA,QAAI4B,IAAI,CAAC,CAAD,CAAJ,IAAW,CAACP,KAAK,CAACC,OAAN,CAAcM,IAAI,CAAC,CAAD,CAAJ,CAAQ,CAAR,CAAd,CAAhB,EAA2C;AACzCA,MAAAA,IAAI,GAAG,CAAC5B,WAAD,CAAP;AACD;;AACD4B,IAAAA,IAAI,CAACC,OAAL,CAAa,UAACC,IAAD,EAAe;AAC1Bb,MAAAA,IAAI,CAACc,OAAL,CAAaD,IAAb;AACD,KAFD;AAGD;;AAED,MAAME,UAAU,GAAGf,IAAI,CAACgB,OAAxB;AACA,SAAO;AACLhC,IAAAA,QAAQ,EAAE+B,UAAU,CAACtB,SADhB;AAELR,IAAAA,OAAO,EAAE8B,UAAU,CAAC9B,OAFf;AAGLU,IAAAA,OAAO,EAAEoB,UAAU,CAACpB,OAHf;AAILsB,IAAAA,OAAO,EAAEF,UAAU,CAACE,OAJf;AAKL/B,IAAAA,IAAI,EAAE;AALD,GAAP;AAOD;AAED,OAAO,SAASgC,uBAAT,CAAiCpC,OAAjC,EAA0D;AAC/D,MAAQC,WAAR,GAAoDD,OAApD,CAAQC,WAAR;AAAA,MAAqBe,iBAArB,GAAoDhB,OAApD,CAAqBgB,iBAArB;AAAA,MAAwCC,OAAxC,GAAoDjB,OAApD,CAAwCiB,OAAxC;AAEA,MAAMC,IAAI,GAAG,IAAI3B,eAAJ,CAAoB;AAC/B4B,IAAAA,IAAI,EAAE,IADyB;AAE/BC,IAAAA,IAAI,EAAE;AAFyB,GAApB,CAAb;;AAKA,MAAIH,OAAO,KAAK,UAAhB,EAA4B;AAE1B,QAAII,KAAK,GAAGpB,WAAZ;;AACA,QAAI,CAACqB,KAAK,CAACC,OAAN,CAAcF,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,CAAd,CAAL,EAAiC;AAC/BA,MAAAA,KAAK,GAAG,CAACpB,WAAD,CAAR;AACD;;AACD,QAAIuB,KAAK,GAAGR,iBAAZ;;AACA,QAAI,CAACM,KAAK,CAACC,OAAN,CAAcC,KAAK,CAAC,CAAD,CAAL,CAAS,CAAT,CAAd,CAAL,EAAiC;AAC/BA,MAAAA,KAAK,GAAG,CAACR,iBAAD,CAAR;AACD;;AAED,SAAK,IAAIS,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGJ,KAAK,CAAChB,MAA1B,EAAkCoB,CAAC,EAAnC,EAAuC;AAErC,UAAMC,KAAK,GAAGL,KAAK,CAACI,CAAD,CAAnB;AACA,UAAME,KAAK,GAAGH,KAAK,CAACC,CAAD,CAAnB;AACAP,MAAAA,IAAI,CAACmB,oBAAL,CAA0BX,KAA1B,EAA+CC,KAA/C;AACD;AACF,GAjBD,MAiBO;AAEL,QAAIE,IAAI,GAAG5B,WAAX;;AACA,QAAI4B,IAAI,CAAC,CAAD,CAAJ,IAAW,CAACP,KAAK,CAACC,OAAN,CAAcM,IAAI,CAAC,CAAD,CAAJ,CAAQ,CAAR,CAAd,CAAhB,EAA2C;AACzCA,MAAAA,IAAI,GAAG,CAAC5B,WAAD,CAAP;AACD;;AACD4B,IAAAA,IAAI,CAACC,OAAL,CAAa,UAACC,IAAD,EAAe;AAC1Bb,MAAAA,IAAI,CAACoB,aAAL,CAAmBP,IAAnB;AACD,KAFD;AAGD;;AAED,MAAME,UAAU,GAAGf,IAAI,CAACgB,OAAxB;AACA,SAAO;AACLhC,IAAAA,QAAQ,EAAE+B,UAAU,CAACtB,SADhB;AAELR,IAAAA,OAAO,EAAE8B,UAAU,CAAC9B,OAFf;AAGLU,IAAAA,OAAO,EAAEoB,UAAU,CAACpB,OAHf;AAILT,IAAAA,IAAI,EAAE;AAJD,GAAP;AAMD;AAED,OAAO,SAASmC,oBAAT,CAA8BvC,OAA9B,EAAuD;AAC5D,MAAQC,WAAR,GAAwBD,OAAxB,CAAQC,WAAR;AACA,MAAMuC,UAAU,GAAGxD,MAAM,CAACyD,OAAP,CAAexC,WAAf,CAAnB;AACA,MAAQC,QAAR,GAAwCsC,UAAxC,CAAQtC,QAAR;AAAA,MAAkBwC,UAAlB,GAAwCF,UAAxC,CAAkBE,UAAlB;AAAA,MAA8BC,KAA9B,GAAwCH,UAAxC,CAA8BG,KAA9B;AACA,SAAO;AACLxC,IAAAA,OAAO,EAAEnB,MAAM,CAACkB,QAAD,EAAWyC,KAAX,EAAkBD,UAAlB,CADV;AAELxC,IAAAA,QAAQ,EAARA,QAFK;AAGLE,IAAAA,IAAI,EAAEsC;AAHD,GAAP;AAKD;AAGD,OAAO,SAASE,8BAAT,CAAwC5C,OAAxC,EAAiE;AACtE,MAAQC,WAAR,GAAwBD,OAAxB,CAAQC,WAAR;AACA,MAAMuC,UAAU,GAAGxD,MAAM,CAACyD,OAAP,CAAexC,WAAf,CAAnB;AACA,MAAQC,QAAR,GAAwCsC,UAAxC,CAAQtC,QAAR;AAAA,MAAkBwC,UAAlB,GAAwCF,UAAxC,CAAkBE,UAAlB;AAAA,MAA8BC,KAA9B,GAAwCH,UAAxC,CAA8BG,KAA9B;AAEA,SAAO;AACLxC,IAAAA,OAAO,EAAEnB,MAAM,CAACkB,QAAD,EAAWyC,KAAX,EAAkBD,UAAlB,CADV;AAELxC,IAAAA,QAAQ,EAAE2C,qBAAqB,CAAC3C,QAAD,CAF1B;AAGLE,IAAAA,IAAI,EAAEsC,UAAU,GAAG;AAHd,GAAP;AAKD;;AAED,SAASG,qBAAT,CAA+B3C,QAA/B,EAAmD;AACjD,MAAM4C,kBAAkB,GAAG,EAA3B;;AACA,8BAA2BrD,8BAA8B,CAACS,QAAD,CAAzD;AAAA,MAAQ6C,MAAR,yBAAQA,MAAR;AAAA,MAAgBC,MAAhB,yBAAgBA,MAAhB;;AACA,OAAK,IAAIvB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGvB,QAAQ,CAACG,MAA7B,EAAqCoB,CAAC,IAAI,CAA1C,EAA6C;AAC3C,QAAMwB,GAAG,GAAG/C,QAAQ,CAACuB,CAAD,CAApB;AACA,QAAMyB,GAAG,GAAGhD,QAAQ,CAACuB,CAAC,GAAG,CAAL,CAApB;AACAqB,IAAAA,kBAAkB,CAACK,IAAnB,OAAAL,kBAAkB,GAAMG,GAAN,EAAWC,GAAX,EAAgB,CAAhB,4BAAsBH,MAAtB,IAA8BC,MAA9B,GAAlB;AACD;;AACD,SAAOF,kBAAP;AACD;;AAED,OAAO,SAASM,2BAAT,CAAqCpD,OAArC,EAA8D;AACnE,MAAMC,WAAW,GAAGD,OAAO,CAACC,WAA5B;;AACA,8BAAsCN,qBAAqB,CACzDM,WADyD,EAEzD,IAFyD,CAA3D;AAAA,MAAQU,SAAR,yBAAQA,SAAR;AAAA,MAAmBC,KAAnB,yBAAmBA,KAAnB;AAAA,MAA0BC,OAA1B,yBAA0BA,OAA1B;;AAIA,SAAO;AACLX,IAAAA,QAAQ,EAAES,SADL;AAELR,IAAAA,OAAO,EAAES,KAFJ;AAGLC,IAAAA,OAAO,EAAPA,OAHK;AAILT,IAAAA,IAAI,EAAE;AAJD,GAAP;AAMD;AAED,OAAO,SAASiD,wBAAT,CAAkCrD,OAAlC,EAA2D;AAChE,MAAQS,KAAR,GAAkBT,OAAlB,CAAQS,KAAR;;AACA,4BAA6B6C,kBAAkB,CAAC7C,KAAD,CAA/C;AAAA,MAAQE,SAAR,uBAAQA,SAAR;AAAA,MAAmBC,KAAnB,uBAAmBA,KAAnB;;AACA,SAAO;AACLV,IAAAA,QAAQ,EAAES,SADL;AAELR,IAAAA,OAAO,EAAES,KAFJ;AAGLR,IAAAA,IAAI,EAAE;AAHD,GAAP;AAKD;AAMD,OAAO,SAASmD,wBAAT,CAAkCvD,OAAlC,EAA2D;AAChE,MAAMC,WAAW,GAAGD,OAAO,CAACC,WAA5B;AAEA,MAAMU,SAAmB,gCACpBV,WAAW,CAAC,CAAD,CADS,IAEvB,CAFuB,EAGvB,CAHuB,EAIvB,CAJuB,EAKvBA,WAAW,CAAC,CAAD,CAAX,CAAe,CAAf,CALuB,EAMvBA,WAAW,CAAC,CAAD,CAAX,CAAe,CAAf,CANuB,EAOvB,CAPuB,EAQvB,CARuB,EASvB,CATuB,sBAUpBA,WAAW,CAAC,CAAD,CAVS,IAWvB,CAXuB,EAYvB,CAZuB,EAavB,CAbuB,sBAcpBA,WAAW,CAAC,CAAD,CAdS,IAevB,CAfuB,EAgBvB,CAhBuB,EAiBvB,CAjBuB,sBAkBpBA,WAAW,CAAC,CAAD,CAlBS,IAmBvB,CAnBuB,EAoBvB,CApBuB,EAqBvB,CArBuB,EAsBvBA,WAAW,CAAC,CAAD,CAAX,CAAe,CAAf,CAtBuB,EAuBvBA,WAAW,CAAC,CAAD,CAAX,CAAe,CAAf,CAvBuB,EAwBvB,CAxBuB,EAyBvB,CAzBuB,EA0BvB,CA1BuB,EAAzB;AA4BA,MAAMuD,MAAM,GAAG,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAf;AACA,SAAO;AACLtD,IAAAA,QAAQ,EAAES,SADL;AAELR,IAAAA,OAAO,EAAEqD,MAFJ;AAGLpD,IAAAA,IAAI,EAAE;AAHD,GAAP;AAKD;AAOD,OAAO,SAASqD,oBAAT,CACLzD,OADK,EAEL0D,aAFK,EAGL;AACA,MAAMC,MAAM,GAAGD,aAAa,GAAGA,aAAH,GAAmB,EAA/C;AACA,MAAMzD,WAAW,GAAGD,OAAO,CAACC,WAA5B;AACA,MAAMU,SAAS,GAAG,EAAlB;AACA,MAAMiD,UAAU,GAAG,EAAnB;;AAJA,6BAKSnC,CALT;AAQEd,IAAAA,SAAS,CAACwC,IAAV,CACE1B,CADF,EAEE,CAFF,EAGEA,CAHF,EAIExB,WAAW,CAAC,CAAD,CAAX,CAAe,CAAf,CAJF,EAKEA,WAAW,CAAC,CAAD,CAAX,CAAe,CAAf,CALF,EAMEA,WAAW,CAAC,CAAD,CAAX,CAAe,CAAf,CANF,EAOEA,WAAW,CAAC,CAAD,CAAX,CAAe,CAAf,CAPF,EAQEwB,CARF,EASE,CAAC,CATH,EAUEA,CAVF,EAWExB,WAAW,CAAC,CAAD,CAAX,CAAe,CAAf,CAXF,EAYEA,WAAW,CAAC,CAAD,CAAX,CAAe,CAAf,CAZF,EAaEA,WAAW,CAAC,CAAD,CAAX,CAAe,CAAf,CAbF,EAcEA,WAAW,CAAC,CAAD,CAAX,CAAe,CAAf,CAdF;;AAiBA,QAAIwB,CAAC,KAAKkC,MAAM,GAAG,CAAnB,EAAsB;AACpBC,MAAAA,UAAU,CAACT,IAAX,OAAAS,UAAU,qBACL,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,EAAmBC,GAAnB,CAAuB,UAACC,CAAD,EAAO;AAC/B,eAAOrC,CAAC,GAAG,CAAJ,GAAQqC,CAAf;AACD,OAFE,CADK,EAAV;AAKD;AA/BH;;AAKA,OAAK,IAAIrC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGkC,MAApB,EAA4BlC,CAAC,EAA7B,EAAiC;AAAA,UAAxBA,CAAwB;AA2BhC;;AACD,SAAO;AACLvB,IAAAA,QAAQ,EAAES,SADL;AAELR,IAAAA,OAAO,EAAEyD,UAFJ;AAGLxD,IAAAA,IAAI,EAAE;AAHD,GAAP;AAKD;AAOD,OAAO,SAAS2D,oBAAT,CAA8B/D,OAA9B,EAAuD;AAC5D,MAAMC,WAAW,GAAGD,OAAO,CAACC,WAA5B;;AACA,MAAIA,WAAW,CAACI,MAAZ,KAAuB,CAA3B,EAA8B;AAC5BJ,IAAAA,WAAW,CAACkD,IAAZ,CAAiB,CAAjB;AACD;;AACD,MAAM/C,IAAI,GAAGJ,OAAO,CAACI,IAArB;AACA,MAAM4D,GAAG,GAAGC,MAAM,CAAC,CAAC,CAAF,EAAK,CAAL,CAAlB;AACA,MAAMC,IAAI,GAAGD,MAAM,CAAC,CAAD,EAAI,CAAJ,CAAnB;AACA,MAAME,IAAI,GAAGF,MAAM,CAAC,CAAC,CAAF,EAAK,CAAC,CAAN,CAAnB;AACA,MAAMG,IAAI,GAAGH,MAAM,CAAC,CAAD,EAAI,CAAC,CAAL,CAAnB;AAEA,MAAMtD,SAAS,gCACVV,WADU,sBAEV+D,GAFU,sBAGV/D,WAHU,sBAIVkE,IAJU,sBAKVlE,WALU,sBAMVmE,IANU,sBAOVnE,WAPU,sBAQViE,IARU,EAAf;AAUA,MAAMN,UAAU,GAAG,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAnB;AACA,SAAO;AACL1D,IAAAA,QAAQ,EAAES,SADL;AAELR,IAAAA,OAAO,EAAEyD,UAFJ;AAGLxD,IAAAA,IAAI,EAAE;AAHD,GAAP;AAKD;;AAMD,SAASM,WAAT,CAAqBD,KAArB,EAA4E;AAAA,MAAnC4D,QAAmC,uEAAxB,KAAwB;;AAC1E,MAAIvE,aAAa,IAAIA,aAAa,CAACW,KAAD,CAAlC,EAA2C;AACzC,WAAOX,aAAa,CAACW,KAAD,CAApB;AACD;;AACD,MAAMoB,IAAI,GAAGhC,aAAa,CAACY,KAAD,CAAb,GACTZ,aAAa,CAACY,KAAD,CAAb,EADS,GAETZ,aAAa,CAACyE,QAAd,EAFJ;AAGA,MAAMC,QAAQ,GAAG5E,qBAAqB,CAAC,CAACkC,IAAD,CAAD,EAASwC,QAAT,CAAtC;AACAvE,EAAAA,aAAa,CAACW,KAAD,CAAb,GAAuB8D,QAAvB;AACA,SAAOA,QAAP;AACD;;AAED,SAASC,oBAAT,CACE7D,SADF,EAEEiD,UAFF,EAKE;AAAA,MAFAa,GAEA,uEAFc,CAEd;AAAA,MADAJ,QACA,uEADoB,KACpB;AACA,MAAMxD,OAAO,GAAG,IAAI6D,YAAJ,CAAkB/D,SAAS,CAACN,MAAV,GAAmBoE,GAApB,GAA2B,CAA5C,CAAhB;AACA,MAAIE,EAAJ;AACA,MAAIC,EAAJ;AACA,MAAIC,EAAJ;AACA,MAAMC,EAAE,GAAG7F,IAAI,CAAC8F,MAAL,EAAX;AACA,MAAMC,EAAE,GAAG/F,IAAI,CAAC8F,MAAL,EAAX;AACA,MAAME,MAAM,GAAGhG,IAAI,CAAC8F,MAAL,EAAf;;AACA,OAAK,IAAItD,CAAC,GAAG,CAAR,EAAWyD,EAAE,GAAGtB,UAAU,CAACvD,MAAhC,EAAwCoB,CAAC,GAAGyD,EAA5C,EAAgDzD,CAAC,IAAI,CAArD,EAAwD;AACtDkD,IAAAA,EAAE,GAAGf,UAAU,CAACnC,CAAC,GAAG,CAAL,CAAV,GAAoB,CAAzB;AACAmD,IAAAA,EAAE,GAAGhB,UAAU,CAACnC,CAAC,GAAG,CAAL,CAAV,GAAoB,CAAzB;AACAoD,IAAAA,EAAE,GAAGjB,UAAU,CAACnC,CAAC,GAAG,CAAL,CAAV,GAAoB,CAAzB;AACA,QAAI0D,EAAE,GAAG,CAACxE,SAAS,CAACgE,EAAD,CAAV,EAAgBhE,SAAS,CAACgE,EAAE,GAAG,CAAN,CAAzB,CAAT;AACA,QAAIS,EAAE,GAAG,CAACzE,SAAS,CAACiE,EAAD,CAAV,EAAgBjE,SAAS,CAACiE,EAAE,GAAG,CAAN,CAAzB,CAAT;AACA,QAAIS,EAAE,GAAG,CAAC1E,SAAS,CAACkE,EAAD,CAAV,EAAgBlE,SAAS,CAACkE,EAAE,GAAG,CAAN,CAAzB,CAAT;;AACA,QAAIR,QAAJ,EAAc;AACZc,MAAAA,EAAE,GAAGpG,cAAc,CAACoG,EAAD,CAAnB;AACAC,MAAAA,EAAE,GAAGrG,cAAc,CAACqG,EAAD,CAAnB;AACAC,MAAAA,EAAE,GAAGtG,cAAc,CAACsG,EAAD,CAAnB;AACD;;AACD,aAAiBF,EAAjB;AAAA;AAAA,QAAOG,EAAP;AAAA,QAAWC,EAAX;;AACA,QAAMC,EAAE,GAAGvG,IAAI,CAACwG,UAAL,CAAgBH,EAAhB,EAAoBC,EAApB,EAAwB5E,SAAS,CAACgE,EAAE,GAAG,CAAN,CAAjC,CAAX;;AACA,cAAiBS,EAAjB;AAAA;AAAA,QAAOM,EAAP;AAAA,QAAWC,EAAX;;AACA,QAAMC,EAAE,GAAG3G,IAAI,CAACwG,UAAL,CAAgBC,EAAhB,EAAoBC,EAApB,EAAwBhF,SAAS,CAACiE,EAAE,GAAG,CAAN,CAAjC,CAAX;;AACA,cAAiBS,EAAjB;AAAA;AAAA,QAAOQ,EAAP;AAAA,QAAWC,EAAX;;AACA,QAAMC,EAAE,GAAG9G,IAAI,CAACwG,UAAL,CAAgBI,EAAhB,EAAoBC,EAApB,EAAwBnF,SAAS,CAACkE,EAAE,GAAG,CAAN,CAAjC,CAAX;AACA5F,IAAAA,IAAI,CAAC+G,GAAL,CAASlB,EAAT,EAAaiB,EAAb,EAAiBH,EAAjB;AACA3G,IAAAA,IAAI,CAAC+G,GAAL,CAAShB,EAAT,EAAaQ,EAAb,EAAiBI,EAAjB;AACA3G,IAAAA,IAAI,CAACgH,KAAL,CAAWhB,MAAX,EAAmBH,EAAnB,EAAuBE,EAAvB;AACAnE,IAAAA,OAAO,CAAC8D,EAAD,CAAP,IAAeG,EAAE,CAAC,CAAD,CAAjB;AACAjE,IAAAA,OAAO,CAAC8D,EAAE,GAAG,CAAN,CAAP,IAAmBG,EAAE,CAAC,CAAD,CAArB;AACAjE,IAAAA,OAAO,CAAC8D,EAAE,GAAG,CAAN,CAAP,IAAmBG,EAAE,CAAC,CAAD,CAArB;AACAjE,IAAAA,OAAO,CAAC+D,EAAD,CAAP,IAAeE,EAAE,CAAC,CAAD,CAAjB;AACAjE,IAAAA,OAAO,CAAC+D,EAAE,GAAG,CAAN,CAAP,IAAmBE,EAAE,CAAC,CAAD,CAArB;AACAjE,IAAAA,OAAO,CAAC+D,EAAE,GAAG,CAAN,CAAP,IAAmBE,EAAE,CAAC,CAAD,CAArB;AACAjE,IAAAA,OAAO,CAACgE,EAAD,CAAP,IAAeC,EAAE,CAAC,CAAD,CAAjB;AACAjE,IAAAA,OAAO,CAACgE,EAAE,GAAG,CAAN,CAAP,IAAmBC,EAAE,CAAC,CAAD,CAArB;AACAjE,IAAAA,OAAO,CAACgE,EAAE,GAAG,CAAN,CAAP,IAAmBC,EAAE,CAAC,CAAD,CAArB;AACD;;AACDoB,EAAAA,gBAAgB,CAACrF,OAAD,CAAhB;AACA,SAAOA,OAAP;AACD;;AAED,SAASqF,gBAAT,CAA0BrF,OAA1B,EAAiD;AAC/C,OAAK,IAAIY,CAAC,GAAG,CAAR,EAAWyD,EAAE,GAAGrE,OAAO,CAACR,MAA7B,EAAqCoB,CAAC,GAAGyD,EAAzC,EAA6CzD,CAAC,IAAI,CAAlD,EAAqD;AACnD,QAAMwD,MAAM,GAAGhG,IAAI,CAACwG,UAAL,CAAgB5E,OAAO,CAACY,CAAD,CAAvB,EAA4BZ,OAAO,CAACY,CAAC,GAAG,CAAL,CAAnC,EAA4CZ,OAAO,CAACY,CAAC,GAAG,CAAL,CAAnD,CAAf;AACA,QAAM0E,SAAS,GAAGlH,IAAI,CAAC8F,MAAL,EAAlB;AACA9F,IAAAA,IAAI,CAACmH,SAAL,CAAeD,SAAf,EAA0BlB,MAA1B;AACApE,IAAAA,OAAO,CAACwF,GAAR,CAAYF,SAAZ,EAAuB1E,CAAvB;AACD;AACF;;AAED,SAAS6E,aAAT,CAAuBC,MAAvB,EAA6C;AAC3C,MAAMpB,EAAE,GAAGoB,MAAM,CAAC,CAAD,CAAN,CAAU,CAAV,CAAX;AACA,MAAMnB,EAAE,GAAGmB,MAAM,CAAC,CAAD,CAAN,CAAUA,MAAM,CAAC,CAAD,CAAN,CAAUlG,MAAV,GAAmB,CAA7B,CAAX;AACA,SAAO8E,EAAE,CAAC,CAAD,CAAF,KAAUC,EAAE,CAAC,CAAD,CAAZ,IAAmBD,EAAE,CAAC,CAAD,CAAF,KAAUC,EAAE,CAAC,CAAD,CAAtC;AACD;;AAED,SAAS9B,kBAAT,CAA4B7C,KAA5B,EAA+E;AAC7E,MAAM+F,OAAO,GAAG,CACd,UADc,EAEd,gBAFc,EAGd,eAHc,EAId,cAJc,CAAhB;AAMA,MAAM3E,IAAI,GAAGhC,aAAa,CAACY,KAAD,CAAb,GACTZ,aAAa,CAACY,KAAD,CAAb,EADS,GAETZ,aAAa,CAAC4G,MAAd,EAFJ;AAGA,MAAMlC,QAAQ,GACZiC,OAAO,CAACE,OAAR,CAAgBjG,KAAhB,MAA2B,CAAC,CAA5B,GACIb,WAAW,CAAC,CAACiC,IAAD,CAAD,CADf,GAEInC,cAAc,CAAC,CAACmC,IAAD,CAAD,CAHpB;AAKA,SAAO0C,QAAP;AACD;;AAED,SAASN,MAAT,CAAgB0C,IAAhB,EAA8BC,IAA9B,EAA4C;AAC1C,MAAMC,CAAC,GAAG,CAACF,IAAI,GAAG,CAAR,IAAa,CAAvB;AACA,MAAMG,CAAC,GAAG,CAACF,IAAI,GAAG,CAAR,IAAa,CAAvB;AACA,SAAO,CAACC,CAAD,EAAIC,CAAJ,CAAP;AACD;;AAMD,OAAO,SAASC,kBAAT,GAA8B;AACnC,MAAMC,SAAS,GAAG1H,eAAe,CAACJ,YAAD,EAAe;AAAE+H,IAAAA,QAAQ,EAAE7H;AAAZ,GAAf,CAAjC;AACA,MAAQ8H,YAAR,GAAgDF,SAAhD,CAAQE,YAAR;AAAA,MAAsBC,UAAtB,GAAgDH,SAAhD,CAAsBG,UAAtB;AAAA,MAAkCC,SAAlC,GAAgDJ,SAAhD,CAAkCI,SAAlC;AACA,SAAO;AACLlH,IAAAA,QAAQ,EAAEgH,YADL;AAEL/G,IAAAA,OAAO,EAAEgH,UAFJ;AAGL/G,IAAAA,IAAI,EAAE,CAHD;AAILS,IAAAA,OAAO,EAAEuG;AAJJ,GAAP;AAMD;AAED,OAAO,SAASC,uBAAT,GAAmC;AACxC,MAAML,SAAS,GAAG1H,eAAe,CAACJ,YAAY,GAAGC,kBAAhB,EAAoC;AACnE8H,IAAAA,QAAQ,EAAE7H;AADyD,GAApC,CAAjC;AAGA,MAAQ8H,YAAR,GAAgDF,SAAhD,CAAQE,YAAR;AAAA,MAAsBC,UAAtB,GAAgDH,SAAhD,CAAsBG,UAAtB;AAAA,MAAkCC,SAAlC,GAAgDJ,SAAhD,CAAkCI,SAAlC;AACA,SAAO;AACLlH,IAAAA,QAAQ,EAAEgH,YADL;AAEL/G,IAAAA,OAAO,EAAEgH,UAFJ;AAGL/G,IAAAA,IAAI,EAAE,CAHD;AAILS,IAAAA,OAAO,EAAEuG;AAJJ,GAAP;AAMD","sourcesContent":["import { IEncodeFeature } from '@antv/l7-core';\nimport { aProjectFlat, lngLatToMeters } from '@antv/l7-utils';\nimport earcut from 'earcut';\n// @ts-ignore\nimport { mat4, vec3 } from 'gl-matrix';\nimport {\n EARTH_RADIUS,\n EARTH_RADIUS_OUTER,\n EARTH_SEGMENTS,\n lglt2xyz,\n primitiveSphere,\n} from '../earth/utils';\nimport ExtrudePolyline from '../utils/extrude_polyline';\nimport {\n calculateCentroid,\n calculatePointsCenterAndRadius,\n} from '../utils/geo';\nimport extrudePolygon, {\n extrude_PolygonNormal,\n fillPolygon,\n IExtrudeGeomety,\n} from './shape/extrude';\nimport {\n geometryShape,\n IPosition,\n ShapeType2D,\n ShapeType3D,\n} from './shape/Path';\ntype IShape = ShapeType2D & ShapeType3D;\ninterface IGeometryCache {\n [key: string]: IExtrudeGeomety;\n}\nconst GeometryCache: IGeometryCache = {};\n\n/**\n * 计算2D 填充点图顶点\n * @param feature 映射feature\n */\n\nexport function PointFillTriangulation(feature: IEncodeFeature) {\n const coordinates = calculateCentroid(feature.coordinates);\n return {\n vertices: [...coordinates, ...coordinates, ...coordinates, ...coordinates],\n indices: [0, 1, 2, 2, 3, 0],\n size: coordinates.length,\n };\n}\n/**\n * 计算2D 填充点图顶点 (地球模式)\n * @param feature 映射feature\n */\nexport function GlobelPointFillTriangulation(feature: IEncodeFeature) {\n const coordinates = calculateCentroid(feature.coordinates);\n const xyz = lglt2xyz(coordinates as [number, number]);\n return {\n vertices: [...xyz, ...xyz, ...xyz, ...xyz],\n indices: [0, 1, 2, 2, 3, 0],\n size: xyz.length,\n };\n}\n\n/**\n * 计算3D 拉伸点图\n * @param feature 映射feature\n */\nexport function PointExtrudeTriangulation(feature: IEncodeFeature) {\n const { shape } = feature;\n const { positions, index, normals } = getGeometry(\n shape as ShapeType3D,\n false,\n );\n return {\n vertices: positions,\n indices: index,\n normals,\n size: 5,\n };\n}\n\n/**\n * 计算图片标注\n * @param feature 映射feature\n */\nexport function PointImageTriangulation(feature: IEncodeFeature) {\n const coordinates = calculateCentroid(feature.coordinates);\n return {\n vertices: [...coordinates],\n indices: [0],\n size: coordinates.length,\n };\n}\n\n/**\n * 线三角化\n * @param feature 映射feature\n */\nexport function LineTriangulation(feature: IEncodeFeature) {\n const { coordinates, originCoordinates, version } = feature;\n // let path = coordinates as number[][][] | number[][];\n // if (!Array.isArray(path[0][0])) {\n // path = [coordinates] as number[][][];\n // }\n\n const line = new ExtrudePolyline({\n dash: true,\n join: 'bevel',\n });\n\n if (version === 'GAODE2.x') {\n // 处理高德2.0几何体构建\n let path1 = coordinates as number[][][] | number[][]; // 计算位置\n if (!Array.isArray(path1[0][0])) {\n path1 = [coordinates] as number[][][];\n }\n let path2 = originCoordinates as number[][][] | number[][]; // 计算法线\n if (!Array.isArray(path2[0][0])) {\n path2 = [originCoordinates] as number[][][];\n }\n\n for (let i = 0; i < path1.length; i++) {\n // 高德2.0在计算线时,需要使用经纬度计算发现,使用 customCoords.lnglatToCoords 计算的数据来计算顶点的位置\n const item1 = path1[i];\n const item2 = path2[i];\n line.extrude_gaode2(item1 as number[][], item2 as number[][]);\n }\n } else {\n // 处理非高德2.0的几何体构建\n let path = coordinates as number[][][] | number[][];\n if (path[0] && !Array.isArray(path[0][0])) {\n path = [coordinates] as number[][][];\n }\n path.forEach((item: any) => {\n line.extrude(item as number[][]);\n });\n }\n\n const linebuffer = line.complex;\n return {\n vertices: linebuffer.positions, // [ x,y,z, distance, miter,total ]\n indices: linebuffer.indices,\n normals: linebuffer.normals,\n indexes: linebuffer.indexes,\n size: 6,\n };\n}\n\nexport function SimpleLineTriangulation(feature: IEncodeFeature) {\n const { coordinates, originCoordinates, version } = feature;\n\n const line = new ExtrudePolyline({\n dash: true,\n join: 'bevel',\n });\n\n if (version === 'GAODE2.x') {\n // 处理高德2.0几何体构建\n let path1 = coordinates as number[][][] | number[][]; // 计算位置\n if (!Array.isArray(path1[0][0])) {\n path1 = [coordinates] as number[][][];\n }\n let path2 = originCoordinates as number[][][] | number[][]; // 计算法线\n if (!Array.isArray(path2[0][0])) {\n path2 = [originCoordinates] as number[][][];\n }\n\n for (let i = 0; i < path1.length; i++) {\n // 高德2.0在计算线时,需要使用经纬度计算发现,使用 customCoords.lnglatToCoords 计算的数据来计算顶点的位置\n const item1 = path1[i];\n const item2 = path2[i];\n line.simpleExtrude_gaode2(item1 as number[][], item2 as number[][]);\n }\n } else {\n // 处理非高德2.0的几何体构建\n let path = coordinates as number[][][] | number[][];\n if (path[0] && !Array.isArray(path[0][0])) {\n path = [coordinates] as number[][][];\n }\n path.forEach((item: any) => {\n line.simpleExtrude(item as number[][]);\n });\n }\n\n const linebuffer = line.complex;\n return {\n vertices: linebuffer.positions, // [ x,y,z, distance, miter,total ]\n indices: linebuffer.indices,\n normals: linebuffer.normals,\n size: 6,\n };\n}\n\nexport function polygonTriangulation(feature: IEncodeFeature) {\n const { coordinates } = feature;\n const flattengeo = earcut.flatten(coordinates as number[][][]);\n const { vertices, dimensions, holes } = flattengeo;\n return {\n indices: earcut(vertices, holes, dimensions),\n vertices,\n size: dimensions,\n };\n}\n\n// TODO:构建几何图形(带有中心点和大小)\nexport function polygonTriangulationWithCenter(feature: IEncodeFeature) {\n const { coordinates } = feature;\n const flattengeo = earcut.flatten(coordinates as number[][][]);\n const { vertices, dimensions, holes } = flattengeo;\n\n return {\n indices: earcut(vertices, holes, dimensions),\n vertices: getVerticesWithCenter(vertices),\n size: dimensions + 4,\n };\n}\n\nfunction getVerticesWithCenter(vertices: number[]) {\n const verticesWithCenter = [];\n const { center, radius } = calculatePointsCenterAndRadius(vertices);\n for (let i = 0; i < vertices.length; i += 2) {\n const lng = vertices[i];\n const lat = vertices[i + 1];\n verticesWithCenter.push(lng, lat, 0, ...center, radius);\n }\n return verticesWithCenter;\n}\n\nexport function PolygonExtrudeTriangulation(feature: IEncodeFeature) {\n const coordinates = feature.coordinates as IPosition[][];\n const { positions, index, normals } = extrude_PolygonNormal(\n coordinates,\n true,\n );\n return {\n vertices: positions, // [ x, y, z, uv.x,uv.y ]\n indices: index,\n normals,\n size: 5,\n };\n}\n\nexport function HeatmapGridTriangulation(feature: IEncodeFeature) {\n const { shape } = feature;\n const { positions, index } = getHeatmapGeometry(shape as IShape);\n return {\n vertices: positions, // [ x, y, z ] 多边形顶点\n indices: index,\n size: 3,\n };\n}\n\n/**\n * 图片图层顶点构造\n * @param feature 数据\n */\nexport function RasterImageTriangulation(feature: IEncodeFeature) {\n const coordinates = feature.coordinates as IPosition[];\n // [ x, y, z. uv.x, uv.y]\n const positions: number[] = [\n ...coordinates[0],\n 0,\n 0,\n 1,\n coordinates[1][0],\n coordinates[0][1],\n 0,\n 1,\n 1,\n ...coordinates[1],\n 0,\n 1,\n 0,\n ...coordinates[0],\n 0,\n 0,\n 1,\n ...coordinates[1],\n 0,\n 1,\n 0,\n coordinates[0][0],\n coordinates[1][1],\n 0,\n 0,\n 0,\n ];\n const indexs = [0, 1, 2, 3, 4, 5];\n return {\n vertices: positions,\n indices: indexs,\n size: 5,\n };\n}\n\n/**\n * 计算3D弧线顶点\n * @param feature 映射数据\n * @param segNum 弧线线段数\n */\nexport function LineArcTriangulation(\n feature: IEncodeFeature,\n segmentNumber?: number,\n) {\n const segNum = segmentNumber ? segmentNumber : 30;\n const coordinates = feature.coordinates as IPosition[];\n const positions = [];\n const indexArray = [];\n for (let i = 0; i < segNum; i++) {\n // 上线两个顶点\n // [ x, y, z, sx,sy, tx,ty]\n positions.push(\n i,\n 1,\n i,\n coordinates[0][0],\n coordinates[0][1],\n coordinates[1][0],\n coordinates[1][1],\n i,\n -1,\n i,\n coordinates[0][0],\n coordinates[0][1],\n coordinates[1][0],\n coordinates[1][1],\n );\n\n if (i !== segNum - 1) {\n indexArray.push(\n ...[0, 1, 2, 1, 3, 2].map((v) => {\n return i * 2 + v;\n }),\n );\n }\n }\n return {\n vertices: positions,\n indices: indexArray,\n size: 7,\n };\n}\n\n/**\n * 构建热力图密度图的顶点\n * @param feature\n * @returns\n */\nexport function HeatmapTriangulation(feature: IEncodeFeature) {\n const coordinates = feature.coordinates as number[];\n if (coordinates.length === 2) {\n coordinates.push(0);\n }\n const size = feature.size as number;\n const dir = addDir(-1, 1);\n const dir1 = addDir(1, 1);\n const dir2 = addDir(-1, -1);\n const dir3 = addDir(1, -1);\n // [x,y,z, dirx ,diry, weight]\n const positions = [\n ...coordinates,\n ...dir,\n ...coordinates,\n ...dir2,\n ...coordinates,\n ...dir3,\n ...coordinates,\n ...dir1,\n ];\n const indexArray = [0, 1, 2, 3, 0, 2];\n return {\n vertices: positions,\n indices: indexArray,\n size: 5,\n };\n}\n\n/**\n * 点图层3d geomerty\n * @param shape 3D形状\n */\nfunction getGeometry(shape: ShapeType3D, needFlat = false): IExtrudeGeomety {\n if (GeometryCache && GeometryCache[shape]) {\n return GeometryCache[shape];\n }\n const path = geometryShape[shape]\n ? geometryShape[shape]()\n : geometryShape.cylinder();\n const geometry = extrude_PolygonNormal([path], needFlat);\n GeometryCache[shape] = geometry;\n return geometry;\n}\n\nfunction computeVertexNormals(\n positions: number[],\n indexArray: number[],\n dim: number = 3,\n needFlat: boolean = false,\n) {\n const normals = new Float32Array((positions.length / dim) * 3);\n let vA: number;\n let vB: number;\n let vC: number;\n const cb = vec3.create();\n const ab = vec3.create();\n const normal = vec3.create();\n for (let i = 0, li = indexArray.length; i < li; i += 3) {\n vA = indexArray[i + 0] * 3;\n vB = indexArray[i + 1] * 3;\n vC = indexArray[i + 2] * 3;\n let p1 = [positions[vA], positions[vA + 1]];\n let p2 = [positions[vB], positions[vB + 1]];\n let p3 = [positions[vC], positions[vC + 1]];\n if (needFlat) {\n p1 = lngLatToMeters(p1);\n p2 = lngLatToMeters(p2);\n p3 = lngLatToMeters(p3);\n }\n const [ax, ay] = p1;\n const pA = vec3.fromValues(ax, ay, positions[vA + 2]);\n const [bx, by] = p2;\n const pB = vec3.fromValues(bx, by, positions[vB + 2]);\n const [cx, cy] = p3;\n const pC = vec3.fromValues(cx, cy, positions[vC + 2]);\n vec3.sub(cb, pC, pB);\n vec3.sub(ab, pA, pB);\n vec3.cross(normal, cb, ab);\n normals[vA] += cb[0];\n normals[vA + 1] += cb[1];\n normals[vA + 2] += cb[2];\n normals[vB] += cb[0];\n normals[vB + 1] += cb[1];\n normals[vB + 2] += cb[2];\n normals[vC] += cb[0];\n normals[vC + 1] += cb[1];\n normals[vC + 2] += cb[2];\n }\n normalizeNormals(normals);\n return normals;\n}\n\nfunction normalizeNormals(normals: Float32Array) {\n for (let i = 0, li = normals.length; i < li; i += 3) {\n const normal = vec3.fromValues(normals[i], normals[i + 1], normals[i + 2]);\n const newNormal = vec3.create();\n vec3.normalize(newNormal, normal);\n normals.set(newNormal, i);\n }\n}\n\nfunction checkIsClosed(points: number[][][]) {\n const p1 = points[0][0];\n const p2 = points[0][points[0].length - 1];\n return p1[0] === p2[0] && p1[1] === p2[1];\n}\n\nfunction getHeatmapGeometry(shape: ShapeType2D | ShapeType3D): IExtrudeGeomety {\n const shape3d = [\n 'cylinder',\n 'triangleColumn',\n 'hexagonColumn',\n 'squareColumn',\n ];\n const path = geometryShape[shape]\n ? geometryShape[shape]()\n : geometryShape.circle();\n const geometry =\n shape3d.indexOf(shape) === -1\n ? fillPolygon([path])\n : extrudePolygon([path]);\n // const geometry = fillPolygon([path]);\n return geometry;\n}\n// 热力图计算范围\nfunction addDir(dirX: number, dirY: number) {\n const x = (dirX + 1) / 2;\n const y = (dirY + 1) / 2;\n return [x, y];\n}\n\n/**\n * 构建地球三角网格\n * @returns\n */\nexport function earthTriangulation() {\n const earthmesh = primitiveSphere(EARTH_RADIUS, { segments: EARTH_SEGMENTS });\n const { positionsArr, indicesArr, normalArr } = earthmesh;\n return {\n vertices: positionsArr,\n indices: indicesArr,\n size: 5,\n normals: normalArr,\n };\n}\n\nexport function earthOuterTriangulation() {\n const earthmesh = primitiveSphere(EARTH_RADIUS + EARTH_RADIUS_OUTER, {\n segments: EARTH_SEGMENTS,\n });\n const { positionsArr, indicesArr, normalArr } = earthmesh;\n return {\n vertices: positionsArr,\n indices: indicesArr,\n size: 5,\n normals: normalArr,\n };\n}\n"],"file":"triangulation.js"}
@@ -1,9 +1,9 @@
1
- import BaseLayer from '../core/BaseLayer';
1
+ import LayerGroup from '../core/LayerGroup';
2
2
  import { ImageTileModelType } from './models/index';
3
3
  interface IImageLayerStyleOptions {
4
4
  opacity: number;
5
5
  }
6
- export default class ImageTileLayer extends BaseLayer<IImageLayerStyleOptions> {
6
+ export default class ImageTileLayer extends LayerGroup<IImageLayerStyleOptions> {
7
7
  type: string;
8
8
  buildModels(): void;
9
9
  rebuildModels(): void;
@@ -10,11 +10,11 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflec
10
10
 
11
11
  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; } }
12
12
 
13
- import BaseLayer from '../core/BaseLayer';
13
+ import LayerGroup from '../core/LayerGroup';
14
14
  import ImageTileModels from './models/index';
15
15
 
16
- var ImageTileLayer = function (_BaseLayer) {
17
- _inherits(ImageTileLayer, _BaseLayer);
16
+ var ImageTileLayer = function (_LayerGroup) {
17
+ _inherits(ImageTileLayer, _LayerGroup);
18
18
 
19
19
  var _super = _createSuper(ImageTileLayer);
20
20
 
@@ -76,7 +76,7 @@ var ImageTileLayer = function (_BaseLayer) {
76
76
  }]);
77
77
 
78
78
  return ImageTileLayer;
79
- }(BaseLayer);
79
+ }(LayerGroup);
80
80
 
81
81
  export { ImageTileLayer as default };
82
82
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/imagetile/index.ts"],"names":["BaseLayer","ImageTileModels","ImageTileLayer","modelType","getModelType","layerModel","models","initModels","buildModels","properties","opacity","type","minimum","maximum","defaultConfig","imageTile"],"mappings":";;;;;;;;;;;;AAAA,OAAOA,SAAP,MAAsB,mBAAtB;AACA,OAAOC,eAAP,MAAoD,gBAApD;;IAIqBC,c;;;;;;;;;;;;;;;;2DACG,gB;;;;;;;WACtB,uBAAqB;AACnB,UAAMC,SAAS,GAAG,KAAKC,YAAL,EAAlB;AACA,WAAKC,UAAL,GAAkB,IAAIJ,eAAe,CAACE,SAAD,CAAnB,CAA+B,IAA/B,CAAlB;AACA,WAAKG,MAAL,GAAc,KAAKD,UAAL,CAAgBE,UAAhB,EAAd;AACD;;;WACD,yBAAuB;AACrB,WAAKD,MAAL,GAAc,KAAKD,UAAL,CAAgBG,WAAhB,EAAd;AACD;;;WACD,2BAA4B;AAC1B,aAAO;AACLC,QAAAA,UAAU,EAAE;AACVC,UAAAA,OAAO,EAAE;AACPC,YAAAA,IAAI,EAAE,QADC;AAEPC,YAAAA,OAAO,EAAE,CAFF;AAGPC,YAAAA,OAAO,EAAE;AAHF;AADC;AADP,OAAP;AASD;;;WACD,4BAA6B;AAC3B,UAAMF,IAAI,GAAG,KAAKP,YAAL,EAAb;AACA,UAAMU,aAAa,GAAG;AACpBC,QAAAA,SAAS,EAAE;AADS,OAAtB;AAGA,aAAOD,aAAa,CAACH,IAAD,CAApB;AACD;;;WAED,wBAA6C;AAC3C,aAAO,WAAP;AACD;;;;EA/ByCX,S;;SAAvBE,c","sourcesContent":["import BaseLayer from '../core/BaseLayer';\nimport ImageTileModels, { ImageTileModelType } from './models/index';\ninterface IImageLayerStyleOptions {\n opacity: number;\n}\nexport default class ImageTileLayer extends BaseLayer<IImageLayerStyleOptions> {\n public type: string = 'ImageTileLayer';\n public buildModels() {\n const modelType = this.getModelType();\n this.layerModel = new ImageTileModels[modelType](this);\n this.models = this.layerModel.initModels();\n }\n public rebuildModels() {\n this.models = this.layerModel.buildModels();\n }\n protected getConfigSchema() {\n return {\n properties: {\n opacity: {\n type: 'number',\n minimum: 0,\n maximum: 1,\n },\n },\n };\n }\n protected getDefaultConfig() {\n const type = this.getModelType();\n const defaultConfig = {\n imageTile: {},\n };\n return defaultConfig[type];\n }\n\n protected getModelType(): ImageTileModelType {\n return 'imageTile';\n }\n}\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../src/imagetile/index.ts"],"names":["LayerGroup","ImageTileModels","ImageTileLayer","modelType","getModelType","layerModel","models","initModels","buildModels","properties","opacity","type","minimum","maximum","defaultConfig","imageTile"],"mappings":";;;;;;;;;;;;AAAA,OAAOA,UAAP,MAAuB,oBAAvB;AACA,OAAOC,eAAP,MAAoD,gBAApD;;IAIqBC,c;;;;;;;;;;;;;;;;2DAGG,gB;;;;;;;WACtB,uBAAqB;AACnB,UAAMC,SAAS,GAAG,KAAKC,YAAL,EAAlB;AACA,WAAKC,UAAL,GAAkB,IAAIJ,eAAe,CAACE,SAAD,CAAnB,CAA+B,IAA/B,CAAlB;AACA,WAAKG,MAAL,GAAc,KAAKD,UAAL,CAAgBE,UAAhB,EAAd;AACD;;;WACD,yBAAuB;AACrB,WAAKD,MAAL,GAAc,KAAKD,UAAL,CAAgBG,WAAhB,EAAd;AACD;;;WACD,2BAA4B;AAC1B,aAAO;AACLC,QAAAA,UAAU,EAAE;AACVC,UAAAA,OAAO,EAAE;AACPC,YAAAA,IAAI,EAAE,QADC;AAEPC,YAAAA,OAAO,EAAE,CAFF;AAGPC,YAAAA,OAAO,EAAE;AAHF;AADC;AADP,OAAP;AASD;;;WACD,4BAA6B;AAC3B,UAAMF,IAAI,GAAG,KAAKP,YAAL,EAAb;AACA,UAAMU,aAAa,GAAG;AACpBC,QAAAA,SAAS,EAAE;AADS,OAAtB;AAGA,aAAOD,aAAa,CAACH,IAAD,CAApB;AACD;;;WAED,wBAA6C;AAC3C,aAAO,WAAP;AACD;;;;EAjCyCX,U;;SAAvBE,c","sourcesContent":["import LayerGroup from '../core/LayerGroup';\nimport ImageTileModels, { ImageTileModelType } from './models/index';\ninterface IImageLayerStyleOptions {\n opacity: number;\n}\nexport default class ImageTileLayer extends LayerGroup<\n IImageLayerStyleOptions\n> {\n public type: string = 'ImageTileLayer';\n public buildModels() {\n const modelType = this.getModelType();\n this.layerModel = new ImageTileModels[modelType](this);\n this.models = this.layerModel.initModels();\n }\n public rebuildModels() {\n this.models = this.layerModel.buildModels();\n }\n protected getConfigSchema() {\n return {\n properties: {\n opacity: {\n type: 'number',\n minimum: 0,\n maximum: 1,\n },\n },\n };\n }\n protected getDefaultConfig() {\n const type = this.getModelType();\n const defaultConfig = {\n imageTile: {},\n };\n return defaultConfig[type];\n }\n\n protected getModelType(): ImageTileModelType {\n return 'imageTile';\n }\n}\n"],"file":"index.js"}
@@ -5,8 +5,8 @@ export default class ImageTileModel extends BaseModel {
5
5
  private timestamp;
6
6
  getUninforms(): IModelUniform;
7
7
  tile(): void;
8
- initModels(): import("@antv/l7-core").IModel[];
8
+ initModels(): never[];
9
9
  clearModels(): void;
10
- buildModels(): import("@antv/l7-core").IModel[];
10
+ buildModels(): never[];
11
11
  protected registerBuiltinAttributes(): void;
12
12
  }
@@ -11,11 +11,7 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflec
11
11
 
12
12
  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; } }
13
13
 
14
- import { gl } from '@antv/l7-core';
15
14
  import BaseModel from '../../core/BaseModel';
16
- import { RasterImageTriangulation } from '../../core/triangulation';
17
- var ImageTileFrag = "precision mediump float;\nvoid main() {\n gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);\n}\n";
18
- var ImageTileVert = "precision highp float;\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\nattribute vec3 a_Position;\n#pragma include \"projection\"\nvoid main() {\n vec4 project_pos = project_position(vec4(a_Position, 1.0));\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n gl_Position = u_Mvp * (vec4(project_pos.xy,0., 1.0));\n } else {\n gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy,0., 1.0));\n }\n}\n";
19
15
  import Tile from '../utils/Tile';
20
16
 
21
17
  var ImageTileModel = function (_BaseModel) {
@@ -111,17 +107,7 @@ var ImageTileModel = function (_BaseModel) {
111
107
  });
112
108
  }
113
109
 
114
- return [this.layer.buildLayerModel({
115
- moduleName: 'ImageTileLayer',
116
- vertexShader: ImageTileVert,
117
- fragmentShader: ImageTileFrag,
118
- triangulation: RasterImageTriangulation,
119
- primitive: gl.TRIANGLES,
120
- depth: {
121
- enable: false
122
- },
123
- blend: this.getBlend()
124
- })];
110
+ return [];
125
111
  }
126
112
  }, {
127
113
  key: "clearModels",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/imagetile/models/imagetile.ts"],"names":["gl","BaseModel","RasterImageTriangulation","Tile","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","url","layerService","crstype","tile","on","e","timestamp","clearTimeout","setTimeout","buildLayerModel","moduleName","vertexShader","ImageTileVert","fragmentShader","ImageTileFrag","triangulation","primitive","TRIANGLES","depth","enable","blend","getBlend","removeTiles","initModels"],"mappings":"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","sourcesContent":["import { gl, IModelUniform } from '@antv/l7-core';\nimport BaseModel from '../../core/BaseModel';\nimport { RasterImageTriangulation } from '../../core/triangulation';\nimport ImageTileFrag from './shaders/imagetile_frag.glsl';\nimport ImageTileVert from './shaders/imagetile_vert.glsl';\n\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 this.layer.buildLayerModel({\n moduleName: 'ImageTileLayer',\n vertexShader: ImageTileVert,\n fragmentShader: ImageTileFrag,\n triangulation: RasterImageTriangulation,\n primitive: gl.TRIANGLES,\n depth: { enable: false },\n blend: this.getBlend(),\n }),\n ];\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
+ {"version":3,"sources":["../../../src/imagetile/models/imagetile.ts"],"names":["BaseModel","Tile","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","url","layerService","crstype","tile","on","e","timestamp","clearTimeout","setTimeout","removeTiles","initModels"],"mappings":";;;;;;;;;;;;;AACA,OAAOA,SAAP,MAAsB,sBAAtB;AACA,OAAOC,IAAP,MAAiB,eAAjB;;IAOqBC,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,IAAIV,IAAJ,CAAS;AACxB8B,UAAAA,GAAG,EAAEJ,MAAM,CAACE,IAAP,CAAYC,OADO;AAExBE,UAAAA,YAAY,EAAE,KAAKA,YAFK;AAGxBV,UAAAA,KAAK,EAAE,KAAKA,KAHY;AAIxBG,UAAAA,UAAU,EAAVA,UAJwB;AAKxBC,UAAAA,aAAa,EAAbA,aALwB;AAOxBO,UAAAA,OAAO,EAAE;AAPe,SAAT,CAAjB;AAWA,aAAKC,IAAL;AAEA,aAAK/B,UAAL,CAAgBgC,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,CAACpC,UAAL,CAAgBa,OAAhB,MAA6B,GAAjC,EAAsC;AACpC,cAAA,MAAI,CAACkB,IAAL;AACD;AACF,WAL0B,EAKxB,GALwB,CAA3B;AAMD,SAZD;AAaD;;AAED,aAAO,EAAP;AACD;;;WAED,uBAAqB;AACnB,WAAKvB,SAAL,CAAe6B,WAAf;AACD;;;WAED,uBAAqB;AACnB,aAAO,KAAKC,UAAL,EAAP;AACD;;;WAED,qCAAsC;AACpC;AACD;;;;EA1EyCzC,S;;SAAvBE,c","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,5 +1,5 @@
1
1
  import { Bounds } from '@antv/geo-coord';
2
- import { ILayer, ILayerService, ILngLat } from '@antv/l7-core';
2
+ import { ILayerGroup, ILayerService, ILngLat } from '@antv/l7-core';
3
3
  export default class Tile {
4
4
  tileList: any;
5
5
  tileCache: any;
@@ -12,7 +12,7 @@ export default class Tile {
12
12
  crstype: string;
13
13
  currentCrs: any;
14
14
  layerService: ILayerService;
15
- layer: ILayer;
15
+ layer: ILayerGroup;
16
16
  constructor(props: any);
17
17
  calCurrentTiles(oprions: any): void;
18
18
  pxBoundsToTileRange(pixelBounds: any): Bounds;
@@ -217,7 +217,7 @@ var Tile = function () {
217
217
  t.current = true;
218
218
  t.retain = true;
219
219
  t.active = true;
220
- this.layer.layerChildren.push(tile.imageLayer);
220
+ this.layer.addChild(tile.imageLayer);
221
221
  this.tileCache.setTile(tile, key);
222
222
  this.pruneTiles();
223
223
  this.layerService.updateLayerRenderList();
@@ -275,13 +275,7 @@ var Tile = function () {
275
275
  }, {
276
276
  key: "destroyTile",
277
277
  value: function destroyTile(tile) {
278
- var layerIndex = this.layer.layerChildren.indexOf(tile.imageLayer);
279
-
280
- if (layerIndex > -1) {
281
- this.layer.layerChildren.splice(layerIndex, 1);
282
- }
283
-
284
- tile.imageLayer.destroy();
278
+ this.layer.removeChild(tile.imageLayer);
285
279
  this.layerService.updateLayerRenderList();
286
280
  this.layerService.renderLayers();
287
281
  tile = null;
@@ -304,10 +298,7 @@ var Tile = function () {
304
298
  }, {
305
299
  key: "removeTiles",
306
300
  value: function removeTiles() {
307
- this.layer.layerChildren.forEach(function (layer) {
308
- layer.destroy();
309
- });
310
- this.layer.layerChildren = [];
301
+ this.layer.clearChild();
311
302
  this.layerService.updateLayerRenderList();
312
303
  this.layerService.renderLayers();
313
304
  this.tileList = {};
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/imagetile/utils/Tile.ts"],"names":["Bounds","GeoCoordinates","Point","toLngLat","createLayerContainer","ImageTile","TileCache","CacheLimit","Tile","props","layerService","layer","url","resolution","maxSourceZoom","crstype","currentCrs","default","start","x","y","end","projection","crs","destroyTile","bind","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","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","retain","active","split","v","Number","z","retainParent","retainChildren","removeOutTiles","t","getTile","container","sceneContainer","name","layerChildren","imageLayer","setTile","updateLayerRenderList","renderLayers","show","x2","y2","z2","loaded","layerIndex","indexOf","splice","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.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.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"}
1
+ {"version":3,"sources":["../../../src/imagetile/utils/Tile.ts"],"names":["Bounds","GeoCoordinates","Point","toLngLat","createLayerContainer","ImageTile","TileCache","CacheLimit","Tile","props","layerService","layer","url","resolution","maxSourceZoom","crstype","currentCrs","default","start","x","y","end","projection","crs","destroyTile","bind","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","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","retain","active","split","v","Number","z","retainParent","retainChildren","removeOutTiles","t","getTile","container","sceneContainer","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"}
@@ -18,7 +18,7 @@ import { LineTriangulation } from '../../core/triangulation';
18
18
  var line_dash_frag = "#define LineTypeSolid 0.0\nuniform float u_opacity : 1.0;\n\nvarying vec4 v_color;\n\n// dash\nvarying vec4 v_dash_array;\n\n#pragma include \"picking\"\n\nuniform float u_time;\nuniform vec4 u_aimate: [ 0, 2., 1.0, 0.2 ]; // \u63A7\u5236\u8FD0\u52A8\n\nvarying mat4 styleMappingMat;\n// [animate, duration, interval, trailLength],\nvoid main() {\n float opacity = styleMappingMat[0][0];\n float d_distance_ratio = styleMappingMat[3].r; // \u5F53\u524D\u70B9\u4F4D\u8DDD\u79BB\u5360\u7EBF\u603B\u957F\u7684\u6BD4\u4F8B\n gl_FragColor = v_color;\n gl_FragColor.a *= opacity; // \u5168\u5C40\u900F\u660E\u5EA6\n // dash line\n \n float flag = 0.;\n float dashLength = mod(d_distance_ratio, v_dash_array.x + v_dash_array.y + v_dash_array.z + v_dash_array.w);\n if(dashLength < v_dash_array.x || (dashLength > (v_dash_array.x + v_dash_array.y) && dashLength < v_dash_array.x + v_dash_array.y + v_dash_array.z)) {\n flag = 1.;\n }\n gl_FragColor.a *=flag;\n\n gl_FragColor = filterColor(gl_FragColor);\n}\n";
19
19
  var line_dash_vert = "#define LineTypeSolid 0.0\n#define LineTypeDash 1.0\n#define Animate 0.0\n\nattribute float a_Miter;\nattribute vec4 a_Color;\nattribute vec2 a_Size;\nattribute vec3 a_Normal;\nattribute vec3 a_Position;\n\nattribute vec2 a_iconMapUV;\n\n// dash line\nattribute float a_Total_Distance;\nattribute float a_Distance;\n\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\nuniform vec4 u_dash_array: [10.0, 5., 0, 0];\n\nuniform float u_vertexScale: 1.0;\n\n#pragma include \"projection\"\n#pragma include \"picking\"\n\nvarying vec4 v_color;\nvarying vec4 v_dash_array;\n\nuniform float u_opacity: 1.0;\nvarying mat4 styleMappingMat; // \u7528\u4E8E\u5C06\u5728\u9876\u70B9\u7740\u8272\u5668\u4E2D\u8BA1\u7B97\u597D\u7684\u6837\u5F0F\u503C\u4F20\u9012\u7ED9\u7247\u5143\n\n#pragma include \"styleMapping\"\n#pragma include \"styleMappingCalOpacity\"\n\nvoid main() {\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n styleMappingMat = mat4(\n 0.0, 0.0, 0.0, 0.0, // opacity - strokeOpacity - strokeWidth - empty\n 0.0, 0.0, 0.0, 0.0, // strokeR - strokeG - strokeB - strokeA\n 0.0, 0.0, 0.0, 0.0, // offsets[0] - offsets[1]\n 0.0, 0.0, 0.0, 0.0 // distance_ratio/distance/pixelLen/texV\n );\n\n float rowCount = u_cellTypeLayout[0][0]; // \u5F53\u524D\u7684\u6570\u636E\u7EB9\u7406\u6709\u51E0\u884C\n float columnCount = u_cellTypeLayout[0][1]; // \u5F53\u770B\u5230\u6570\u636E\u7EB9\u7406\u6709\u51E0\u5217\n float columnWidth = 1.0/columnCount; // \u5217\u5BBD\n float rowHeight = 1.0/rowCount; // \u884C\u9AD8\n float cellCount = calCellCount(); // opacity - strokeOpacity - strokeWidth - stroke - offsets\n float id = a_vertexId; // \u7B2Cn\u4E2A\u9876\u70B9\n float cellCurrentRow = floor(id * cellCount / columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u884C\n float cellCurrentColumn = mod(id * cellCount, columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u5217\n \n // cell \u56FA\u5B9A\u987A\u5E8F opacity -> strokeOpacity -> strokeWidth -> stroke ... \n // \u6309\u987A\u5E8F\u4ECE cell \u4E2D\u53D6\u503C\u3001\u82E5\u6CA1\u6709\u5219\u81EA\u52A8\u5F80\u4E0B\u53D6\u503C\n float textureOffset = 0.0; // \u5728 cell \u4E2D\u53D6\u503C\u7684\u504F\u79FB\u91CF\n\n vec2 opacityAndOffset = calOpacityAndOffset(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset, columnWidth, rowHeight);\n styleMappingMat[0][0] = opacityAndOffset.r;\n textureOffset = opacityAndOffset.g;\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n\n v_dash_array = pow(2.0, 20.0 - u_Zoom) * u_dash_array / a_Total_Distance;\n v_color = a_Color;\n\n vec3 size = a_Miter * setPickingSize(a_Size.x) * reverse_offset_normal(a_Normal);\n vec2 offset = project_pixel(size.xy);\n\n // \u8BBE\u7F6E\u6570\u636E\u96C6\u7684\u53C2\u6570\n styleMappingMat[3][0] = a_Distance / a_Total_Distance; // \u5F53\u524D\u70B9\u4F4D\u8DDD\u79BB\u5360\u7EBF\u603B\u957F\u7684\u6BD4\u4F8B\n styleMappingMat[3][1] = a_Distance; // \u5F53\u524D\u9876\u70B9\u7684\u8DDD\u79BB\n\n vec4 project_pos = project_position(vec4(a_Position.xy, 0, 1.0));\n\n // gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy + offset, a_Size.y, 1.0));\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n gl_Position = u_Mvp * (vec4(project_pos.xy + offset, project_pixel(a_Size.y), 1.0));\n } else {\n float lineHeight = a_Size.y;\n \n // #define COORDINATE_SYSTEM_P20 5.0\n // #define COORDINATE_SYSTEM_P20_OFFSET 6.0\n // amap1.x\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20 || u_CoordinateSystem == COORDINATE_SYSTEM_P20_OFFSET) {\n // \u4FDD\u6301\u9AD8\u5EA6\u76F8\u5BF9\u4E0D\u53D8\n lineHeight *= pow(2.0, 20.0 - u_Zoom);\n }\n\n gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy + offset, lineHeight, 1.0));\n }\n\n setPickingColor(a_PickingColor);\n}\n";
20
20
  var line_frag = "#define Animate 0.0\n#define LineTexture 1.0\nuniform float u_blur : 0.99;\nuniform float u_opacity : 1.0;\nuniform float u_textureBlend;\n\nuniform float u_borderWidth: 0.0;\nuniform vec4 u_borderColor;\nvarying vec4 v_color;\n\n// line texture\nuniform float u_line_texture;\nuniform sampler2D u_texture;\nuniform vec2 u_textSize;\n\nvarying vec2 v_iconMapUV;\n\n#pragma include \"picking\"\n\nuniform float u_time;\nuniform vec4 u_aimate: [ 0, 2., 1.0, 0.2 ]; // \u63A7\u5236\u8FD0\u52A8\n\nvarying mat4 styleMappingMat;\n// [animate, duration, interval, trailLength],\nvoid main() {\n float opacity = styleMappingMat[0][0];\n float animateSpeed = 0.0; // \u8FD0\u52A8\u901F\u5EA6\n float d_distance_ratio = styleMappingMat[3].r; // \u5F53\u524D\u70B9\u4F4D\u8DDD\u79BB\u5360\u7EBF\u603B\u957F\u7684\u6BD4\u4F8B\n gl_FragColor = v_color;\n // anti-alias\n // float blur = 1.0 - smoothstep(u_blur, 1., length(v_normal.xy));\n gl_FragColor.a *= opacity; // \u5168\u5C40\u900F\u660E\u5EA6\n if(u_aimate.x == Animate) {\n animateSpeed = u_time / u_aimate.y;\n float alpha =1.0 - fract( mod(1.0- d_distance_ratio, u_aimate.z)* (1.0/ u_aimate.z) + animateSpeed);\n alpha = (alpha + u_aimate.w -1.0) / u_aimate.w;\n alpha = smoothstep(0., 1., alpha);\n gl_FragColor.a *= alpha;\n }\n\n if(u_line_texture == LineTexture) { // while load texture\n float aDistance = styleMappingMat[3].g; // \u5F53\u524D\u9876\u70B9\u7684\u8DDD\u79BB\n float d_texPixelLen = styleMappingMat[3].b; // \u8D34\u56FE\u7684\u50CF\u7D20\u957F\u5EA6\uFF0C\u6839\u636E\u5730\u56FE\u5C42\u7EA7\u7F29\u653E\n float u = fract(mod(aDistance, d_texPixelLen)/d_texPixelLen - animateSpeed);\n float v = styleMappingMat[3].a; // \u7EBF\u56FE\u5C42\u8D34\u56FE\u90E8\u5206\u7684 v \u5750\u6807\u503C\n\n // v = max(smoothstep(0.95, 1.0, v), v);\n vec2 uv= v_iconMapUV / u_textSize + vec2(u, v) / u_textSize * 64.;\n \n // gl_FragColor = filterColor(gl_FragColor + texture2D(u_texture, vec2(u, v)));\n // gl_FragColor = filterColor(gl_FragColor + texture2D(u_texture, uv));\n vec4 pattern = texture2D(u_texture, uv);\n\n if(u_textureBlend == 0.0) { // normal\n pattern.a = 0.0;\n gl_FragColor += pattern;\n } else { // replace\n pattern.a *= opacity;\n if(gl_FragColor.a <= 0.0) {\n pattern.a = 0.0;\n }\n gl_FragColor = pattern;\n }\n } \n\n float v = styleMappingMat[3].a;\n float borderWidth = min(0.5, u_borderWidth);\n // \u7ED8\u5236 border\n if(borderWidth > 0.01) {\n float borderOuterWidth = borderWidth/2.0;\n\n if(v >= 1.0 - borderWidth || v <= borderWidth) {\n if(v > borderWidth) {\n float linear = smoothstep(0.0, 1.0, (v - (1.0 - borderWidth))/borderWidth);\n gl_FragColor.rgb = mix(gl_FragColor.rgb, u_borderColor.rgb, linear);\n } else if(v <= borderWidth) {\n float linear = smoothstep(0.0, 1.0, v/borderWidth);\n gl_FragColor.rgb = mix(u_borderColor.rgb, gl_FragColor.rgb, linear);\n }\n }\n\n if(v < borderOuterWidth) {\n gl_FragColor.a = mix(0.0, gl_FragColor.a, v/borderOuterWidth);\n } else if(v > 1.0 - borderOuterWidth) {\n gl_FragColor.a = mix(gl_FragColor.a, 0.0, (v - (1.0 - borderOuterWidth))/borderOuterWidth);\n }\n }\n\n gl_FragColor = filterColor(gl_FragColor);\n}\n";
21
- var line_vert = "\n#define Animate 0.0\n\nattribute float a_Miter;\nattribute vec4 a_Color;\nattribute vec2 a_Size;\nattribute vec3 a_Normal;\nattribute vec3 a_Position;\n\nattribute vec2 a_iconMapUV;\n\n// dash line\nattribute float a_Total_Distance;\nattribute float a_Distance;\n\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\nuniform vec4 u_aimate: [ 0, 2., 1.0, 0.2 ];\nuniform float u_icon_step: 100;\n\nuniform float u_heightfixed: 0.0;\nuniform float u_vertexScale: 1.0;\nuniform float u_raisingHeight: 0.0;\n\n#pragma include \"projection\"\n#pragma include \"picking\"\n\nvarying vec4 v_color;\n\n// texV \u7EBF\u56FE\u5C42 - \u8D34\u56FE\u90E8\u5206\u7684 v \u5750\u6807\uFF08\u7EBF\u7684\u5BBD\u5EA6\u65B9\u5411\uFF09\nvarying vec2 v_iconMapUV;\n\n\nuniform float u_linearColor: 0;\n\nuniform float u_opacity: 1.0;\nvarying mat4 styleMappingMat; // \u7528\u4E8E\u5C06\u5728\u9876\u70B9\u7740\u8272\u5668\u4E2D\u8BA1\u7B97\u597D\u7684\u6837\u5F0F\u503C\u4F20\u9012\u7ED9\u7247\u5143\n\n#pragma include \"styleMapping\"\n#pragma include \"styleMappingCalOpacity\"\n\nvoid main() {\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n styleMappingMat = mat4(\n 0.0, 0.0, 0.0, 0.0, // opacity - strokeOpacity - strokeWidth - empty\n 0.0, 0.0, 0.0, 0.0, // strokeR - strokeG - strokeB - strokeA\n 0.0, 0.0, 0.0, 0.0, // offsets[0] - offsets[1]\n 0.0, 0.0, 0.0, 0.0 // distance_ratio/distance/pixelLen/texV\n );\n\n float rowCount = u_cellTypeLayout[0][0]; // \u5F53\u524D\u7684\u6570\u636E\u7EB9\u7406\u6709\u51E0\u884C\n float columnCount = u_cellTypeLayout[0][1]; // \u5F53\u770B\u5230\u6570\u636E\u7EB9\u7406\u6709\u51E0\u5217\n float columnWidth = 1.0/columnCount; // \u5217\u5BBD\n float rowHeight = 1.0/rowCount; // \u884C\u9AD8\n float cellCount = calCellCount(); // opacity - strokeOpacity - strokeWidth - stroke - offsets\n float id = a_vertexId; // \u7B2Cn\u4E2A\u9876\u70B9\n float cellCurrentRow = floor(id * cellCount / columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u884C\n float cellCurrentColumn = mod(id * cellCount, columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u5217\n \n // cell \u56FA\u5B9A\u987A\u5E8F opacity -> strokeOpacity -> strokeWidth -> stroke ... \n // \u6309\u987A\u5E8F\u4ECE cell \u4E2D\u53D6\u503C\u3001\u82E5\u6CA1\u6709\u5219\u81EA\u52A8\u5F80\u4E0B\u53D6\u503C\n float textureOffset = 0.0; // \u5728 cell \u4E2D\u53D6\u503C\u7684\u504F\u79FB\u91CF\n\n vec2 opacityAndOffset = calOpacityAndOffset(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset, columnWidth, rowHeight);\n styleMappingMat[0][0] = opacityAndOffset.r;\n textureOffset = opacityAndOffset.g;\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n\n float d_texPixelLen; // \u8D34\u56FE\u7684\u50CF\u7D20\u957F\u5EA6\uFF0C\u6839\u636E\u5730\u56FE\u5C42\u7EA7\u7F29\u653E\n\n v_iconMapUV = a_iconMapUV;\n d_texPixelLen = project_float_pixel(u_icon_step);\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) {\n d_texPixelLen *= 10.0;\n }\n\n v_color = a_Color;\n\n vec3 size = a_Miter * setPickingSize(a_Size.x) * reverse_offset_normal(a_Normal);\n\n vec2 offset = project_pixel(size.xy);\n\n float lineOffsetWidth = length(offset + offset * sign(a_Miter)); // \u7EBF\u6A2A\u5411\u504F\u79FB\u7684\u8DDD\u79BB\uFF08\u5411\u4E24\u4FA7\u504F\u79FB\u7684\u548C\uFF09\n float linePixelSize = project_pixel(a_Size.x) * 2.0; // \u5B9A\u70B9\u4F4D\u7F6E\u504F\u79FB\uFF0C\u6309\u5730\u56FE\u7B49\u7EA7\u7F29\u653E\u540E\u7684\u8DDD\u79BB \u5355\u4FA7 * 2\n float texV = lineOffsetWidth/linePixelSize; // \u7EBF\u56FE\u5C42\u8D34\u56FE\u90E8\u5206\u7684 v \u5750\u6807\u503C\n\n // \u8BBE\u7F6E\u6570\u636E\u96C6\u7684\u53C2\u6570\n styleMappingMat[3][0] = a_Distance / a_Total_Distance;; // \u5F53\u524D\u70B9\u4F4D\u8DDD\u79BB\u5360\u7EBF\u603B\u957F\u7684\u6BD4\u4F8B\n styleMappingMat[3][1] = a_Distance; // \u5F53\u524D\u9876\u70B9\u7684\u8DDD\u79BB\n styleMappingMat[3][2] = d_texPixelLen; // \u8D34\u56FE\u7684\u50CF\u7D20\u957F\u5EA6\uFF0C\u6839\u636E\u5730\u56FE\u5C42\u7EA7\u7F29\u653E\n styleMappingMat[3][3] = texV; // \u7EBF\u56FE\u5C42\u8D34\u56FE\u90E8\u5206\u7684 v \u5750\u6807\u503C\n\n vec4 project_pos = project_position(vec4(a_Position.xy, 0, 1.0));\n\n // gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy + offset, a_Size.y, 1.0));\n\n float h = float(a_Position.z) * u_vertexScale; // \u7EBF\u9876\u70B9\u7684\u9AD8\u5EA6 - \u517C\u5BB9\u4E0D\u5B58\u5728\u7B2C\u4E09\u4E2A\u6570\u503C\u7684\u60C5\u51B5 vertex height\n float lineHeight = a_Size.y; // size \u7B2C\u4E8C\u4E2A\u53C2\u6570\u4EE3\u8868\u7684\u9AD8\u5EA6 [linewidth, lineheight]\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n lineHeight *= 0.2; // \u4FDD\u6301\u548C amap/mapbox \u4E00\u81F4\u7684\u6548\u679C\n h *= 0.2;\n if(u_heightfixed < 1.0) {\n lineHeight = project_pixel(a_Size.y);\n }\n gl_Position = u_Mvp * (vec4(project_pos.xy + offset, lineHeight + h + u_raisingHeight, 1.0));\n } else {\n // mapbox - amap\n \n // \u517C\u5BB9 mapbox \u5728\u7EBF\u9AD8\u5EA6\u4E0A\u7684\u6548\u679C\u8868\u73B0\u57FA\u672C\u4E00\u81F4\n if(u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT || u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSET) {\n // mapbox\n // \u4FDD\u6301\u9AD8\u5EA6\u76F8\u5BF9\u4E0D\u53D8\n float mapboxZoomScale = 4.0/pow(2.0, 21.0 - u_Zoom);\n h *= mapboxZoomScale;\n h += u_raisingHeight * mapboxZoomScale;\n if(u_heightfixed > 0.0) {\n lineHeight *= mapboxZoomScale;\n }\n \n } else {\n // amap\n h += u_raisingHeight;\n // lineHeight \u9876\u70B9\u504F\u79FB\u9AD8\u5EA6\n if(u_heightfixed < 1.0) {\n lineHeight *= pow(2.0, 20.0 - u_Zoom);\n }\n }\n\n gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy + offset, lineHeight + h, 1.0));\n }\n\n setPickingColor(a_PickingColor);\n}\n";
21
+ var line_vert = "\n#define Animate 0.0\n\nattribute float a_Miter;\nattribute vec4 a_Color;\nattribute vec2 a_Size;\nattribute vec3 a_Normal;\nattribute vec3 a_Position;\n\nattribute vec2 a_iconMapUV;\n\n// dash line\nattribute float a_Total_Distance;\nattribute vec2 a_Distance;\n\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\nuniform vec4 u_aimate: [ 0, 2., 1.0, 0.2 ];\nuniform float u_icon_step: 100;\n\nuniform float u_heightfixed: 0.0;\nuniform float u_vertexScale: 1.0;\nuniform float u_raisingHeight: 0.0;\n\n#pragma include \"projection\"\n#pragma include \"picking\"\n\nvarying vec4 v_color;\n\n// texV \u7EBF\u56FE\u5C42 - \u8D34\u56FE\u90E8\u5206\u7684 v \u5750\u6807\uFF08\u7EBF\u7684\u5BBD\u5EA6\u65B9\u5411\uFF09\nvarying vec2 v_iconMapUV;\n\n\nuniform float u_linearColor: 0;\nuniform float u_arrow: 0.0;\nuniform float u_arrowHeight: 3.0;\nuniform float u_arrowWidth: 2.0;\n\nuniform float u_opacity: 1.0;\nvarying mat4 styleMappingMat; // \u7528\u4E8E\u5C06\u5728\u9876\u70B9\u7740\u8272\u5668\u4E2D\u8BA1\u7B97\u597D\u7684\u6837\u5F0F\u503C\u4F20\u9012\u7ED9\u7247\u5143\n\n#pragma include \"styleMapping\"\n#pragma include \"styleMappingCalOpacity\"\n\nvec2 calculateArrow(vec2 offset) {\n /*\n * \u5728\u652F\u6301\u7BAD\u5934\u7684\u65F6\u5019\uFF0C\u7B2C\u4E8C\u3001\u7B2C\u4E09\u7EC4\u9876\u70B9\u662F\u989D\u5916\u63D2\u5165\u7528\u4E8E\u6784\u5EFA\u9876\u70B9\u7684\n */\n float arrowFlag = -1.0;\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) {\n // \u9AD8\u5FB7 2.0 \u7684\u65CB\u8F6C\u89D2\u5EA6\u4E0D\u540C\n arrowFlag = 1.0;\n }\n float pi = arrowFlag * 3.1415926/2.;\n if(a_Miter < 0.) {\n // \u6839\u636E\u7EBF\u7684\u4E24\u4FA7\u504F\u79FB\u4E0D\u540C\u3001\u65CB\u8F6C\u7684\u65B9\u5411\u76F8\u53CD\n pi = -pi;\n }\n highp float angle_sin = sin(pi);\n highp float angle_cos = cos(pi);\n // \u8BA1\u7B97\u5782\u76F4\u4E0E\u7EBF\u65B9\u5411\u7684\u65CB\u8F6C\u77E9\u9635\n mat2 rotation_matrix = mat2(angle_cos, -1.0 * angle_sin, angle_sin, angle_cos);\n float arrowWidth = u_arrowWidth;\n float arrowHeight = u_arrowHeight;\n\n vec2 arrowOffset = vec2(0.0);\n /*\n * a_Distance.y \u7528\u4E8E\u6807\u8BB0\u5F53\u524D\u9876\u70B9\u5C5E\u4E8E\u54EA\u4E00\u7EC4\uFF08\u4E24\u4E2A\u9876\u70B9\u4E00\u7EC4\uFF0C\u6784\u6210\u7EBF\u7684\u5176\u5B9E\u662F\u77E9\u5F62\uFF0C\u6700\u7B80\u9700\u8981\u56DB\u4E2A\u9876\u70B9\u3001\u4E24\u7EC4\u9876\u70B9\u6784\u6210\uFF09\n */\n if(a_Distance.y == 0.0) {\n // \u7BAD\u5934\u5C16\u90E8\n offset = vec2(0.0);\n } else if(a_Distance.y == 1.0) {\n // \u7BAD\u5934\u4E24\u4FA7\n arrowOffset = rotation_matrix*(offset * arrowHeight);\n offset += arrowOffset; // \u6CBF\u7EBF\u504F\u79FB\n offset = offset * arrowWidth; // \u5782\u76F4\u7EBF\u5411\u5916\u504F\u79FB\uFF08\u662F\u6784\u5EFA\u7BAD\u5934\u4E24\u4FA7\u7684\u9876\u70B9\uFF09\n } else if(a_Distance.y == 2.0 || a_Distance.y == 3.0 || a_Distance.y == 4.0) {\n // \u504F\u79FB\u5176\u4F59\u7684\u70B9\u4F4D\uFF08\u5C06\u957F\u5EA6\u8BA9\u4F4D\u7ED9\u7BAD\u5934\uFF09\n arrowOffset = rotation_matrix*(offset * arrowHeight) * arrowWidth;\n offset += arrowOffset;// \u6CBF\u7EBF\u504F\u79FB\n }\n\n return offset;\n}\n\nvoid main() {\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n styleMappingMat = mat4(\n 0.0, 0.0, 0.0, 0.0, // opacity - strokeOpacity - strokeWidth - empty\n 0.0, 0.0, 0.0, 0.0, // strokeR - strokeG - strokeB - strokeA\n 0.0, 0.0, 0.0, 0.0, // offsets[0] - offsets[1]\n 0.0, 0.0, 0.0, 0.0 // distance_ratio/distance/pixelLen/texV\n );\n\n float rowCount = u_cellTypeLayout[0][0]; // \u5F53\u524D\u7684\u6570\u636E\u7EB9\u7406\u6709\u51E0\u884C\n float columnCount = u_cellTypeLayout[0][1]; // \u5F53\u770B\u5230\u6570\u636E\u7EB9\u7406\u6709\u51E0\u5217\n float columnWidth = 1.0/columnCount; // \u5217\u5BBD\n float rowHeight = 1.0/rowCount; // \u884C\u9AD8\n float cellCount = calCellCount(); // opacity - strokeOpacity - strokeWidth - stroke - offsets\n float id = a_vertexId; // \u7B2Cn\u4E2A\u9876\u70B9\n float cellCurrentRow = floor(id * cellCount / columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u884C\n float cellCurrentColumn = mod(id * cellCount, columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u5217\n \n // cell \u56FA\u5B9A\u987A\u5E8F opacity -> strokeOpacity -> strokeWidth -> stroke ... \n // \u6309\u987A\u5E8F\u4ECE cell \u4E2D\u53D6\u503C\u3001\u82E5\u6CA1\u6709\u5219\u81EA\u52A8\u5F80\u4E0B\u53D6\u503C\n float textureOffset = 0.0; // \u5728 cell \u4E2D\u53D6\u503C\u7684\u504F\u79FB\u91CF\n\n vec2 opacityAndOffset = calOpacityAndOffset(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset, columnWidth, rowHeight);\n styleMappingMat[0][0] = opacityAndOffset.r;\n textureOffset = opacityAndOffset.g;\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n\n float d_texPixelLen; // \u8D34\u56FE\u7684\u50CF\u7D20\u957F\u5EA6\uFF0C\u6839\u636E\u5730\u56FE\u5C42\u7EA7\u7F29\u653E\n\n v_iconMapUV = a_iconMapUV;\n d_texPixelLen = project_float_pixel(u_icon_step);\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) {\n d_texPixelLen *= 10.0;\n }\n\n v_color = a_Color;\n\n vec3 size = a_Miter * setPickingSize(a_Size.x) * reverse_offset_normal(a_Normal);\n\n vec2 offset = project_pixel(size.xy);\n \n if(u_arrow > 0.0) {\n // \u8BA1\u7B97\u7BAD\u5934\n offset = calculateArrow(offset);\n }\n\n float lineOffsetWidth = length(offset + offset * sign(a_Miter)); // \u7EBF\u6A2A\u5411\u504F\u79FB\u7684\u8DDD\u79BB\uFF08\u5411\u4E24\u4FA7\u504F\u79FB\u7684\u548C\uFF09\n float linePixelSize = project_pixel(a_Size.x) * 2.0; // \u5B9A\u70B9\u4F4D\u7F6E\u504F\u79FB\uFF0C\u6309\u5730\u56FE\u7B49\u7EA7\u7F29\u653E\u540E\u7684\u8DDD\u79BB \u5355\u4FA7 * 2\n float texV = lineOffsetWidth/linePixelSize; // \u7EBF\u56FE\u5C42\u8D34\u56FE\u90E8\u5206\u7684 v \u5750\u6807\u503C\n\n // \u8BBE\u7F6E\u6570\u636E\u96C6\u7684\u53C2\u6570\n styleMappingMat[3][0] = a_Distance.x / a_Total_Distance;; // \u5F53\u524D\u70B9\u4F4D\u8DDD\u79BB\u5360\u7EBF\u603B\u957F\u7684\u6BD4\u4F8B\n styleMappingMat[3][1] = a_Distance.x; // \u5F53\u524D\u9876\u70B9\u7684\u8DDD\u79BB\n styleMappingMat[3][2] = d_texPixelLen; // \u8D34\u56FE\u7684\u50CF\u7D20\u957F\u5EA6\uFF0C\u6839\u636E\u5730\u56FE\u5C42\u7EA7\u7F29\u653E\n styleMappingMat[3][3] = texV; // \u7EBF\u56FE\u5C42\u8D34\u56FE\u90E8\u5206\u7684 v \u5750\u6807\u503C\n\n vec4 project_pos = project_position(vec4(a_Position.xy, 0, 1.0));\n\n // gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy + offset, a_Size.y, 1.0));\n\n float h = float(a_Position.z) * u_vertexScale; // \u7EBF\u9876\u70B9\u7684\u9AD8\u5EA6 - \u517C\u5BB9\u4E0D\u5B58\u5728\u7B2C\u4E09\u4E2A\u6570\u503C\u7684\u60C5\u51B5 vertex height\n float lineHeight = a_Size.y; // size \u7B2C\u4E8C\u4E2A\u53C2\u6570\u4EE3\u8868\u7684\u9AD8\u5EA6 [linewidth, lineheight]\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n lineHeight *= 0.2; // \u4FDD\u6301\u548C amap/mapbox \u4E00\u81F4\u7684\u6548\u679C\n h *= 0.2;\n if(u_heightfixed < 1.0) {\n lineHeight = project_pixel(a_Size.y);\n }\n gl_Position = u_Mvp * (vec4(project_pos.xy + offset, lineHeight + h + u_raisingHeight, 1.0));\n } else {\n // mapbox - amap\n \n // \u517C\u5BB9 mapbox \u5728\u7EBF\u9AD8\u5EA6\u4E0A\u7684\u6548\u679C\u8868\u73B0\u57FA\u672C\u4E00\u81F4\n if(u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT || u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSET) {\n // mapbox\n // \u4FDD\u6301\u9AD8\u5EA6\u76F8\u5BF9\u4E0D\u53D8\n float mapboxZoomScale = 4.0/pow(2.0, 21.0 - u_Zoom);\n h *= mapboxZoomScale;\n h += u_raisingHeight * mapboxZoomScale;\n if(u_heightfixed > 0.0) {\n lineHeight *= mapboxZoomScale;\n }\n \n } else {\n // amap\n h += u_raisingHeight;\n // lineHeight \u9876\u70B9\u504F\u79FB\u9AD8\u5EA6\n if(u_heightfixed < 1.0) {\n lineHeight *= pow(2.0, 20.0 - u_Zoom);\n }\n }\n\n gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy + offset, lineHeight + h, 1.0));\n }\n\n setPickingColor(a_PickingColor);\n}\n";
22
22
  var linear_line_frag = "#define LineTypeSolid 0.0\n#define LineTypeDash 1.0\n#define Animate 0.0\n#define LineTexture 1.0\nuniform float u_blur : 0.99;\nuniform float u_line_type: 0.0;\nuniform float u_opacity : 1.0;\n\nvarying vec4 v_color;\n\nuniform float u_linearColor: 0;\nuniform vec4 u_sourceColor;\nuniform vec4 u_targetColor;\n\n#pragma include \"picking\"\n\n\nvarying mat4 styleMappingMat;\n// [animate, duration, interval, trailLength],\nvoid main() {\n float opacity = styleMappingMat[0][0];\n float d_distance_ratio = styleMappingMat[3].r; // \u5F53\u524D\u70B9\u4F4D\u8DDD\u79BB\u5360\u7EBF\u603B\u957F\u7684\u6BD4\u4F8B\n\n if(u_linearColor == 1.0) { // \u4F7F\u7528\u6E10\u53D8\u989C\u8272\n gl_FragColor = mix(u_sourceColor, u_targetColor, d_distance_ratio);\n } else { // \u4F7F\u7528 color \u65B9\u6CD5\u4F20\u5165\u7684\u989C\u8272\n gl_FragColor = v_color;\n }\n\n gl_FragColor.a *= opacity; // \u5168\u5C40\u900F\u660E\u5EA6\n gl_FragColor = filterColor(gl_FragColor);\n}\n";
23
23
  var lineStyleObj = {
24
24
  solid: 0.0,
@@ -95,7 +95,13 @@ var LineModel = function (_BaseModel) {
95
95
  _ref$raisingHeight = _ref.raisingHeight,
96
96
  raisingHeight = _ref$raisingHeight === void 0 ? 0 : _ref$raisingHeight,
97
97
  _ref$heightfixed = _ref.heightfixed,
98
- heightfixed = _ref$heightfixed === void 0 ? false : _ref$heightfixed;
98
+ heightfixed = _ref$heightfixed === void 0 ? false : _ref$heightfixed,
99
+ _ref$arrow = _ref.arrow,
100
+ arrow = _ref$arrow === void 0 ? {
101
+ enable: false,
102
+ arrowWidth: 2,
103
+ arrowHeight: 3
104
+ } : _ref$arrow;
99
105
 
100
106
  if (dashArray.length === 2) {
101
107
  dashArray.push(0, 0);
@@ -164,7 +170,10 @@ var LineModel = function (_BaseModel) {
164
170
  u_targetColor: targetColorArr,
165
171
  u_heightfixed: Number(heightfixed),
166
172
  u_vertexScale: vertexHeightScale,
167
- u_raisingHeight: Number(raisingHeight)
173
+ u_raisingHeight: Number(raisingHeight),
174
+ u_arrow: Number(arrow.enable),
175
+ u_arrowHeight: arrow.arrowHeight || 3,
176
+ u_arrowWidth: arrow.arrowWidth || 2
168
177
  };
169
178
  }
170
179
  }, {
@@ -268,9 +277,9 @@ var LineModel = function (_BaseModel) {
268
277
  data: [],
269
278
  type: gl.FLOAT
270
279
  },
271
- size: 1,
272
- update: function update(feature, featureIdx, vertex, attributeIdx) {
273
- return [vertex[3]];
280
+ size: 2,
281
+ update: function update(feature, featureIdx, vertex, attributeIdx, normal, vertexIndex) {
282
+ return vertexIndex === undefined ? [vertex[3], 10] : [vertex[3], vertexIndex];
274
283
  }
275
284
  }
276
285
  });