@antv/l7-layers 2.8.14 → 2.8.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/Geometry/models/plane.js +6 -2
- package/es/Geometry/models/plane.js.map +1 -1
- package/es/core/interface.d.ts +6 -0
- package/es/core/interface.js.map +1 -1
- package/es/line/models/line.js +6 -3
- package/es/line/models/line.js.map +1 -1
- package/es/point/models/fillmage.js +2 -2
- package/es/point/models/fillmage.js.map +1 -1
- package/es/point/models/text.js +5 -2
- package/es/point/models/text.js.map +1 -1
- package/es/polygon/models/extrude.d.ts +13 -2
- package/es/polygon/models/extrude.js +152 -13
- package/es/polygon/models/extrude.js.map +1 -1
- package/es/polygon/models/ocean.js +1 -1
- package/es/polygon/models/ocean.js.map +1 -1
- package/es/polygon/models/water.js +3 -3
- package/es/polygon/models/water.js.map +1 -1
- package/lib/Geometry/models/plane.js +6 -2
- package/lib/Geometry/models/plane.js.map +1 -1
- package/lib/core/interface.js.map +1 -1
- package/lib/line/models/line.js +6 -3
- package/lib/line/models/line.js.map +1 -1
- package/lib/point/models/fillmage.js +2 -2
- package/lib/point/models/fillmage.js.map +1 -1
- package/lib/point/models/text.js +5 -2
- package/lib/point/models/text.js.map +1 -1
- package/lib/polygon/models/extrude.js +153 -12
- package/lib/polygon/models/extrude.js.map +1 -1
- package/lib/polygon/models/ocean.js +1 -1
- package/lib/polygon/models/ocean.js.map +1 -1
- package/lib/polygon/models/water.js +3 -3
- package/lib/polygon/models/water.js.map +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/point/models/text.ts"],"names":["TextTriangulation","feature","that","id","vertices","indices","glyphInfoMap","size","centroid","coord","length","glyphQuads","forEach","quad","index","push","tex","x","y","height","tl","width","tr","br","bl","TextModel","layer","getLayerConfig","mask","maskInside","initGlyph","updateTexture","filterGlyphs","reBuildModel","buildLayerModel","moduleName","vertexShader","textVert","fragmentShader","textFrag","triangulation","bind","depth","enable","blend","getBlend","stencil","opacity","stroke","strokeWidth","textAnchor","textAllowOverlap","halo","gamma","fontService","canvas","mapping","Object","keys","textCount","preTextStyle","dataTextureTest","dataTextureNeedUpdate","judgeStyleAttributes","encodeData","getEncodedData","calDataFrame","cellLength","cellProperties","data","rowCount","dataTexture","createTexture2D","flipY","format","gl","LUMINANCE","type","FLOAT","u_dataTexture","u_cellTypeLayout","getCellTypeLayout","u_opacity","u_stroke_width","u_stroke_color","getStrokeColor","u_sdf_map","texture","u_halo_blur","u_gamma_scale","u_sdf_map_size","on","buildModels","extent","textExtent","zoom","mapService","getZoom","getBounds","flag","Math","abs","currentZoom","destroy","off","styleAttributeService","registerStyleAttribute","name","AttributeType","Attribute","descriptor","buffer","usage","DYNAMIC_DRAW","update","featureIdx","vertex","attributeIdx","rotate","Array","isArray","STATIC_DRAW","bounds","fontWeight","fontFamily","characterSet","item","shape","toString","char","indexOf","setFontOptions","iconfont","spacing","glyphInfo","map","textOffset","shaping","coordinates","originCentroid","version","originCoordinates","padding","rendererService","getViewportSize","collisionIndex","CollisionIndex","filterData","filter","fontScale","pixels","lngLatToContainer","placeCollisionBox","x1","left","x2","right","y1","top","y2","bottom","anchorPointX","anchorPointY","box","insertCollisionBox","initIconFontTex","initTextFont","generateGlyphLayout","textureHeight","mag","LINEAR","min","models","BaseModel"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IEncodeFeature,\n IModel,\n IModelUniform,\n ITexture2D,\n} from '@antv/l7-core';\nimport { boundsContains, getMask, padBounds } from '@antv/l7-utils';\nimport { isNumber } from 'lodash';\nimport BaseModel from '../../core/BaseModel';\nimport { IPointLayerStyleOptions } from '../../core/interface';\nimport CollisionIndex from '../../utils/collision-index';\nimport { calculateCentroid } from '../../utils/geo';\nimport {\n getGlyphQuads,\n IGlyphQuad,\n shapeText,\n} from '../../utils/symbol-layout';\nimport textFrag from '../shaders/text_frag.glsl';\nimport textVert from '../shaders/text_vert.glsl';\n\nexport function TextTriangulation(feature: IEncodeFeature) {\n // @ts-ignore\n const that = this as TextModel;\n const id = feature.id as number;\n const vertices: number[] = [];\n const indices: number[] = [];\n\n if (!that.glyphInfoMap || !that.glyphInfoMap[id]) {\n return {\n vertices: [], // [ x, y, z, tex.x,tex.y, offset.x. offset.y]\n indices: [],\n size: 7,\n };\n }\n const centroid = that.glyphInfoMap[id].centroid as number[]; // 计算中心点\n const coord =\n centroid.length === 2 ? [centroid[0], centroid[1], 0] : centroid;\n that.glyphInfoMap[id].glyphQuads.forEach(\n (quad: IGlyphQuad, index: number) => {\n vertices.push(\n ...coord,\n quad.tex.x,\n quad.tex.y + quad.tex.height,\n quad.tl.x,\n quad.tl.y,\n ...coord,\n quad.tex.x + quad.tex.width,\n quad.tex.y + quad.tex.height,\n quad.tr.x,\n quad.tr.y,\n ...coord,\n quad.tex.x + quad.tex.width,\n quad.tex.y,\n quad.br.x,\n quad.br.y,\n ...coord,\n quad.tex.x,\n quad.tex.y,\n quad.bl.x,\n quad.bl.y,\n );\n indices.push(\n 0 + index * 4,\n 1 + index * 4,\n 2 + index * 4,\n 2 + index * 4,\n 3 + index * 4,\n 0 + index * 4,\n );\n },\n );\n return {\n vertices, // [ x, y, z, tex.x,tex.y, offset.x. offset.y]\n indices,\n size: 7,\n };\n}\n\nexport default class TextModel extends BaseModel {\n public glyphInfo: IEncodeFeature[];\n public glyphInfoMap: {\n [key: string]: {\n shaping: any;\n glyphQuads: IGlyphQuad[];\n centroid: number[];\n };\n } = {};\n private texture: ITexture2D;\n private currentZoom: number = -1;\n private extent: [[number, number], [number, number]];\n private textureHeight: number = 0;\n private textCount: number = 0;\n private preTextStyle: Partial<IPointLayerStyleOptions> = {};\n public getUninforms(): IModelUniform {\n const {\n opacity = 1.0,\n stroke = '#fff',\n strokeWidth = 0,\n textAnchor = 'center',\n textAllowOverlap = false,\n halo = 0.5,\n gamma = 2.0,\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n const { canvas, mapping } = this.fontService;\n if (Object.keys(mapping).length !== this.textCount) {\n this.updateTexture();\n this.textCount = Object.keys(mapping).length;\n }\n this.preTextStyle = {\n textAnchor,\n textAllowOverlap,\n };\n\n if (\n this.dataTextureTest &&\n this.dataTextureNeedUpdate({\n opacity,\n strokeWidth,\n stroke,\n })\n ) {\n this.judgeStyleAttributes({\n opacity,\n strokeWidth,\n stroke,\n });\n\n const encodeData = this.layer.getEncodedData();\n const { data, width, height } = this.calDataFrame(\n this.cellLength,\n encodeData,\n this.cellProperties,\n );\n this.rowCount = height; // 当前数据纹理有多少行\n\n this.dataTexture =\n this.cellLength > 0 && data.length > 0\n ? this.createTexture2D({\n flipY: true,\n data,\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width,\n height,\n })\n : this.createTexture2D({\n flipY: true,\n data: [1],\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width: 1,\n height: 1,\n });\n }\n\n return {\n u_dataTexture: this.dataTexture, // 数据纹理 - 有数据映射的时候纹理中带数据,若没有任何数据映射时纹理是 [1]\n u_cellTypeLayout: this.getCellTypeLayout(),\n\n u_opacity: isNumber(opacity) ? opacity : 1.0,\n u_stroke_width: isNumber(strokeWidth) ? strokeWidth : 0.0,\n u_stroke_color: this.getStrokeColor(stroke),\n\n u_sdf_map: this.texture,\n u_halo_blur: halo,\n u_gamma_scale: gamma,\n u_sdf_map_size: [canvas.width, canvas.height],\n };\n }\n\n public initModels(): IModel[] {\n this.layer.on('remapping', this.buildModels);\n this.extent = this.textExtent();\n const {\n textAnchor = 'center',\n textAllowOverlap = true,\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n this.preTextStyle = {\n textAnchor,\n textAllowOverlap,\n };\n return this.buildModels();\n }\n\n public buildModels = () => {\n const {\n mask = false,\n maskInside = true,\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n this.initGlyph();\n this.updateTexture();\n this.filterGlyphs();\n this.reBuildModel();\n return [\n this.layer.buildLayerModel({\n moduleName: 'pointText',\n vertexShader: textVert,\n fragmentShader: textFrag,\n triangulation: TextTriangulation.bind(this),\n depth: { enable: false },\n blend: this.getBlend(),\n stencil: getMask(mask, maskInside),\n }),\n ];\n };\n public needUpdate() {\n const {\n textAllowOverlap = false,\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n // textAllowOverlap 发生改变\n const zoom = this.mapService.getZoom();\n const extent = this.mapService.getBounds();\n const flag = boundsContains(this.extent, extent);\n // 文本不能压盖则进行过滤\n if (\n (!textAllowOverlap && (Math.abs(this.currentZoom - zoom) > 1 || !flag)) ||\n textAllowOverlap !== this.preTextStyle.textAllowOverlap\n ) {\n this.reBuildModel();\n return true;\n }\n return false;\n }\n\n public clearModels() {\n this.dataTexture?.destroy();\n this.layer.off('remapping', this.buildModels);\n }\n protected registerBuiltinAttributes() {\n this.styleAttributeService.registerStyleAttribute({\n name: 'rotate',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Rotate',\n buffer: {\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 1,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const { rotate = 0 } = feature;\n return Array.isArray(rotate) ? [rotate[0]] : [rotate as number];\n },\n },\n });\n this.styleAttributeService.registerStyleAttribute({\n name: 'textOffsets',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_textOffsets',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.STATIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 2,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n return [vertex[5], vertex[6]];\n },\n },\n });\n\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'size',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Size',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 1,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const { size = 12 } = feature;\n return Array.isArray(size) ? [size[0]] : [size as number];\n },\n },\n });\n\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'textUv',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_tex',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 2,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n return [vertex[3], vertex[4]];\n },\n },\n });\n }\n private textExtent(): [[number, number], [number, number]] {\n const bounds = this.mapService.getBounds();\n return padBounds(bounds, 0.5);\n }\n /**\n * 生成文字纹理(生成文字纹理字典)\n */\n private initTextFont() {\n const {\n fontWeight = '400',\n fontFamily = 'sans-serif',\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n const data = this.layer.getEncodedData();\n const characterSet: string[] = [];\n data.forEach((item: IEncodeFeature) => {\n let { shape = '' } = item;\n shape = shape.toString();\n for (const char of shape) {\n // 去重\n if (characterSet.indexOf(char) === -1) {\n characterSet.push(char);\n }\n }\n });\n this.fontService.setFontOptions({\n characterSet,\n fontWeight,\n fontFamily,\n iconfont: false,\n });\n }\n\n /**\n * 生成 iconfont 纹理字典\n */\n private initIconFontTex() {\n const {\n fontWeight = '400',\n fontFamily = 'sans-serif',\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n const data = this.layer.getEncodedData();\n const characterSet: string[] = [];\n data.forEach((item: IEncodeFeature) => {\n let { shape = '' } = item;\n shape = `${shape}`;\n if (characterSet.indexOf(shape) === -1) {\n characterSet.push(shape);\n }\n });\n this.fontService.setFontOptions({\n characterSet,\n fontWeight,\n fontFamily,\n iconfont: true,\n });\n }\n\n /**\n * 生成文字布局(对照文字纹理字典提取对应文字的位置很好信息)\n */\n private generateGlyphLayout(iconfont: boolean) {\n // TODO:更新文字布局\n const { mapping } = this.fontService;\n const {\n spacing = 2,\n textAnchor = 'center',\n // textOffset,\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n const data = this.layer.getEncodedData();\n\n this.glyphInfo = data.map((feature: IEncodeFeature) => {\n const { shape = '', id, size = 1, textOffset = [0, 0] } = feature;\n\n const shaping = shapeText(\n shape.toString(),\n mapping,\n // @ts-ignore\n size,\n textAnchor,\n 'left',\n spacing,\n textOffset,\n iconfont,\n );\n const glyphQuads = getGlyphQuads(shaping, textOffset, false);\n feature.shaping = shaping;\n feature.glyphQuads = glyphQuads;\n // feature.centroid = calculteCentroid(coordinates);\n\n feature.centroid = calculateCentroid(feature.coordinates);\n\n // 此时地图高德2.0 originCentroid == centroid\n feature.originCentroid =\n feature.version === 'GAODE2.x'\n ? calculateCentroid(feature.originCoordinates)\n : (feature.originCentroid = feature.centroid);\n\n this.glyphInfoMap[id as number] = {\n shaping,\n glyphQuads,\n centroid: calculateCentroid(feature.coordinates),\n };\n return feature;\n });\n }\n /**\n * 文字避让 depend on originCentorid\n */\n private filterGlyphs() {\n const {\n padding = [4, 4],\n textAllowOverlap = false,\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n if (textAllowOverlap) {\n // 如果允许文本覆盖\n // this.layer.setEncodedData(this.glyphInfo);\n return;\n }\n this.glyphInfoMap = {};\n this.currentZoom = this.mapService.getZoom();\n this.extent = this.textExtent();\n const { width, height } = this.rendererService.getViewportSize();\n const collisionIndex = new CollisionIndex(width, height);\n const filterData = this.glyphInfo.filter((feature: IEncodeFeature) => {\n const { shaping, id = 0 } = feature;\n // const centroid = feature.centroid as [number, number];\n // const centroid = feature.originCentroid as [number, number];\n const centroid = (feature.version === 'GAODE2.x'\n ? feature.originCentroid\n : feature.centroid) as [number, number];\n const size = feature.size as number;\n const fontScale: number = size / 24;\n const pixels = this.mapService.lngLatToContainer(centroid);\n const { box } = collisionIndex.placeCollisionBox({\n x1: shaping.left * fontScale - padding[0],\n x2: shaping.right * fontScale + padding[0],\n y1: shaping.top * fontScale - padding[1],\n y2: shaping.bottom * fontScale + padding[1],\n anchorPointX: pixels.x,\n anchorPointY: pixels.y,\n });\n if (box && box.length) {\n // TODO:featureIndex\n collisionIndex.insertCollisionBox(box, id);\n return true;\n } else {\n return false;\n }\n });\n filterData.forEach((item) => {\n // @ts-ignore\n this.glyphInfoMap[item.id as number] = item;\n });\n // this.layer.setEncodedData(filterData);\n }\n /**\n * 初始化文字布局\n */\n private initGlyph() {\n const { iconfont = false } = this.layer.getLayerConfig();\n // 1.生成文字纹理(或是生成 iconfont)\n iconfont ? this.initIconFontTex() : this.initTextFont();\n // this.initTextFont();\n\n // 2.生成文字布局\n this.generateGlyphLayout(iconfont);\n }\n /**\n * 更新文字纹理\n */\n private updateTexture() {\n const { createTexture2D } = this.rendererService;\n const { canvas } = this.fontService;\n this.textureHeight = canvas.height;\n if (this.texture) {\n this.texture.destroy();\n }\n\n this.texture = createTexture2D({\n data: canvas,\n mag: gl.LINEAR,\n min: gl.LINEAR,\n width: canvas.width,\n height: canvas.height,\n });\n }\n\n private reBuildModel() {\n const {\n mask = false,\n maskInside = true,\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n this.filterGlyphs();\n this.layer.models = [\n this.layer.buildLayerModel({\n moduleName: 'pointText',\n vertexShader: textVert,\n fragmentShader: textFrag,\n triangulation: TextTriangulation.bind(this),\n depth: { enable: false },\n blend: this.getBlend(),\n stencil: getMask(mask, maskInside),\n }),\n ];\n }\n}\n"],"file":"text.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/point/models/text.ts"],"names":["TextTriangulation","feature","that","id","vertices","indices","glyphInfoMap","size","centroid","coord","length","glyphQuads","forEach","quad","index","push","tex","x","y","height","tl","width","tr","br","bl","TextModel","layer","getLayerConfig","mask","maskInside","initGlyph","updateTexture","filterGlyphs","reBuildModel","buildLayerModel","moduleName","vertexShader","textVert","fragmentShader","textFrag","triangulation","bind","depth","enable","blend","getBlend","stencil","opacity","stroke","strokeWidth","textAnchor","textAllowOverlap","halo","gamma","raisingHeight","fontService","canvas","mapping","Object","keys","textCount","preTextStyle","dataTextureTest","dataTextureNeedUpdate","judgeStyleAttributes","encodeData","getEncodedData","calDataFrame","cellLength","cellProperties","data","rowCount","dataTexture","createTexture2D","flipY","format","gl","LUMINANCE","type","FLOAT","u_dataTexture","u_cellTypeLayout","getCellTypeLayout","u_raisingHeight","Number","u_opacity","u_stroke_width","u_stroke_color","getStrokeColor","u_sdf_map","texture","u_halo_blur","u_gamma_scale","u_sdf_map_size","on","buildModels","extent","textExtent","zoom","mapService","getZoom","getBounds","flag","Math","abs","currentZoom","destroy","off","styleAttributeService","registerStyleAttribute","name","AttributeType","Attribute","descriptor","buffer","usage","DYNAMIC_DRAW","update","featureIdx","vertex","attributeIdx","rotate","Array","isArray","STATIC_DRAW","bounds","fontWeight","fontFamily","characterSet","item","shape","toString","char","indexOf","setFontOptions","iconfont","spacing","glyphInfo","map","textOffset","shaping","coordinates","originCentroid","version","originCoordinates","padding","rendererService","getViewportSize","collisionIndex","CollisionIndex","filterData","filter","fontScale","pixels","lngLatToContainer","placeCollisionBox","x1","left","x2","right","y1","top","y2","bottom","anchorPointX","anchorPointY","box","insertCollisionBox","initIconFontTex","initTextFont","generateGlyphLayout","textureHeight","mag","LINEAR","min","models","BaseModel"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IEncodeFeature,\n IModel,\n IModelUniform,\n ITexture2D,\n} from '@antv/l7-core';\nimport { boundsContains, getMask, padBounds } from '@antv/l7-utils';\nimport { isNumber } from 'lodash';\nimport BaseModel from '../../core/BaseModel';\nimport { IPointLayerStyleOptions } from '../../core/interface';\nimport CollisionIndex from '../../utils/collision-index';\nimport { calculateCentroid } from '../../utils/geo';\nimport {\n getGlyphQuads,\n IGlyphQuad,\n shapeText,\n} from '../../utils/symbol-layout';\nimport textFrag from '../shaders/text_frag.glsl';\nimport textVert from '../shaders/text_vert.glsl';\n\nexport function TextTriangulation(feature: IEncodeFeature) {\n // @ts-ignore\n const that = this as TextModel;\n const id = feature.id as number;\n const vertices: number[] = [];\n const indices: number[] = [];\n\n if (!that.glyphInfoMap || !that.glyphInfoMap[id]) {\n return {\n vertices: [], // [ x, y, z, tex.x,tex.y, offset.x. offset.y]\n indices: [],\n size: 7,\n };\n }\n const centroid = that.glyphInfoMap[id].centroid as number[]; // 计算中心点\n const coord =\n centroid.length === 2 ? [centroid[0], centroid[1], 0] : centroid;\n that.glyphInfoMap[id].glyphQuads.forEach(\n (quad: IGlyphQuad, index: number) => {\n vertices.push(\n ...coord,\n quad.tex.x,\n quad.tex.y + quad.tex.height,\n quad.tl.x,\n quad.tl.y,\n ...coord,\n quad.tex.x + quad.tex.width,\n quad.tex.y + quad.tex.height,\n quad.tr.x,\n quad.tr.y,\n ...coord,\n quad.tex.x + quad.tex.width,\n quad.tex.y,\n quad.br.x,\n quad.br.y,\n ...coord,\n quad.tex.x,\n quad.tex.y,\n quad.bl.x,\n quad.bl.y,\n );\n indices.push(\n 0 + index * 4,\n 1 + index * 4,\n 2 + index * 4,\n 2 + index * 4,\n 3 + index * 4,\n 0 + index * 4,\n );\n },\n );\n return {\n vertices, // [ x, y, z, tex.x,tex.y, offset.x. offset.y]\n indices,\n size: 7,\n };\n}\n\nexport default class TextModel extends BaseModel {\n public glyphInfo: IEncodeFeature[];\n public glyphInfoMap: {\n [key: string]: {\n shaping: any;\n glyphQuads: IGlyphQuad[];\n centroid: number[];\n };\n } = {};\n private texture: ITexture2D;\n private currentZoom: number = -1;\n private extent: [[number, number], [number, number]];\n private textureHeight: number = 0;\n private textCount: number = 0;\n private preTextStyle: Partial<IPointLayerStyleOptions> = {};\n public getUninforms(): IModelUniform {\n const {\n opacity = 1.0,\n stroke = '#fff',\n strokeWidth = 0,\n textAnchor = 'center',\n textAllowOverlap = false,\n halo = 0.5,\n gamma = 2.0,\n raisingHeight = 0,\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n const { canvas, mapping } = this.fontService;\n if (Object.keys(mapping).length !== this.textCount) {\n this.updateTexture();\n this.textCount = Object.keys(mapping).length;\n }\n this.preTextStyle = {\n textAnchor,\n textAllowOverlap,\n };\n\n if (\n this.dataTextureTest &&\n this.dataTextureNeedUpdate({\n opacity,\n strokeWidth,\n stroke,\n })\n ) {\n this.judgeStyleAttributes({\n opacity,\n strokeWidth,\n stroke,\n });\n\n const encodeData = this.layer.getEncodedData();\n const { data, width, height } = this.calDataFrame(\n this.cellLength,\n encodeData,\n this.cellProperties,\n );\n this.rowCount = height; // 当前数据纹理有多少行\n\n this.dataTexture =\n this.cellLength > 0 && data.length > 0\n ? this.createTexture2D({\n flipY: true,\n data,\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width,\n height,\n })\n : this.createTexture2D({\n flipY: true,\n data: [1],\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width: 1,\n height: 1,\n });\n }\n\n return {\n u_dataTexture: this.dataTexture, // 数据纹理 - 有数据映射的时候纹理中带数据,若没有任何数据映射时纹理是 [1]\n u_cellTypeLayout: this.getCellTypeLayout(),\n u_raisingHeight: Number(raisingHeight),\n\n u_opacity: isNumber(opacity) ? opacity : 1.0,\n u_stroke_width: isNumber(strokeWidth) ? strokeWidth : 0.0,\n u_stroke_color: this.getStrokeColor(stroke),\n\n u_sdf_map: this.texture,\n u_halo_blur: halo,\n u_gamma_scale: gamma,\n u_sdf_map_size: [canvas.width, canvas.height],\n };\n }\n\n public initModels(): IModel[] {\n this.layer.on('remapping', this.buildModels);\n this.extent = this.textExtent();\n const {\n textAnchor = 'center',\n textAllowOverlap = true,\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n this.preTextStyle = {\n textAnchor,\n textAllowOverlap,\n };\n return this.buildModels();\n }\n\n public buildModels = () => {\n const {\n mask = false,\n maskInside = true,\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n this.initGlyph();\n this.updateTexture();\n this.filterGlyphs();\n this.reBuildModel();\n return [\n this.layer.buildLayerModel({\n moduleName: 'pointText',\n vertexShader: textVert,\n fragmentShader: textFrag,\n triangulation: TextTriangulation.bind(this),\n depth: { enable: false },\n blend: this.getBlend(),\n stencil: getMask(mask, maskInside),\n }),\n ];\n };\n public needUpdate() {\n const {\n textAllowOverlap = false,\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n // textAllowOverlap 发生改变\n const zoom = this.mapService.getZoom();\n const extent = this.mapService.getBounds();\n const flag = boundsContains(this.extent, extent);\n // 文本不能压盖则进行过滤\n if (\n (!textAllowOverlap && (Math.abs(this.currentZoom - zoom) > 1 || !flag)) ||\n textAllowOverlap !== this.preTextStyle.textAllowOverlap\n ) {\n this.reBuildModel();\n return true;\n }\n return false;\n }\n\n public clearModels() {\n this.dataTexture?.destroy();\n this.layer.off('remapping', this.buildModels);\n }\n protected registerBuiltinAttributes() {\n this.styleAttributeService.registerStyleAttribute({\n name: 'rotate',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Rotate',\n buffer: {\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 1,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const { rotate = 0 } = feature;\n return Array.isArray(rotate) ? [rotate[0]] : [rotate as number];\n },\n },\n });\n this.styleAttributeService.registerStyleAttribute({\n name: 'textOffsets',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_textOffsets',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.STATIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 2,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n return [vertex[5], vertex[6]];\n },\n },\n });\n\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'size',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Size',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 1,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const { size = 12 } = feature;\n return Array.isArray(size) ? [size[0]] : [size as number];\n },\n },\n });\n\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'textUv',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_tex',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 2,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n return [vertex[3], vertex[4]];\n },\n },\n });\n }\n private textExtent(): [[number, number], [number, number]] {\n const bounds = this.mapService.getBounds();\n return padBounds(bounds, 0.5);\n }\n /**\n * 生成文字纹理(生成文字纹理字典)\n */\n private initTextFont() {\n const {\n fontWeight = '400',\n fontFamily = 'sans-serif',\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n const data = this.layer.getEncodedData();\n const characterSet: string[] = [];\n data.forEach((item: IEncodeFeature) => {\n let { shape = '' } = item;\n shape = shape.toString();\n for (const char of shape) {\n // 去重\n if (characterSet.indexOf(char) === -1) {\n characterSet.push(char);\n }\n }\n });\n this.fontService.setFontOptions({\n characterSet,\n fontWeight,\n fontFamily,\n iconfont: false,\n });\n }\n\n /**\n * 生成 iconfont 纹理字典\n */\n private initIconFontTex() {\n const {\n fontWeight = '400',\n fontFamily = 'sans-serif',\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n const data = this.layer.getEncodedData();\n const characterSet: string[] = [];\n data.forEach((item: IEncodeFeature) => {\n let { shape = '' } = item;\n shape = `${shape}`;\n if (characterSet.indexOf(shape) === -1) {\n characterSet.push(shape);\n }\n });\n this.fontService.setFontOptions({\n characterSet,\n fontWeight,\n fontFamily,\n iconfont: true,\n });\n }\n\n /**\n * 生成文字布局(对照文字纹理字典提取对应文字的位置很好信息)\n */\n private generateGlyphLayout(iconfont: boolean) {\n // TODO:更新文字布局\n const { mapping } = this.fontService;\n const {\n spacing = 2,\n textAnchor = 'center',\n // textOffset,\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n const data = this.layer.getEncodedData();\n\n this.glyphInfo = data.map((feature: IEncodeFeature) => {\n const { shape = '', id, size = 1, textOffset = [0, 0] } = feature;\n\n const shaping = shapeText(\n shape.toString(),\n mapping,\n // @ts-ignore\n size,\n textAnchor,\n 'left',\n spacing,\n textOffset,\n iconfont,\n );\n const glyphQuads = getGlyphQuads(shaping, textOffset, false);\n feature.shaping = shaping;\n feature.glyphQuads = glyphQuads;\n // feature.centroid = calculteCentroid(coordinates);\n\n feature.centroid = calculateCentroid(feature.coordinates);\n\n // 此时地图高德2.0 originCentroid == centroid\n feature.originCentroid =\n feature.version === 'GAODE2.x'\n ? calculateCentroid(feature.originCoordinates)\n : (feature.originCentroid = feature.centroid);\n\n this.glyphInfoMap[id as number] = {\n shaping,\n glyphQuads,\n centroid: calculateCentroid(feature.coordinates),\n };\n return feature;\n });\n }\n /**\n * 文字避让 depend on originCentorid\n */\n private filterGlyphs() {\n const {\n padding = [4, 4],\n textAllowOverlap = false,\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n if (textAllowOverlap) {\n // 如果允许文本覆盖\n // this.layer.setEncodedData(this.glyphInfo);\n return;\n }\n this.glyphInfoMap = {};\n this.currentZoom = this.mapService.getZoom();\n this.extent = this.textExtent();\n const { width, height } = this.rendererService.getViewportSize();\n const collisionIndex = new CollisionIndex(width, height);\n const filterData = this.glyphInfo.filter((feature: IEncodeFeature) => {\n const { shaping, id = 0 } = feature;\n // const centroid = feature.centroid as [number, number];\n // const centroid = feature.originCentroid as [number, number];\n const centroid = (feature.version === 'GAODE2.x'\n ? feature.originCentroid\n : feature.centroid) as [number, number];\n const size = feature.size as number;\n const fontScale: number = size / 24;\n const pixels = this.mapService.lngLatToContainer(centroid);\n const { box } = collisionIndex.placeCollisionBox({\n x1: shaping.left * fontScale - padding[0],\n x2: shaping.right * fontScale + padding[0],\n y1: shaping.top * fontScale - padding[1],\n y2: shaping.bottom * fontScale + padding[1],\n anchorPointX: pixels.x,\n anchorPointY: pixels.y,\n });\n if (box && box.length) {\n // TODO:featureIndex\n collisionIndex.insertCollisionBox(box, id);\n return true;\n } else {\n return false;\n }\n });\n filterData.forEach((item) => {\n // @ts-ignore\n this.glyphInfoMap[item.id as number] = item;\n });\n // this.layer.setEncodedData(filterData);\n }\n /**\n * 初始化文字布局\n */\n private initGlyph() {\n const { iconfont = false } = this.layer.getLayerConfig();\n // 1.生成文字纹理(或是生成 iconfont)\n iconfont ? this.initIconFontTex() : this.initTextFont();\n // this.initTextFont();\n\n // 2.生成文字布局\n this.generateGlyphLayout(iconfont);\n }\n /**\n * 更新文字纹理\n */\n private updateTexture() {\n const { createTexture2D } = this.rendererService;\n const { canvas } = this.fontService;\n this.textureHeight = canvas.height;\n if (this.texture) {\n this.texture.destroy();\n }\n\n this.texture = createTexture2D({\n data: canvas,\n mag: gl.LINEAR,\n min: gl.LINEAR,\n width: canvas.width,\n height: canvas.height,\n });\n }\n\n private reBuildModel() {\n const {\n mask = false,\n maskInside = true,\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n this.filterGlyphs();\n this.layer.models = [\n this.layer.buildLayerModel({\n moduleName: 'pointText',\n vertexShader: textVert,\n fragmentShader: textFrag,\n triangulation: TextTriangulation.bind(this),\n depth: { enable: false },\n blend: this.getBlend(),\n stencil: getMask(mask, maskInside),\n }),\n ];\n }\n}\n"],"file":"text.js"}
|
|
@@ -7,16 +7,22 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.default = void 0;
|
|
9
9
|
|
|
10
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
11
|
+
|
|
10
12
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
13
|
|
|
12
14
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
15
|
|
|
16
|
+
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
17
|
+
|
|
14
18
|
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
15
19
|
|
|
16
20
|
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
17
21
|
|
|
18
22
|
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
19
23
|
|
|
24
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
25
|
+
|
|
20
26
|
var _isNumber2 = _interopRequireDefault(require("lodash/isNumber"));
|
|
21
27
|
|
|
22
28
|
var _l7Core = require("@antv/l7-core");
|
|
@@ -32,9 +38,11 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflec
|
|
|
32
38
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
33
39
|
|
|
34
40
|
var polygonExtrudeFrag = "uniform float u_opacity: 1.0;\nvarying vec4 v_Color;\nvarying mat4 styleMappingMat; // \u4F20\u9012\u4ECE\u7247\u5143\u4E2D\u4F20\u9012\u7684\u6620\u5C04\u6570\u636E\n#pragma include \"picking\"\n\nvoid main() {\n float opacity = styleMappingMat[0][0];\n gl_FragColor = v_Color;\n // gl_FragColor.a *= u_opacity;\n gl_FragColor.a *= opacity;\n gl_FragColor = filterColor(gl_FragColor);\n}\n";
|
|
41
|
+
var polygonExtrudeVert = "precision highp float;\n\n#define ambientRatio 0.5\n#define diffuseRatio 0.3\n#define specularRatio 0.2\n\nattribute vec4 a_Color;\nattribute vec3 a_Position;\nattribute vec3 a_Normal;\nattribute float a_Size;\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\n\nvarying vec4 v_Color;\nuniform float u_heightfixed: 0.0; // \u9ED8\u8BA4\u4E0D\u56FA\u5B9A\nuniform float u_raisingHeight: 0.0;\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\n#pragma include \"projection\"\n#pragma include \"light\"\n#pragma include \"picking\"\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\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 vec4 pos = vec4(a_Position.xy, a_Position.z * a_Size, 1.0);\n vec4 project_pos = project_position(pos);\n\n if(u_heightfixed > 0.0) { // \u5224\u65AD\u51E0\u4F55\u4F53\u662F\u5426\u56FA\u5B9A\u9AD8\u5EA6\n project_pos.z = a_Position.z * a_Size;\n project_pos.z += u_raisingHeight;\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT || u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSET) {\n float mapboxZoomScale = 4.0/pow(2.0, 21.0 - u_Zoom);\n project_pos.z *= mapboxZoomScale;\n project_pos.z += u_raisingHeight * mapboxZoomScale;\n }\n }\n\n // project_pos.z += 500000.0; // amap1\n\n // project_pos.z += (500000.0 * 4.0)/pow(2.0, 21.0 - u_Zoom); // mapbox\n // gl_Position = project_common_position_to_clipspace(vec4(project_pos.xyz, 1.0));\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n // gl_Position = u_Mvp * (vec4(project_pos.xyz * vec3(1.0, 1.0, -1.0), 1.0));\n gl_Position = u_Mvp * (vec4(project_pos.xyz, 1.0));\n } else {\n gl_Position = project_common_position_to_clipspace(vec4(project_pos.xyz, 1.0));\n }\n\n float lightWeight = calc_lighting(pos);\n // v_Color = a_Color;\n v_Color = vec4(a_Color.rgb * lightWeight, a_Color.w);\n\n setPickingColor(a_PickingColor);\n}\n";
|
|
42
|
+
var polygonExtrudeTexFrag = "uniform sampler2D u_texture;\nuniform float u_opacity: 1.0;\nuniform vec4 u_sourceColor;\nuniform vec4 u_targetColor;\n// varying vec4 v_Color;\nvarying mat4 styleMappingMat; // \u4F20\u9012\u4ECE\u7247\u5143\u4E2D\u4F20\u9012\u7684\u6620\u5C04\u6570\u636E\n#pragma include \"picking\"\n\nvoid main() {\n float opacity = styleMappingMat[0][0];\n float isSide = styleMappingMat[0][3];\n \n float topU = styleMappingMat[2][2];\n float topV = styleMappingMat[2][3];\n\n float sidey = styleMappingMat[3][0];\n if(isSide < 1.0) {\n gl_FragColor = mix(u_targetColor, u_sourceColor, sidey);\n } else {\n gl_FragColor = texture2D(u_texture, vec2(topU, topV));\n }\n\n // gl_FragColor = v_Color;\n \n\n gl_FragColor.a *= opacity;\n gl_FragColor = filterColor(gl_FragColor);\n}\n";
|
|
43
|
+
var polygonExtrudeTexVert = "precision highp float;\n\n#define ambientRatio 0.5\n#define diffuseRatio 0.3\n#define specularRatio 0.2\n\nattribute vec4 a_Color;\nattribute vec3 a_Position;\nattribute vec3 a_Normal;\nattribute float a_Size;\nattribute vec3 a_uvs;\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\n\n// varying vec4 v_Color;\nuniform float u_heightfixed: 0.0; // \u9ED8\u8BA4\u4E0D\u56FA\u5B9A\nuniform float u_raisingHeight: 0.0;\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\n#pragma include \"projection\"\n#pragma include \"light\"\n#pragma include \"picking\"\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 - a_Position.z(judge side by a_Position.z)\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] - u - v\n 0.0, 0.0, 0.0, 0.0 // sidey\n );\n \n styleMappingMat[0][3] = a_Position.z;\n styleMappingMat[2][2] = a_uvs[0];\n styleMappingMat[2][3] = 1.0 - a_uvs[1];\n styleMappingMat[3][0] = a_uvs[2];\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 vec4 pos = vec4(a_Position.xy, a_Position.z * a_Size, 1.0);\n vec4 project_pos = project_position(pos);\n\n if(u_heightfixed > 0.0) { // \u5224\u65AD\u51E0\u4F55\u4F53\u662F\u5426\u56FA\u5B9A\u9AD8\u5EA6\n project_pos.z = a_Position.z * a_Size;\n project_pos.z += u_raisingHeight;\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT || u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSET) {\n float mapboxZoomScale = 4.0/pow(2.0, 21.0 - u_Zoom);\n project_pos.z *= mapboxZoomScale;\n project_pos.z += u_raisingHeight * mapboxZoomScale;\n }\n }\n\n // project_pos.z += 500000.0; // amap1\n\n // project_pos.z += (500000.0 * 4.0)/pow(2.0, 21.0 - u_Zoom); // mapbox\n // gl_Position = project_common_position_to_clipspace(vec4(project_pos.xyz, 1.0));\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n // gl_Position = u_Mvp * (vec4(project_pos.xyz * vec3(1.0, 1.0, -1.0), 1.0));\n gl_Position = u_Mvp * (vec4(project_pos.xyz, 1.0));\n } else {\n gl_Position = project_common_position_to_clipspace(vec4(project_pos.xyz, 1.0));\n }\n\n // float lightWeight = calc_lighting(pos);\n // v_Color = a_Color;\n // v_Color = vec4(a_Color.rgb * lightWeight, a_Color.w);\n\n setPickingColor(a_PickingColor);\n}\n";
|
|
35
44
|
var polygonExtrudePickLightFrag = "uniform float u_opacity: 1.0;\nvarying vec4 v_Color;\nvarying mat4 styleMappingMat; // \u4F20\u9012\u4ECE\u7247\u5143\u4E2D\u4F20\u9012\u7684\u6620\u5C04\u6570\u636E\n#pragma include \"picking\"\nvarying float v_lightWeight;\n\nvoid main() {\n float opacity = styleMappingMat[0][0];\n gl_FragColor = v_Color;\n // gl_FragColor.a *= u_opacity;\n gl_FragColor.a *= opacity;\n gl_FragColor = filterColorWithLight(gl_FragColor, v_lightWeight);\n}\n";
|
|
36
|
-
var polygonExtrudePickLightVert = "precision highp float;\n\n#define ambientRatio 0.5\n#define diffuseRatio 0.3\n#define specularRatio 0.2\n\nattribute vec4 a_Color;\nattribute vec3 a_Position;\nattribute vec3 a_Normal;\nattribute float a_Size;\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\n\nvarying vec4 v_Color;\nuniform float u_heightfixed: 0.0; // \u9ED8\u8BA4\u4E0D\u56FA\u5B9A\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\n#pragma include \"projection\"\n#pragma include \"light\"\n#pragma include \"picking\"\n\nvarying float v_lightWeight;\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\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 vec4 pos = vec4(a_Position.xy, a_Position.z * a_Size, 1.0);\n vec4 project_pos = project_position(pos);\n\n if(u_heightfixed > 0.0) { // \u5224\u65AD\u51E0\u4F55\u4F53\u662F\u5426\u56FA\u5B9A\u9AD8\u5EA6\n project_pos.z = a_Position.z * a_Size;\n if(u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT || u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSET) {\n
|
|
37
|
-
var polygonExtrudeVert = "precision highp float;\n\n#define ambientRatio 0.5\n#define diffuseRatio 0.3\n#define specularRatio 0.2\n\nattribute vec4 a_Color;\nattribute vec3 a_Position;\nattribute vec3 a_Normal;\nattribute float a_Size;\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\n\nvarying vec4 v_Color;\nuniform float u_heightfixed: 0.0; // \u9ED8\u8BA4\u4E0D\u56FA\u5B9A\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\n#pragma include \"projection\"\n#pragma include \"light\"\n#pragma include \"picking\"\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\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 vec4 pos = vec4(a_Position.xy, a_Position.z * a_Size, 1.0);\n vec4 project_pos = project_position(pos);\n\n if(u_heightfixed > 0.0) { // \u5224\u65AD\u51E0\u4F55\u4F53\u662F\u5426\u56FA\u5B9A\u9AD8\u5EA6\n project_pos.z = a_Position.z * a_Size;\n if(u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT || u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSET) {\n project_pos.z *= 4.0/pow(2.0, 21.0 - u_Zoom);\n }\n }\n\n // gl_Position = project_common_position_to_clipspace(vec4(project_pos.xyz, 1.0));\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n // gl_Position = u_Mvp * (vec4(project_pos.xyz * vec3(1.0, 1.0, -1.0), 1.0));\n gl_Position = u_Mvp * (vec4(project_pos.xyz, 1.0));\n } else {\n gl_Position = project_common_position_to_clipspace(vec4(project_pos.xyz, 1.0));\n }\n\n float lightWeight = calc_lighting(pos);\n // v_Color = a_Color;\n v_Color = vec4(a_Color.rgb * lightWeight, a_Color.w);\n\n setPickingColor(a_PickingColor);\n}\n";
|
|
45
|
+
var polygonExtrudePickLightVert = "precision highp float;\n\n#define ambientRatio 0.5\n#define diffuseRatio 0.3\n#define specularRatio 0.2\n\nattribute vec4 a_Color;\nattribute vec3 a_Position;\nattribute vec3 a_Normal;\nattribute float a_Size;\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\n\nvarying vec4 v_Color;\nuniform float u_heightfixed: 0.0; // \u9ED8\u8BA4\u4E0D\u56FA\u5B9A\nuniform float u_raisingHeight: 0.0;\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\n#pragma include \"projection\"\n#pragma include \"light\"\n#pragma include \"picking\"\n\nvarying float v_lightWeight;\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\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 vec4 pos = vec4(a_Position.xy, a_Position.z * a_Size, 1.0);\n vec4 project_pos = project_position(pos);\n\n if(u_heightfixed > 0.0) { // \u5224\u65AD\u51E0\u4F55\u4F53\u662F\u5426\u56FA\u5B9A\u9AD8\u5EA6\n project_pos.z = a_Position.z * a_Size;\n project_pos.z += u_raisingHeight;\n if(u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT || u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSET) {\n float mapboxZoomScale = 4.0/pow(2.0, 21.0 - u_Zoom);\n project_pos.z *= mapboxZoomScale;\n project_pos.z += u_raisingHeight * mapboxZoomScale;\n }\n }\n\n // gl_Position = project_common_position_to_clipspace(vec4(project_pos.xyz, 1.0));\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n // gl_Position = u_Mvp * (vec4(project_pos.xyz * vec3(1.0, 1.0, -1.0), 1.0));\n gl_Position = u_Mvp * (vec4(project_pos.xyz, 1.0));\n } else {\n gl_Position = project_common_position_to_clipspace(vec4(project_pos.xyz, 1.0));\n }\n\n float lightWeight = calc_lighting(pos);\n v_lightWeight = lightWeight;\n // v_Color = a_Color;\n v_Color = vec4(a_Color.rgb * lightWeight, a_Color.w);\n\n setPickingColor(a_PickingColor);\n}\n";
|
|
38
46
|
|
|
39
47
|
var ExtrudeModel = function (_BaseModel) {
|
|
40
48
|
(0, _inherits2.default)(ExtrudeModel, _BaseModel);
|
|
@@ -42,8 +50,17 @@ var ExtrudeModel = function (_BaseModel) {
|
|
|
42
50
|
var _super = _createSuper(ExtrudeModel);
|
|
43
51
|
|
|
44
52
|
function ExtrudeModel() {
|
|
53
|
+
var _this;
|
|
54
|
+
|
|
45
55
|
(0, _classCallCheck2.default)(this, ExtrudeModel);
|
|
46
|
-
|
|
56
|
+
|
|
57
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
58
|
+
args[_key] = arguments[_key];
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
62
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "texture", void 0);
|
|
63
|
+
return _this;
|
|
47
64
|
}
|
|
48
65
|
|
|
49
66
|
(0, _createClass2.default)(ExtrudeModel, [{
|
|
@@ -53,7 +70,11 @@ var ExtrudeModel = function (_BaseModel) {
|
|
|
53
70
|
_ref$opacity = _ref.opacity,
|
|
54
71
|
opacity = _ref$opacity === void 0 ? 1 : _ref$opacity,
|
|
55
72
|
_ref$heightfixed = _ref.heightfixed,
|
|
56
|
-
heightfixed = _ref$heightfixed === void 0 ? false : _ref$heightfixed
|
|
73
|
+
heightfixed = _ref$heightfixed === void 0 ? false : _ref$heightfixed,
|
|
74
|
+
_ref$raisingHeight = _ref.raisingHeight,
|
|
75
|
+
raisingHeight = _ref$raisingHeight === void 0 ? 0 : _ref$raisingHeight,
|
|
76
|
+
sourceColor = _ref.sourceColor,
|
|
77
|
+
targetColor = _ref.targetColor;
|
|
57
78
|
|
|
58
79
|
if (this.dataTextureTest && this.dataTextureNeedUpdate({
|
|
59
80
|
opacity: opacity
|
|
@@ -86,47 +107,131 @@ var ExtrudeModel = function (_BaseModel) {
|
|
|
86
107
|
});
|
|
87
108
|
}
|
|
88
109
|
|
|
110
|
+
var sourceColorArr = [1, 1, 1, 1];
|
|
111
|
+
var targetColorArr = [1, 1, 1, 1];
|
|
112
|
+
|
|
113
|
+
if (sourceColor && targetColor) {
|
|
114
|
+
sourceColorArr = (0, _l7Utils.rgb2arr)(sourceColor);
|
|
115
|
+
targetColorArr = (0, _l7Utils.rgb2arr)(targetColor);
|
|
116
|
+
}
|
|
117
|
+
|
|
89
118
|
return {
|
|
90
119
|
u_heightfixed: Number(heightfixed),
|
|
91
120
|
u_dataTexture: this.dataTexture,
|
|
92
121
|
u_cellTypeLayout: this.getCellTypeLayout(),
|
|
93
|
-
|
|
122
|
+
u_raisingHeight: Number(raisingHeight),
|
|
123
|
+
u_opacity: (0, _isNumber2.default)(opacity) ? opacity : 1.0,
|
|
124
|
+
u_sourceColor: sourceColorArr,
|
|
125
|
+
u_targetColor: targetColorArr,
|
|
126
|
+
u_texture: this.texture
|
|
94
127
|
};
|
|
95
128
|
}
|
|
96
129
|
}, {
|
|
97
130
|
key: "initModels",
|
|
98
131
|
value: function initModels() {
|
|
132
|
+
this.loadTexture();
|
|
99
133
|
return this.buildModels();
|
|
100
134
|
}
|
|
101
135
|
}, {
|
|
102
136
|
key: "buildModels",
|
|
103
137
|
value: function buildModels() {
|
|
104
138
|
var _ref2 = this.layer.getLayerConfig(),
|
|
105
|
-
_ref2$pickLight = _ref2.pickLight,
|
|
106
|
-
pickLight = _ref2$pickLight === void 0 ? false : _ref2$pickLight,
|
|
107
139
|
_ref2$mask = _ref2.mask,
|
|
108
140
|
mask = _ref2$mask === void 0 ? false : _ref2$mask,
|
|
109
141
|
_ref2$maskInside = _ref2.maskInside,
|
|
110
142
|
maskInside = _ref2$maskInside === void 0 ? true : _ref2$maskInside;
|
|
111
143
|
|
|
144
|
+
var _this$getShaders = this.getShaders(),
|
|
145
|
+
frag = _this$getShaders.frag,
|
|
146
|
+
vert = _this$getShaders.vert,
|
|
147
|
+
type = _this$getShaders.type;
|
|
148
|
+
|
|
112
149
|
return [this.layer.buildLayerModel({
|
|
113
|
-
moduleName:
|
|
114
|
-
vertexShader:
|
|
115
|
-
fragmentShader:
|
|
150
|
+
moduleName: type,
|
|
151
|
+
vertexShader: vert,
|
|
152
|
+
fragmentShader: frag,
|
|
116
153
|
triangulation: _triangulation.PolygonExtrudeTriangulation,
|
|
117
|
-
stencil: (0, _l7Utils.getMask)(mask, maskInside)
|
|
154
|
+
stencil: (0, _l7Utils.getMask)(mask, maskInside),
|
|
155
|
+
cull: {
|
|
156
|
+
enable: true,
|
|
157
|
+
face: _l7Core.gl.BACK
|
|
158
|
+
}
|
|
118
159
|
})];
|
|
119
160
|
}
|
|
161
|
+
}, {
|
|
162
|
+
key: "getShaders",
|
|
163
|
+
value: function getShaders() {
|
|
164
|
+
var _ref3 = this.layer.getLayerConfig(),
|
|
165
|
+
pickLight = _ref3.pickLight,
|
|
166
|
+
mapTexture = _ref3.mapTexture;
|
|
167
|
+
|
|
168
|
+
if (mapTexture) {
|
|
169
|
+
return {
|
|
170
|
+
frag: polygonExtrudeTexFrag,
|
|
171
|
+
vert: polygonExtrudeTexVert,
|
|
172
|
+
type: 'polygonExtrudeTexture'
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
if (pickLight) {
|
|
177
|
+
return {
|
|
178
|
+
frag: polygonExtrudePickLightFrag,
|
|
179
|
+
vert: polygonExtrudePickLightVert,
|
|
180
|
+
type: 'polygonExtrude'
|
|
181
|
+
};
|
|
182
|
+
} else {
|
|
183
|
+
return {
|
|
184
|
+
frag: polygonExtrudeFrag,
|
|
185
|
+
vert: polygonExtrudeVert,
|
|
186
|
+
type: 'polygonExtrude'
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
}
|
|
120
190
|
}, {
|
|
121
191
|
key: "clearModels",
|
|
122
192
|
value: function clearModels() {
|
|
123
|
-
var _this$dataTexture;
|
|
193
|
+
var _this$dataTexture, _this$texture;
|
|
124
194
|
|
|
125
195
|
(_this$dataTexture = this.dataTexture) === null || _this$dataTexture === void 0 ? void 0 : _this$dataTexture.destroy();
|
|
196
|
+
(_this$texture = this.texture) === null || _this$texture === void 0 ? void 0 : _this$texture.destroy();
|
|
126
197
|
}
|
|
127
198
|
}, {
|
|
128
199
|
key: "registerBuiltinAttributes",
|
|
129
200
|
value: function registerBuiltinAttributes() {
|
|
201
|
+
var _ref4 = this.layer.getLayerConfig(),
|
|
202
|
+
mapTexture = _ref4.mapTexture;
|
|
203
|
+
|
|
204
|
+
if (mapTexture) {
|
|
205
|
+
var bbox = this.layer.getSource().extent;
|
|
206
|
+
|
|
207
|
+
var _bbox = (0, _slicedToArray2.default)(bbox, 4),
|
|
208
|
+
minLng = _bbox[0],
|
|
209
|
+
minLat = _bbox[1],
|
|
210
|
+
maxLng = _bbox[2],
|
|
211
|
+
maxLat = _bbox[3];
|
|
212
|
+
|
|
213
|
+
var lngLen = maxLng - minLng;
|
|
214
|
+
var latLen = maxLat - minLat;
|
|
215
|
+
this.styleAttributeService.registerStyleAttribute({
|
|
216
|
+
name: 'uvs',
|
|
217
|
+
type: _l7Core.AttributeType.Attribute,
|
|
218
|
+
descriptor: {
|
|
219
|
+
name: 'a_uvs',
|
|
220
|
+
buffer: {
|
|
221
|
+
usage: _l7Core.gl.STATIC_DRAW,
|
|
222
|
+
data: [],
|
|
223
|
+
type: _l7Core.gl.FLOAT
|
|
224
|
+
},
|
|
225
|
+
size: 3,
|
|
226
|
+
update: function update(feature, featureIdx, vertex, attributeIdx, normal) {
|
|
227
|
+
var lng = vertex[0];
|
|
228
|
+
var lat = vertex[1];
|
|
229
|
+
return [(lng - minLng) / lngLen, (lat - minLat) / latLen, vertex[4]];
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
|
|
130
235
|
this.styleAttributeService.registerStyleAttribute({
|
|
131
236
|
name: 'normal',
|
|
132
237
|
type: _l7Core.AttributeType.Attribute,
|
|
@@ -162,6 +267,42 @@ var ExtrudeModel = function (_BaseModel) {
|
|
|
162
267
|
}
|
|
163
268
|
});
|
|
164
269
|
}
|
|
270
|
+
}, {
|
|
271
|
+
key: "loadTexture",
|
|
272
|
+
value: function loadTexture() {
|
|
273
|
+
var _this2 = this;
|
|
274
|
+
|
|
275
|
+
var _ref5 = this.layer.getLayerConfig(),
|
|
276
|
+
mapTexture = _ref5.mapTexture;
|
|
277
|
+
|
|
278
|
+
var createTexture2D = this.rendererService.createTexture2D;
|
|
279
|
+
this.texture = createTexture2D({
|
|
280
|
+
height: 0,
|
|
281
|
+
width: 0
|
|
282
|
+
});
|
|
283
|
+
|
|
284
|
+
if (mapTexture) {
|
|
285
|
+
var image = new Image();
|
|
286
|
+
image.crossOrigin = '';
|
|
287
|
+
image.src = mapTexture;
|
|
288
|
+
|
|
289
|
+
image.onload = function () {
|
|
290
|
+
_this2.texture = createTexture2D({
|
|
291
|
+
data: image,
|
|
292
|
+
width: image.width,
|
|
293
|
+
height: image.height,
|
|
294
|
+
wrapS: _l7Core.gl.CLAMP_TO_EDGE,
|
|
295
|
+
wrapT: _l7Core.gl.CLAMP_TO_EDGE,
|
|
296
|
+
min: _l7Core.gl.LINEAR,
|
|
297
|
+
mag: _l7Core.gl.LINEAR
|
|
298
|
+
});
|
|
299
|
+
|
|
300
|
+
_this2.layerService.updateLayerRenderList();
|
|
301
|
+
|
|
302
|
+
_this2.layerService.renderLayers();
|
|
303
|
+
};
|
|
304
|
+
}
|
|
305
|
+
}
|
|
165
306
|
}]);
|
|
166
307
|
return ExtrudeModel;
|
|
167
308
|
}(_BaseModel2.default);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/polygon/models/extrude.ts"],"names":["ExtrudeModel","layer","getLayerConfig","opacity","heightfixed","dataTextureTest","dataTextureNeedUpdate","judgeStyleAttributes","encodeData","getEncodedData","calDataFrame","cellLength","cellProperties","data","width","height","rowCount","dataTexture","length","createTexture2D","flipY","format","gl","LUMINANCE","type","FLOAT","u_heightfixed","Number","u_dataTexture","u_cellTypeLayout","getCellTypeLayout","u_opacity","buildModels","pickLight","mask","maskInside","buildLayerModel","moduleName","vertexShader","polygonExtrudePickLightVert","polygonExtrudeVert","fragmentShader","polygonExtrudePickLightFrag","polygonExtrudeFrag","triangulation","PolygonExtrudeTriangulation","stencil","destroy","styleAttributeService","registerStyleAttribute","name","AttributeType","Attribute","descriptor","buffer","usage","STATIC_DRAW","size","update","feature","featureIdx","vertex","attributeIdx","normal","DYNAMIC_DRAW","Array","isArray","BaseModel"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AAEA;;AAEA;;;;;;;;;;;IAKqBA,Y;;;;;;;;;;;;WACnB,wBAAsB;AACpB,iBAGI,KAAKC,KAAL,CAAWC,cAAX,EAHJ;AAAA,8BACEC,OADF;AAAA,UACEA,OADF,6BACY,CADZ;AAAA,kCAEEC,WAFF;AAAA,UAEEA,WAFF,iCAEgB,KAFhB;;AAKA,UAAI,KAAKC,eAAL,IAAwB,KAAKC,qBAAL,CAA2B;AAAEH,QAAAA,OAAO,EAAPA;AAAF,OAA3B,CAA5B,EAAqE;AACnE,aAAKI,oBAAL,CAA0B;AAAEJ,UAAAA,OAAO,EAAPA;AAAF,SAA1B;AACA,YAAMK,UAAU,GAAG,KAAKP,KAAL,CAAWQ,cAAX,EAAnB;;AACA,iCAAgC,KAAKC,YAAL,CAC9B,KAAKC,UADyB,EAE9BH,UAF8B,EAG9B,KAAKI,cAHyB,CAAhC;AAAA,YAAQC,IAAR,sBAAQA,IAAR;AAAA,YAAcC,KAAd,sBAAcA,KAAd;AAAA,YAAqBC,MAArB,sBAAqBA,MAArB;;AAKA,aAAKC,QAAL,GAAgBD,MAAhB;AAEA,aAAKE,WAAL,GACE,KAAKN,UAAL,GAAkB,CAAlB,IAAuBE,IAAI,CAACK,MAAL,GAAc,CAArC,GACI,KAAKC,eAAL,CAAqB;AACnBC,UAAAA,KAAK,EAAE,IADY;AAEnBP,UAAAA,IAAI,EAAJA,IAFmB;AAGnBQ,UAAAA,MAAM,EAAEC,WAAGC,SAHQ;AAInBC,UAAAA,IAAI,EAAEF,WAAGG,KAJU;AAKnBX,UAAAA,KAAK,EAALA,KALmB;AAMnBC,UAAAA,MAAM,EAANA;AANmB,SAArB,CADJ,GASI,KAAKI,eAAL,CAAqB;AACnBC,UAAAA,KAAK,EAAE,IADY;AAEnBP,UAAAA,IAAI,EAAE,CAAC,CAAD,CAFa;AAGnBQ,UAAAA,MAAM,EAAEC,WAAGC,SAHQ;AAInBC,UAAAA,IAAI,EAAEF,WAAGG,KAJU;AAKnBX,UAAAA,KAAK,EAAE,CALY;AAMnBC,UAAAA,MAAM,EAAE;AANW,SAArB,CAVN;AAkBD;;AAED,aAAO;AACLW,QAAAA,aAAa,EAAEC,MAAM,CAACvB,WAAD,CADhB;AAELwB,QAAAA,aAAa,EAAE,KAAKX,WAFf;AAGLY,QAAAA,gBAAgB,EAAE,KAAKC,iBAAL,EAHb;AAKLC,QAAAA,SAAS,EAAE,wBAAS5B,OAAT,IAAoBA,OAApB,GAA8B;AALpC,OAAP;AAOD;;;WAED,sBAA8B;AAC5B,aAAO,KAAK6B,WAAL,EAAP;AACD;;;WAED,uBAA+B;AAC7B,kBAII,KAAK/B,KAAL,CAAWC,cAAX,EAJJ;AAAA,kCACE+B,SADF;AAAA,UACEA,SADF,gCACc,KADd;AAAA,6BAEEC,IAFF;AAAA,UAEEA,IAFF,2BAES,KAFT;AAAA,mCAGEC,UAHF;AAAA,UAGEA,UAHF,iCAGe,IAHf;;AAKA,aAAO,CACL,KAAKlC,KAAL,CAAWmC,eAAX,CAA2B;AACzBC,QAAAA,UAAU,EAAE,gBADa;AAEzBC,QAAAA,YAAY,EAAEL,SAAS,GACnBM,2BADmB,GAEnBC,kBAJqB;AAKzBC,QAAAA,cAAc,EAAER,SAAS,GACrBS,2BADqB,GAErBC,kBAPqB;AAQzBC,QAAAA,aAAa,EAAEC,0CARU;AASzBC,QAAAA,OAAO,EAAE,sBAAQZ,IAAR,EAAcC,UAAd;AATgB,OAA3B,CADK,CAAP;AAaD;;;WAED,uBAAqB;AAAA;;AACnB,gCAAKlB,WAAL,wEAAkB8B,OAAlB;AACD;;;WAED,qCAAsC;AAEpC,WAAKC,qBAAL,CAA2BC,sBAA3B,CAAkD;AAChDC,QAAAA,IAAI,EAAE,QAD0C;AAEhD1B,QAAAA,IAAI,EAAE2B,sBAAcC,SAF4B;AAGhDC,QAAAA,UAAU,EAAE;AACVH,UAAAA,IAAI,EAAE,UADI;AAEVI,UAAAA,MAAM,EAAE;AAENC,YAAAA,KAAK,EAAEjC,WAAGkC,WAFJ;AAGN3C,YAAAA,IAAI,EAAE,EAHA;AAINW,YAAAA,IAAI,EAAEF,WAAGG;AAJH,WAFE;AAQVgC,UAAAA,IAAI,EAAE,CARI;AASVC,UAAAA,MAAM,EAAE,gBACNC,OADM,EAENC,UAFM,EAGNC,MAHM,EAINC,YAJM,EAKNC,MALM,EAMH;AACH,mBAAOA,MAAP;AACD;AAjBS;AAHoC,OAAlD;AAwBA,WAAKf,qBAAL,CAA2BC,sBAA3B,CAAkD;AAChDC,QAAAA,IAAI,EAAE,MAD0C;AAEhD1B,QAAAA,IAAI,EAAE2B,sBAAcC,SAF4B;AAGhDC,QAAAA,UAAU,EAAE;AACVH,UAAAA,IAAI,EAAE,QADI;AAEVI,UAAAA,MAAM,EAAE;AAENC,YAAAA,KAAK,EAAEjC,WAAG0C,YAFJ;AAGNnD,YAAAA,IAAI,EAAE,EAHA;AAINW,YAAAA,IAAI,EAAEF,WAAGG;AAJH,WAFE;AAQVgC,UAAAA,IAAI,EAAE,CARI;AASVC,UAAAA,MAAM,EAAE,gBACNC,OADM,EAENC,UAFM,EAGNC,MAHM,EAINC,YAJM,EAKH;AACH,gCAAsBH,OAAtB,CAAQF,IAAR;AAAA,gBAAQA,IAAR,8BAAe,EAAf;AACA,mBAAOQ,KAAK,CAACC,OAAN,CAAcT,IAAd,IAAsB,CAACA,IAAI,CAAC,CAAD,CAAL,CAAtB,GAAkC,CAACA,IAAD,CAAzC;AACD;AAjBS;AAHoC,OAAlD;AAuBD;;;EA5HuCU,mB","sourcesContent":["import { AttributeType, gl, IEncodeFeature, IModel } from '@antv/l7-core';\nimport { getMask } from '@antv/l7-utils';\nimport { isNumber } from 'lodash';\nimport BaseModel from '../../core/BaseModel';\nimport { IPolygonLayerStyleOptions } from '../../core/interface';\nimport { PolygonExtrudeTriangulation } from '../../core/triangulation';\nimport polygonExtrudeFrag from '../shaders/polygon_extrude_frag.glsl';\nimport polygonExtrudePickLightFrag from '../shaders/polygon_extrude_picklight_frag.glsl';\nimport polygonExtrudePickLightVert from '../shaders/polygon_extrude_picklight_vert.glsl';\nimport polygonExtrudeVert from '../shaders/polygon_extrude_vert.glsl';\nexport default class ExtrudeModel extends BaseModel {\n public getUninforms() {\n const {\n opacity = 1,\n heightfixed = false,\n } = this.layer.getLayerConfig() as IPolygonLayerStyleOptions;\n\n if (this.dataTextureTest && this.dataTextureNeedUpdate({ opacity })) {\n this.judgeStyleAttributes({ opacity });\n const encodeData = this.layer.getEncodedData();\n const { data, width, height } = this.calDataFrame(\n this.cellLength,\n encodeData,\n this.cellProperties,\n );\n this.rowCount = height; // 当前数据纹理有多少行\n\n this.dataTexture =\n this.cellLength > 0 && data.length > 0\n ? this.createTexture2D({\n flipY: true,\n data,\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width,\n height,\n })\n : this.createTexture2D({\n flipY: true,\n data: [1],\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width: 1,\n height: 1,\n });\n }\n\n return {\n u_heightfixed: Number(heightfixed),\n u_dataTexture: this.dataTexture, // 数据纹理 - 有数据映射的时候纹理中带数据,若没有任何数据映射时纹理是 [1]\n u_cellTypeLayout: this.getCellTypeLayout(),\n\n u_opacity: isNumber(opacity) ? opacity : 1.0,\n };\n }\n\n public initModels(): IModel[] {\n return this.buildModels();\n }\n\n public buildModels(): IModel[] {\n const {\n pickLight = false,\n mask = false,\n maskInside = true,\n } = this.layer.getLayerConfig() as IPolygonLayerStyleOptions;\n return [\n this.layer.buildLayerModel({\n moduleName: 'polygonExtrude',\n vertexShader: pickLight\n ? polygonExtrudePickLightVert\n : polygonExtrudeVert,\n fragmentShader: pickLight\n ? polygonExtrudePickLightFrag\n : polygonExtrudeFrag,\n triangulation: PolygonExtrudeTriangulation,\n stencil: getMask(mask, maskInside),\n }),\n ];\n }\n\n public clearModels() {\n this.dataTexture?.destroy();\n }\n\n protected registerBuiltinAttributes() {\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'normal',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Normal',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.STATIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 3,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n normal: number[],\n ) => {\n return normal;\n },\n },\n });\n\n this.styleAttributeService.registerStyleAttribute({\n name: 'size',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Size',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 1,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const { size = 10 } = feature;\n return Array.isArray(size) ? [size[0]] : [size as number];\n },\n },\n });\n }\n}\n"],"file":"extrude.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/polygon/models/extrude.ts"],"names":["ExtrudeModel","layer","getLayerConfig","opacity","heightfixed","raisingHeight","sourceColor","targetColor","dataTextureTest","dataTextureNeedUpdate","judgeStyleAttributes","encodeData","getEncodedData","calDataFrame","cellLength","cellProperties","data","width","height","rowCount","dataTexture","length","createTexture2D","flipY","format","gl","LUMINANCE","type","FLOAT","sourceColorArr","targetColorArr","u_heightfixed","Number","u_dataTexture","u_cellTypeLayout","getCellTypeLayout","u_raisingHeight","u_opacity","u_sourceColor","u_targetColor","u_texture","texture","loadTexture","buildModels","mask","maskInside","getShaders","frag","vert","buildLayerModel","moduleName","vertexShader","fragmentShader","triangulation","PolygonExtrudeTriangulation","stencil","cull","enable","face","BACK","pickLight","mapTexture","polygonExtrudeTexFrag","polygonExtrudeTexVert","polygonExtrudePickLightFrag","polygonExtrudePickLightVert","polygonExtrudeFrag","polygonExtrudeVert","destroy","bbox","getSource","extent","minLng","minLat","maxLng","maxLat","lngLen","latLen","styleAttributeService","registerStyleAttribute","name","AttributeType","Attribute","descriptor","buffer","usage","STATIC_DRAW","size","update","feature","featureIdx","vertex","attributeIdx","normal","lng","lat","DYNAMIC_DRAW","Array","isArray","rendererService","image","Image","crossOrigin","src","onload","wrapS","CLAMP_TO_EDGE","wrapT","min","LINEAR","mag","layerService","updateLayerRenderList","renderLayers","BaseModel"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IEncodeFeature,\n IModel,\n ITexture2D,\n} from '@antv/l7-core';\nimport { getMask, rgb2arr } from '@antv/l7-utils';\nimport { isNumber } from 'lodash';\nimport BaseModel from '../../core/BaseModel';\nimport { IPolygonLayerStyleOptions } from '../../core/interface';\nimport { PolygonExtrudeTriangulation } from '../../core/triangulation';\nimport polygonExtrudeFrag from '../shaders/extrude/polygon_extrude_frag.glsl';\n// extrude\nimport polygonExtrudeVert from '../shaders/extrude/polygon_extrude_vert.glsl';\nimport polygonExtrudeTexFrag from '../shaders/extrude/polygon_extrudetex_frag.glsl';\n// texture\nimport polygonExtrudeTexVert from '../shaders/extrude/polygon_extrudetex_vert.glsl';\n// extrude picking\n\nimport polygonExtrudePickLightFrag from '../shaders/extrude/polygon_extrude_picklight_frag.glsl';\nimport polygonExtrudePickLightVert from '../shaders/extrude/polygon_extrude_picklight_vert.glsl';\n\nexport default class ExtrudeModel extends BaseModel {\n protected texture: ITexture2D;\n public getUninforms() {\n const {\n opacity = 1,\n heightfixed = false,\n raisingHeight = 0,\n sourceColor,\n targetColor,\n } = this.layer.getLayerConfig() as IPolygonLayerStyleOptions;\n\n if (this.dataTextureTest && this.dataTextureNeedUpdate({ opacity })) {\n this.judgeStyleAttributes({ opacity });\n const encodeData = this.layer.getEncodedData();\n const { data, width, height } = this.calDataFrame(\n this.cellLength,\n encodeData,\n this.cellProperties,\n );\n this.rowCount = height; // 当前数据纹理有多少行\n\n this.dataTexture =\n this.cellLength > 0 && data.length > 0\n ? this.createTexture2D({\n flipY: true,\n data,\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width,\n height,\n })\n : this.createTexture2D({\n flipY: true,\n data: [1],\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width: 1,\n height: 1,\n });\n }\n\n // 转化渐变色\n let sourceColorArr = [1, 1, 1, 1];\n let targetColorArr = [1, 1, 1, 1];\n if (sourceColor && targetColor) {\n sourceColorArr = rgb2arr(sourceColor);\n targetColorArr = rgb2arr(targetColor);\n }\n\n return {\n u_heightfixed: Number(heightfixed),\n u_dataTexture: this.dataTexture, // 数据纹理 - 有数据映射的时候纹理中带数据,若没有任何数据映射时纹理是 [1]\n u_cellTypeLayout: this.getCellTypeLayout(),\n u_raisingHeight: Number(raisingHeight),\n u_opacity: isNumber(opacity) ? opacity : 1.0,\n u_sourceColor: sourceColorArr,\n u_targetColor: targetColorArr,\n u_texture: this.texture,\n };\n }\n\n public initModels(): IModel[] {\n this.loadTexture();\n return this.buildModels();\n }\n\n public buildModels(): IModel[] {\n const {\n mask = false,\n maskInside = true,\n } = this.layer.getLayerConfig() as IPolygonLayerStyleOptions;\n\n const { frag, vert, type } = this.getShaders();\n\n return [\n this.layer.buildLayerModel({\n moduleName: type,\n vertexShader: vert,\n fragmentShader: frag,\n triangulation: PolygonExtrudeTriangulation,\n stencil: getMask(mask, maskInside),\n cull: {\n enable: true,\n face: gl.BACK, // gl.FRONT | gl.BACK;\n },\n }),\n ];\n }\n\n public getShaders() {\n const {\n pickLight,\n mapTexture,\n } = this.layer.getLayerConfig() as IPolygonLayerStyleOptions;\n if (mapTexture) {\n return {\n frag: polygonExtrudeTexFrag,\n vert: polygonExtrudeTexVert,\n type: 'polygonExtrudeTexture',\n };\n }\n if (pickLight) {\n return {\n frag: polygonExtrudePickLightFrag,\n vert: polygonExtrudePickLightVert,\n type: 'polygonExtrude',\n };\n } else {\n return {\n frag: polygonExtrudeFrag,\n vert: polygonExtrudeVert,\n type: 'polygonExtrude',\n };\n }\n }\n\n public clearModels() {\n this.dataTexture?.destroy();\n this.texture?.destroy();\n }\n\n protected registerBuiltinAttributes() {\n const {\n mapTexture,\n } = this.layer.getLayerConfig() as IPolygonLayerStyleOptions;\n\n if (mapTexture) {\n const bbox = this.layer.getSource().extent;\n const [minLng, minLat, maxLng, maxLat] = bbox;\n const lngLen = maxLng - minLng;\n const latLen = maxLat - minLat;\n\n this.styleAttributeService.registerStyleAttribute({\n name: 'uvs',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_uvs',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.STATIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 3,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n normal: number[],\n ) => {\n const lng = vertex[0];\n const lat = vertex[1];\n return [\n (lng - minLng) / lngLen,\n (lat - minLat) / latLen,\n vertex[4],\n ];\n },\n },\n });\n }\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'normal',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Normal',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.STATIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 3,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n normal: number[],\n ) => {\n return normal;\n },\n },\n });\n\n this.styleAttributeService.registerStyleAttribute({\n name: 'size',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Size',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 1,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const { size = 10 } = feature;\n return Array.isArray(size) ? [size[0]] : [size as number];\n },\n },\n });\n }\n\n private loadTexture() {\n const {\n mapTexture,\n } = this.layer.getLayerConfig() as IPolygonLayerStyleOptions;\n\n const { createTexture2D } = this.rendererService;\n this.texture = createTexture2D({\n height: 0,\n width: 0,\n });\n if (mapTexture) {\n const image = new Image();\n image.crossOrigin = '';\n image.src = mapTexture;\n\n image.onload = () => {\n this.texture = createTexture2D({\n data: image,\n width: image.width,\n height: image.height,\n wrapS: gl.CLAMP_TO_EDGE,\n wrapT: gl.CLAMP_TO_EDGE,\n min: gl.LINEAR,\n mag: gl.LINEAR,\n });\n this.layerService.updateLayerRenderList();\n this.layerService.renderLayers();\n };\n }\n }\n}\n"],"file":"extrude.js"}
|
|
@@ -171,7 +171,7 @@ var OceanModel = function (_BaseModel) {
|
|
|
171
171
|
var lngLen = maxLng - minLng;
|
|
172
172
|
var latLen = maxLat - minLat;
|
|
173
173
|
this.styleAttributeService.registerStyleAttribute({
|
|
174
|
-
name: '
|
|
174
|
+
name: 'oceanUv',
|
|
175
175
|
type: _l7Core.AttributeType.Attribute,
|
|
176
176
|
descriptor: {
|
|
177
177
|
name: 'a_uv',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/polygon/models/ocean.ts"],"names":["OceanModel","layer","getLayerConfig","opacity","watercolor","watercolor2","dataTextureTest","dataTextureNeedUpdate","judgeStyleAttributes","encodeData","getEncodedData","calDataFrame","cellLength","cellProperties","data","width","height","rowCount","dataTexture","length","createTexture2D","flipY","format","gl","LUMINANCE","type","FLOAT","u_texture1","texture1","u_texture2","texture2","u_texture3","texture3","u_watercolor","u_watercolor2","u_dataTexture","u_cellTypeLayout","getCellTypeLayout","u_opacity","u_time","getLayerAnimateTime","loadTexture","buildModels","mask","maskInside","buildLayerModel","moduleName","vertexShader","ocean_vert","fragmentShader","ocean_frag","triangulation","polygonTriangulation","depth","enable","stencil","destroy","bbox","getSource","extent","minLng","minLat","maxLng","maxLat","lngLen","latLen","styleAttributeService","registerStyleAttribute","name","AttributeType","Attribute","descriptor","buffer","usage","STATIC_DRAW","size","update","feature","featureIdx","vertex","attributeIdx","normal","lng","lat","rendererService","defaultTextureOptions","initImage","images","initTex","layerService","updateLayerRenderList","renderLayers","callback","loadedCount","loadedImages","map","imgSrc","image","Image","crossOrigin","src","push","onload","wrapS","MIRRORED_REPEAT","wrapT","min","LINEAR","mag","BaseModel"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IEncodeFeature,\n IModel,\n IModelUniform,\n ITexture2D,\n} from '@antv/l7-core';\nimport { getMask, rgb2arr } from '@antv/l7-utils';\nimport { create, isNumber } from 'lodash';\nimport BaseModel from '../../core/BaseModel';\nimport { IPolygonLayerStyleOptions } from '../../core/interface';\nimport { polygonTriangulation } from '../../core/triangulation';\nimport ocean_frag from '../shaders/water/polygon_ocean_frag.glsl';\nimport ocean_vert from '../shaders/water/polygon_ocean_vert.glsl';\nexport default class OceanModel extends BaseModel {\n private texture1: ITexture2D;\n private texture2: ITexture2D;\n private texture3: ITexture2D;\n public getUninforms() {\n const {\n opacity = 1,\n watercolor = '#6D99A8',\n watercolor2 = '#0F121C',\n } = this.layer.getLayerConfig() as IPolygonLayerStyleOptions;\n if (this.dataTextureTest && this.dataTextureNeedUpdate({ opacity })) {\n this.judgeStyleAttributes({ opacity });\n const encodeData = this.layer.getEncodedData();\n const { data, width, height } = this.calDataFrame(\n this.cellLength,\n encodeData,\n this.cellProperties,\n );\n this.rowCount = height; // 当前数据纹理有多少行\n\n this.dataTexture =\n this.cellLength > 0 && data.length > 0\n ? this.createTexture2D({\n flipY: true,\n data,\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width,\n height,\n })\n : this.createTexture2D({\n flipY: true,\n data: [1],\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width: 1,\n height: 1,\n });\n }\n return {\n u_texture1: this.texture1,\n u_texture2: this.texture2,\n u_texture3: this.texture3,\n u_watercolor: rgb2arr(watercolor),\n u_watercolor2: rgb2arr(watercolor2),\n u_dataTexture: this.dataTexture, // 数据纹理 - 有数据映射的时候纹理中带数据,若没有任何数据映射时纹理是 [1]\n u_cellTypeLayout: this.getCellTypeLayout(),\n u_opacity: isNumber(opacity) ? opacity : 1.0,\n };\n }\n\n public getAnimateUniforms(): IModelUniform {\n return {\n u_time: this.layer.getLayerAnimateTime(),\n };\n }\n\n public initModels(): IModel[] {\n this.loadTexture();\n return this.buildModels();\n }\n\n public buildModels(): IModel[] {\n const {\n mask = false,\n maskInside = true,\n } = this.layer.getLayerConfig() as IPolygonLayerStyleOptions;\n return [\n this.layer.buildLayerModel({\n moduleName: 'polygon_ocean',\n vertexShader: ocean_vert,\n fragmentShader: ocean_frag,\n triangulation: polygonTriangulation,\n depth: { enable: false },\n\n stencil: getMask(mask, maskInside),\n }),\n ];\n }\n\n public clearModels() {\n this.texture1.destroy();\n this.texture2.destroy();\n this.texture3.destroy();\n this.dataTexture?.destroy();\n }\n\n protected registerBuiltinAttributes() {\n const bbox = this.layer.getSource().extent;\n const [minLng, minLat, maxLng, maxLat] = bbox;\n const lngLen = maxLng - minLng;\n const latLen = maxLat - minLat;\n\n this.styleAttributeService.registerStyleAttribute({\n name: 'linear',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_uv',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.STATIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 2,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n normal: number[],\n ) => {\n const [lng, lat] = vertex;\n return [(lng - minLng) / lngLen, (lat - minLat) / latLen];\n },\n },\n });\n }\n\n private loadTexture() {\n const { createTexture2D } = this.rendererService;\n const defaultTextureOptions = { height: 0, width: 0 };\n // 默认索引为 undefined,所以单独赋值\n this.texture1 = createTexture2D(defaultTextureOptions);\n this.texture2 = createTexture2D(defaultTextureOptions);\n this.texture3 = createTexture2D(defaultTextureOptions);\n\n // 加载完 image 后单独给 texture f赋值\n initImage((images: HTMLImageElement[]) => {\n this.texture1 = initTex(images[0]);\n this.texture2 = initTex(images[1]);\n this.texture3 = initTex(images[2]);\n this.layerService.updateLayerRenderList();\n this.layerService.renderLayers();\n });\n\n function initImage(callback: (loadedImages: HTMLImageElement[]) => void) {\n let loadedCount = 0;\n const loadedImages: HTMLImageElement[] = [];\n const images = [\n 'https://gw.alipayobjects.com/mdn/rms_816329/afts/img/A*EojwT4VzSiYAAAAAAAAAAAAAARQnAQ',\n 'https://gw.alipayobjects.com/mdn/rms_816329/afts/img/A*MJ22QbpuCzIAAAAAAAAAAAAAARQnAQ',\n 'https://gw.alipayobjects.com/mdn/rms_816329/afts/img/A*-z2HSIVDsHIAAAAAAAAAAAAAARQnAQ',\n ];\n images.map((imgSrc: string) => {\n const image = new Image();\n image.crossOrigin = '';\n image.src = imgSrc;\n loadedImages.push(image);\n image.onload = () => {\n loadedCount++;\n if (loadedCount === 3) {\n callback(loadedImages);\n }\n };\n });\n }\n\n function initTex(image: HTMLImageElement) {\n return createTexture2D({\n data: image,\n width: image.width,\n height: image.height,\n wrapS: gl.MIRRORED_REPEAT,\n wrapT: gl.MIRRORED_REPEAT,\n min: gl.LINEAR,\n mag: gl.LINEAR,\n });\n }\n }\n}\n"],"file":"ocean.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/polygon/models/ocean.ts"],"names":["OceanModel","layer","getLayerConfig","opacity","watercolor","watercolor2","dataTextureTest","dataTextureNeedUpdate","judgeStyleAttributes","encodeData","getEncodedData","calDataFrame","cellLength","cellProperties","data","width","height","rowCount","dataTexture","length","createTexture2D","flipY","format","gl","LUMINANCE","type","FLOAT","u_texture1","texture1","u_texture2","texture2","u_texture3","texture3","u_watercolor","u_watercolor2","u_dataTexture","u_cellTypeLayout","getCellTypeLayout","u_opacity","u_time","getLayerAnimateTime","loadTexture","buildModels","mask","maskInside","buildLayerModel","moduleName","vertexShader","ocean_vert","fragmentShader","ocean_frag","triangulation","polygonTriangulation","depth","enable","stencil","destroy","bbox","getSource","extent","minLng","minLat","maxLng","maxLat","lngLen","latLen","styleAttributeService","registerStyleAttribute","name","AttributeType","Attribute","descriptor","buffer","usage","STATIC_DRAW","size","update","feature","featureIdx","vertex","attributeIdx","normal","lng","lat","rendererService","defaultTextureOptions","initImage","images","initTex","layerService","updateLayerRenderList","renderLayers","callback","loadedCount","loadedImages","map","imgSrc","image","Image","crossOrigin","src","push","onload","wrapS","MIRRORED_REPEAT","wrapT","min","LINEAR","mag","BaseModel"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IEncodeFeature,\n IModel,\n IModelUniform,\n ITexture2D,\n} from '@antv/l7-core';\nimport { getMask, rgb2arr } from '@antv/l7-utils';\nimport { create, isNumber } from 'lodash';\nimport BaseModel from '../../core/BaseModel';\nimport { IPolygonLayerStyleOptions } from '../../core/interface';\nimport { polygonTriangulation } from '../../core/triangulation';\nimport ocean_frag from '../shaders/water/polygon_ocean_frag.glsl';\nimport ocean_vert from '../shaders/water/polygon_ocean_vert.glsl';\nexport default class OceanModel extends BaseModel {\n private texture1: ITexture2D;\n private texture2: ITexture2D;\n private texture3: ITexture2D;\n public getUninforms() {\n const {\n opacity = 1,\n watercolor = '#6D99A8',\n watercolor2 = '#0F121C',\n } = this.layer.getLayerConfig() as IPolygonLayerStyleOptions;\n if (this.dataTextureTest && this.dataTextureNeedUpdate({ opacity })) {\n this.judgeStyleAttributes({ opacity });\n const encodeData = this.layer.getEncodedData();\n const { data, width, height } = this.calDataFrame(\n this.cellLength,\n encodeData,\n this.cellProperties,\n );\n this.rowCount = height; // 当前数据纹理有多少行\n\n this.dataTexture =\n this.cellLength > 0 && data.length > 0\n ? this.createTexture2D({\n flipY: true,\n data,\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width,\n height,\n })\n : this.createTexture2D({\n flipY: true,\n data: [1],\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width: 1,\n height: 1,\n });\n }\n return {\n u_texture1: this.texture1,\n u_texture2: this.texture2,\n u_texture3: this.texture3,\n u_watercolor: rgb2arr(watercolor),\n u_watercolor2: rgb2arr(watercolor2),\n u_dataTexture: this.dataTexture, // 数据纹理 - 有数据映射的时候纹理中带数据,若没有任何数据映射时纹理是 [1]\n u_cellTypeLayout: this.getCellTypeLayout(),\n u_opacity: isNumber(opacity) ? opacity : 1.0,\n };\n }\n\n public getAnimateUniforms(): IModelUniform {\n return {\n u_time: this.layer.getLayerAnimateTime(),\n };\n }\n\n public initModels(): IModel[] {\n this.loadTexture();\n return this.buildModels();\n }\n\n public buildModels(): IModel[] {\n const {\n mask = false,\n maskInside = true,\n } = this.layer.getLayerConfig() as IPolygonLayerStyleOptions;\n return [\n this.layer.buildLayerModel({\n moduleName: 'polygon_ocean',\n vertexShader: ocean_vert,\n fragmentShader: ocean_frag,\n triangulation: polygonTriangulation,\n depth: { enable: false },\n\n stencil: getMask(mask, maskInside),\n }),\n ];\n }\n\n public clearModels() {\n this.texture1.destroy();\n this.texture2.destroy();\n this.texture3.destroy();\n this.dataTexture?.destroy();\n }\n\n protected registerBuiltinAttributes() {\n const bbox = this.layer.getSource().extent;\n const [minLng, minLat, maxLng, maxLat] = bbox;\n const lngLen = maxLng - minLng;\n const latLen = maxLat - minLat;\n\n this.styleAttributeService.registerStyleAttribute({\n name: 'oceanUv',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_uv',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.STATIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 2,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n normal: number[],\n ) => {\n const [lng, lat] = vertex;\n return [(lng - minLng) / lngLen, (lat - minLat) / latLen];\n },\n },\n });\n }\n\n private loadTexture() {\n const { createTexture2D } = this.rendererService;\n const defaultTextureOptions = { height: 0, width: 0 };\n // 默认索引为 undefined,所以单独赋值\n this.texture1 = createTexture2D(defaultTextureOptions);\n this.texture2 = createTexture2D(defaultTextureOptions);\n this.texture3 = createTexture2D(defaultTextureOptions);\n\n // 加载完 image 后单独给 texture f赋值\n initImage((images: HTMLImageElement[]) => {\n this.texture1 = initTex(images[0]);\n this.texture2 = initTex(images[1]);\n this.texture3 = initTex(images[2]);\n this.layerService.updateLayerRenderList();\n this.layerService.renderLayers();\n });\n\n function initImage(callback: (loadedImages: HTMLImageElement[]) => void) {\n let loadedCount = 0;\n const loadedImages: HTMLImageElement[] = [];\n const images = [\n 'https://gw.alipayobjects.com/mdn/rms_816329/afts/img/A*EojwT4VzSiYAAAAAAAAAAAAAARQnAQ',\n 'https://gw.alipayobjects.com/mdn/rms_816329/afts/img/A*MJ22QbpuCzIAAAAAAAAAAAAAARQnAQ',\n 'https://gw.alipayobjects.com/mdn/rms_816329/afts/img/A*-z2HSIVDsHIAAAAAAAAAAAAAARQnAQ',\n ];\n images.map((imgSrc: string) => {\n const image = new Image();\n image.crossOrigin = '';\n image.src = imgSrc;\n loadedImages.push(image);\n image.onload = () => {\n loadedCount++;\n if (loadedCount === 3) {\n callback(loadedImages);\n }\n };\n });\n }\n\n function initTex(image: HTMLImageElement) {\n return createTexture2D({\n data: image,\n width: image.width,\n height: image.height,\n wrapS: gl.MIRRORED_REPEAT,\n wrapT: gl.MIRRORED_REPEAT,\n min: gl.LINEAR,\n mag: gl.LINEAR,\n });\n }\n }\n}\n"],"file":"ocean.js"}
|
|
@@ -143,9 +143,9 @@ var WaterModel = function (_BaseModel) {
|
|
|
143
143
|
}, {
|
|
144
144
|
key: "clearModels",
|
|
145
145
|
value: function clearModels() {
|
|
146
|
-
var _this$dataTexture;
|
|
146
|
+
var _this$texture, _this$dataTexture;
|
|
147
147
|
|
|
148
|
-
this.texture.destroy();
|
|
148
|
+
(_this$texture = this.texture) === null || _this$texture === void 0 ? void 0 : _this$texture.destroy();
|
|
149
149
|
(_this$dataTexture = this.dataTexture) === null || _this$dataTexture === void 0 ? void 0 : _this$dataTexture.destroy();
|
|
150
150
|
}
|
|
151
151
|
}, {
|
|
@@ -162,7 +162,7 @@ var WaterModel = function (_BaseModel) {
|
|
|
162
162
|
var lngLen = maxLng - minLng;
|
|
163
163
|
var latLen = maxLat - minLat;
|
|
164
164
|
this.styleAttributeService.registerStyleAttribute({
|
|
165
|
-
name: '
|
|
165
|
+
name: 'waterUv',
|
|
166
166
|
type: _l7Core.AttributeType.Attribute,
|
|
167
167
|
descriptor: {
|
|
168
168
|
name: 'a_uv',
|