@antv/l7-layers 2.6.23 → 2.6.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.
@@ -68,6 +68,7 @@ var DataMappingPlugin = (_dec = (0, _inversify.injectable)(), _dec2 = (0, _inver
68
68
  return;
69
69
  }
70
70
 
71
+ var bottomColor = layer.getBottomColor();
71
72
  var attributes = styleAttributeService.getLayerStyleAttributes() || [];
72
73
  var filter = styleAttributeService.getLayerStyleAttribute('filter');
73
74
  var dataArray = layer.getSource().data.dataArray;
@@ -78,16 +79,16 @@ var DataMappingPlugin = (_dec = (0, _inversify.injectable)(), _dec2 = (0, _inver
78
79
 
79
80
  if (filter !== null && filter !== void 0 && filter.needRemapping && filter !== null && filter !== void 0 && filter.scale) {
80
81
  filterData = dataArray.filter(function (record) {
81
- return _this.applyAttributeMapping(filter, record)[0];
82
+ return _this.applyAttributeMapping(filter, record, bottomColor)[0];
82
83
  });
83
84
  }
84
85
 
85
86
  if (attributesToRemapping.length) {
86
87
  if (filter !== null && filter !== void 0 && filter.needRemapping) {
87
- layer.setEncodedData(_this.mapping(attributes, filterData));
88
+ layer.setEncodedData(_this.mapping(attributes, filterData, undefined, bottomColor));
88
89
  filter.needRemapping = false;
89
90
  } else {
90
- layer.setEncodedData(_this.mapping(attributesToRemapping, filterData, layer.getEncodedData()));
91
+ layer.setEncodedData(_this.mapping(attributesToRemapping, filterData, layer.getEncodedData(), bottomColor));
91
92
  }
92
93
 
93
94
  layer.emit('remapping', null);
@@ -100,6 +101,7 @@ var DataMappingPlugin = (_dec = (0, _inversify.injectable)(), _dec2 = (0, _inver
100
101
  var _this2 = this;
101
102
 
102
103
  var styleAttributeService = _ref2.styleAttributeService;
104
+ var bottomColor = layer.getBottomColor();
103
105
  var attributes = styleAttributeService.getLayerStyleAttributes() || [];
104
106
  var filter = styleAttributeService.getLayerStyleAttribute('filter');
105
107
  var dataArray = layer.getSource().data.dataArray;
@@ -107,15 +109,15 @@ var DataMappingPlugin = (_dec = (0, _inversify.injectable)(), _dec2 = (0, _inver
107
109
 
108
110
  if (filter !== null && filter !== void 0 && filter.scale) {
109
111
  filterData = dataArray.filter(function (record) {
110
- return _this2.applyAttributeMapping(filter, record)[0];
112
+ return _this2.applyAttributeMapping(filter, record, bottomColor)[0];
111
113
  });
112
114
  }
113
115
 
114
- layer.setEncodedData(this.mapping(attributes, filterData));
116
+ layer.setEncodedData(this.mapping(attributes, filterData, undefined, bottomColor));
115
117
  }
116
118
  }, {
117
119
  key: "mapping",
118
- value: function mapping(attributes, data, predata) {
120
+ value: function mapping(attributes, data, predata, minimumColor) {
119
121
  var _this3 = this;
120
122
 
121
123
  var mappedData = data.map(function (record, i) {
@@ -129,7 +131,7 @@ var DataMappingPlugin = (_dec = (0, _inversify.injectable)(), _dec2 = (0, _inver
129
131
  attributes.filter(function (attribute) {
130
132
  return attribute.scale !== undefined;
131
133
  }).forEach(function (attribute) {
132
- var values = _this3.applyAttributeMapping(attribute, record);
134
+ var values = _this3.applyAttributeMapping(attribute, record, minimumColor);
133
135
 
134
136
  attribute.needRemapping = false;
135
137
 
@@ -172,7 +174,7 @@ var DataMappingPlugin = (_dec = (0, _inversify.injectable)(), _dec2 = (0, _inver
172
174
  }
173
175
  }, {
174
176
  key: "applyAttributeMapping",
175
- value: function applyAttributeMapping(attribute, record) {
177
+ value: function applyAttributeMapping(attribute, record, minimumColor) {
176
178
  var _attribute$scale;
177
179
 
178
180
  if (!attribute.scale) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/plugins/DataMappingPlugin.ts"],"names":["DataMappingPlugin","TYPES","IGlobalConfigService","IMapService","IFontService","layer","styleAttributeService","hooks","init","tap","generateMaping","beforeRenderData","dataState","dataMappingNeedUpdate","beforeRender","layerModelNeedUpdate","attributes","getLayerStyleAttributes","filter","getLayerStyleAttribute","dataArray","getSource","data","attributesToRemapping","attribute","needRemapping","filterData","scale","record","applyAttributeMapping","length","setEncodedData","mapping","getEncodedData","emit","predata","mappedData","map","i","preRecord","encodeRecord","id","_id","coordinates","undefined","forEach","values","name","c","Array","isArray","shape","fontService","getIconFontKey","mapService","version","d","originCoordinates","lngLatToCoord","lngLatToCoords","scalers","params","field","hasOwnProperty","type","push"],"mappings":"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","sourcesContent":["import {\n IEncodeFeature,\n IFontService,\n IGlobalConfigService,\n ILayer,\n ILayerPlugin,\n ILngLat,\n IMapService,\n IParseDataItem,\n IStyleAttribute,\n IStyleAttributeService,\n TYPES,\n} from '@antv/l7-core';\nimport { rgb2arr, unProjectFlat } from '@antv/l7-utils';\nimport { inject, injectable } from 'inversify';\nimport { cloneDeep } from 'lodash';\nimport 'reflect-metadata';\n\n@injectable()\nexport default class DataMappingPlugin implements ILayerPlugin {\n @inject(TYPES.IGlobalConfigService)\n private readonly configService: IGlobalConfigService;\n\n @inject(TYPES.IMapService)\n private readonly mapService: IMapService;\n\n @inject(TYPES.IFontService)\n private readonly fontService: IFontService;\n\n public apply(\n layer: ILayer,\n {\n styleAttributeService,\n }: { styleAttributeService: IStyleAttributeService },\n ) {\n layer.hooks.init.tap('DataMappingPlugin', () => {\n // 初始化重新生成 map\n this.generateMaping(layer, { styleAttributeService });\n });\n\n layer.hooks.beforeRenderData.tap('DataMappingPlugin', () => {\n layer.dataState.dataMappingNeedUpdate = false;\n this.generateMaping(layer, { styleAttributeService });\n return true;\n });\n\n // remapping before render\n layer.hooks.beforeRender.tap('DataMappingPlugin', () => {\n if (layer.layerModelNeedUpdate) {\n return;\n }\n const attributes = styleAttributeService.getLayerStyleAttributes() || [];\n const filter = styleAttributeService.getLayerStyleAttribute('filter');\n const { dataArray } = layer.getSource().data;\n const attributesToRemapping = attributes.filter(\n (attribute) => attribute.needRemapping, // 如果filter变化\n );\n let filterData = dataArray;\n // 数据过滤完 再执行数据映射\n if (filter?.needRemapping && filter?.scale) {\n filterData = dataArray.filter((record: IParseDataItem) => {\n return this.applyAttributeMapping(filter, record)[0];\n });\n }\n if (attributesToRemapping.length) {\n // 过滤数据\n if (filter?.needRemapping) {\n layer.setEncodedData(this.mapping(attributes, filterData));\n filter.needRemapping = false;\n } else {\n layer.setEncodedData(\n this.mapping(\n attributesToRemapping,\n filterData,\n layer.getEncodedData(),\n ),\n );\n }\n // 处理文本更新\n layer.emit('remapping', null);\n }\n });\n }\n private generateMaping(\n layer: ILayer,\n {\n styleAttributeService,\n }: { styleAttributeService: IStyleAttributeService },\n ) {\n const attributes = styleAttributeService.getLayerStyleAttributes() || [];\n const filter = styleAttributeService.getLayerStyleAttribute('filter');\n const { dataArray } = layer.getSource().data;\n let filterData = dataArray;\n // 数据过滤完 再执行数据映射\n if (filter?.scale) {\n filterData = dataArray.filter((record: IParseDataItem) => {\n return this.applyAttributeMapping(filter, record)[0];\n });\n }\n layer.setEncodedData(this.mapping(attributes, filterData));\n }\n\n private mapping(\n attributes: IStyleAttribute[],\n data: IParseDataItem[],\n predata?: IEncodeFeature[],\n ): IEncodeFeature[] {\n // console.log('data', data)\n const mappedData = data.map((record: IParseDataItem, i) => {\n const preRecord = predata ? predata[i] : {};\n const encodeRecord: IEncodeFeature = {\n id: record._id,\n coordinates: record.coordinates,\n ...preRecord,\n };\n // console.log('attributes', attributes)\n attributes\n .filter((attribute) => attribute.scale !== undefined)\n .forEach((attribute: IStyleAttribute) => {\n // console.log('attribute', attribute)\n // console.log('record', record)\n let values = this.applyAttributeMapping(attribute, record);\n // console.log('values', values)\n attribute.needRemapping = false;\n\n // TODO: 支持每个属性配置 postprocess\n if (attribute.name === 'color') {\n // console.log('attribute', attribute)\n values = values.map((c: unknown) => {\n return rgb2arr(c as string);\n });\n }\n // @ts-ignore\n encodeRecord[attribute.name] =\n Array.isArray(values) && values.length === 1 ? values[0] : values;\n\n // 增加对 layer/text/iconfont unicode 映射的解析\n if (attribute.name === 'shape') {\n encodeRecord.shape = this.fontService.getIconFontKey(\n encodeRecord[attribute.name] as string,\n );\n }\n });\n return encodeRecord;\n }) as IEncodeFeature[];\n // console.log('mappedData', mappedData)\n\n // 根据地图的类型判断是否需要对点位数据进行处理, 若是高德2.0则需要对坐标进行相对偏移\n if (mappedData.length > 0 && this.mapService.version === 'GAODE2.x') {\n if (typeof mappedData[0].coordinates[0] === 'number') {\n // 单个的点数据\n // @ts-ignore\n mappedData\n // TODO: 避免经纬度被重复计算导致坐标位置偏移\n .filter((d) => !d.originCoordinates)\n .map((d) => {\n d.version = 'GAODE2.x';\n // @ts-ignore\n d.originCoordinates = cloneDeep(d.coordinates); // 为了兼容高德1.x 需要保存一份原始的经纬度坐标数据(许多上层逻辑依赖经纬度数据)\n // @ts-ignore\n d.coordinates = this.mapService.lngLatToCoord(d.coordinates);\n // d.coordinates = this.mapService.lngLatToCoord(unProjectFlat(d.coordinates));\n });\n } else {\n // 连续的线、面数据\n // @ts-ignore\n mappedData\n // TODO: 避免经纬度被重复计算导致坐标位置偏移\n .filter((d) => !d.originCoordinates)\n .map((d) => {\n d.version = 'GAODE2.x';\n // @ts-ignore\n d.originCoordinates = cloneDeep(d.coordinates); // 为了兼容高德1.x 需要保存一份原始的经纬度坐标数据(许多上层逻辑依赖经纬度数据)\n // @ts-ignore\n d.coordinates = this.mapService.lngLatToCoords(d.coordinates);\n });\n }\n }\n // console.log('mappedData', mappedData)\n return mappedData;\n }\n\n private applyAttributeMapping(\n attribute: IStyleAttribute,\n record: { [key: string]: unknown },\n ) {\n if (!attribute.scale) {\n return [];\n }\n const scalers = attribute?.scale?.scalers || [];\n const params: unknown[] = [];\n\n scalers.forEach(({ field }) => {\n if (\n record.hasOwnProperty(field) ||\n attribute.scale?.type === 'variable'\n ) {\n // TODO:多字段,常量\n params.push(record[field]);\n }\n });\n // console.log('params', params)\n // console.log('attribute', attribute)\n // console.log('mapping',attribute.mapping ? attribute.mapping(params) : [])\n return attribute.mapping ? attribute.mapping(params) : [];\n }\n}\n"],"file":"DataMappingPlugin.js"}
1
+ {"version":3,"sources":["../../src/plugins/DataMappingPlugin.ts"],"names":["DataMappingPlugin","TYPES","IGlobalConfigService","IMapService","IFontService","layer","styleAttributeService","hooks","init","tap","generateMaping","beforeRenderData","dataState","dataMappingNeedUpdate","beforeRender","layerModelNeedUpdate","bottomColor","getBottomColor","attributes","getLayerStyleAttributes","filter","getLayerStyleAttribute","dataArray","getSource","data","attributesToRemapping","attribute","needRemapping","filterData","scale","record","applyAttributeMapping","length","setEncodedData","mapping","undefined","getEncodedData","emit","predata","minimumColor","mappedData","map","i","preRecord","encodeRecord","id","_id","coordinates","forEach","values","name","c","Array","isArray","shape","fontService","getIconFontKey","mapService","version","d","originCoordinates","lngLatToCoord","lngLatToCoords","scalers","params","field","hasOwnProperty","type","push"],"mappings":"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","sourcesContent":["import {\n IEncodeFeature,\n IFontService,\n IGlobalConfigService,\n ILayer,\n ILayerPlugin,\n ILngLat,\n IMapService,\n IParseDataItem,\n IStyleAttribute,\n IStyleAttributeService,\n TYPES,\n} from '@antv/l7-core';\nimport { rgb2arr, unProjectFlat } from '@antv/l7-utils';\nimport { inject, injectable } from 'inversify';\nimport { cloneDeep } from 'lodash';\nimport 'reflect-metadata';\n\n@injectable()\nexport default class DataMappingPlugin implements ILayerPlugin {\n @inject(TYPES.IGlobalConfigService)\n private readonly configService: IGlobalConfigService;\n\n @inject(TYPES.IMapService)\n private readonly mapService: IMapService;\n\n @inject(TYPES.IFontService)\n private readonly fontService: IFontService;\n\n public apply(\n layer: ILayer,\n {\n styleAttributeService,\n }: { styleAttributeService: IStyleAttributeService },\n ) {\n layer.hooks.init.tap('DataMappingPlugin', () => {\n // 初始化重新生成 map\n this.generateMaping(layer, { styleAttributeService });\n });\n\n layer.hooks.beforeRenderData.tap('DataMappingPlugin', () => {\n layer.dataState.dataMappingNeedUpdate = false;\n this.generateMaping(layer, { styleAttributeService });\n return true;\n });\n\n // remapping before render\n layer.hooks.beforeRender.tap('DataMappingPlugin', () => {\n if (layer.layerModelNeedUpdate) {\n return;\n }\n const bottomColor = layer.getBottomColor();\n const attributes = styleAttributeService.getLayerStyleAttributes() || [];\n const filter = styleAttributeService.getLayerStyleAttribute('filter');\n const { dataArray } = layer.getSource().data;\n const attributesToRemapping = attributes.filter(\n (attribute) => attribute.needRemapping, // 如果filter变化\n );\n let filterData = dataArray;\n // 数据过滤完 再执行数据映射\n if (filter?.needRemapping && filter?.scale) {\n filterData = dataArray.filter((record: IParseDataItem) => {\n return this.applyAttributeMapping(filter, record, bottomColor)[0];\n });\n }\n if (attributesToRemapping.length) {\n // 过滤数据\n if (filter?.needRemapping) {\n layer.setEncodedData(\n this.mapping(attributes, filterData, undefined, bottomColor),\n );\n filter.needRemapping = false;\n } else {\n layer.setEncodedData(\n this.mapping(\n attributesToRemapping,\n filterData,\n layer.getEncodedData(),\n bottomColor,\n ),\n );\n }\n // 处理文本更新\n layer.emit('remapping', null);\n }\n });\n }\n private generateMaping(\n layer: ILayer,\n {\n styleAttributeService,\n }: { styleAttributeService: IStyleAttributeService },\n ) {\n const bottomColor = layer.getBottomColor();\n const attributes = styleAttributeService.getLayerStyleAttributes() || [];\n const filter = styleAttributeService.getLayerStyleAttribute('filter');\n const { dataArray } = layer.getSource().data;\n let filterData = dataArray;\n // 数据过滤完 再执行数据映射\n if (filter?.scale) {\n filterData = dataArray.filter((record: IParseDataItem) => {\n return this.applyAttributeMapping(filter, record, bottomColor)[0];\n });\n }\n layer.setEncodedData(\n this.mapping(attributes, filterData, undefined, bottomColor),\n );\n }\n\n private mapping(\n attributes: IStyleAttribute[],\n data: IParseDataItem[],\n predata?: IEncodeFeature[],\n minimumColor?: string,\n ): IEncodeFeature[] {\n // console.log('data', data)\n const mappedData = data.map((record: IParseDataItem, i) => {\n const preRecord = predata ? predata[i] : {};\n const encodeRecord: IEncodeFeature = {\n id: record._id,\n coordinates: record.coordinates,\n ...preRecord,\n };\n // console.log('attributes', attributes)\n attributes\n .filter((attribute) => attribute.scale !== undefined)\n .forEach((attribute: IStyleAttribute) => {\n // console.log('attribute', attribute)\n // console.log('record', record)\n let values = this.applyAttributeMapping(\n attribute,\n record,\n minimumColor,\n );\n // console.log('values', values)\n attribute.needRemapping = false;\n\n // TODO: 支持每个属性配置 postprocess\n if (attribute.name === 'color') {\n // console.log('attribute', attribute)\n values = values.map((c: unknown) => {\n return rgb2arr(c as string);\n });\n }\n // @ts-ignore\n encodeRecord[attribute.name] =\n Array.isArray(values) && values.length === 1 ? values[0] : values;\n\n // 增加对 layer/text/iconfont unicode 映射的解析\n if (attribute.name === 'shape') {\n encodeRecord.shape = this.fontService.getIconFontKey(\n encodeRecord[attribute.name] as string,\n );\n }\n });\n return encodeRecord;\n }) as IEncodeFeature[];\n // console.log('mappedData', mappedData)\n\n // 根据地图的类型判断是否需要对点位数据进行处理, 若是高德2.0则需要对坐标进行相对偏移\n if (mappedData.length > 0 && this.mapService.version === 'GAODE2.x') {\n if (typeof mappedData[0].coordinates[0] === 'number') {\n // 单个的点数据\n // @ts-ignore\n mappedData\n // TODO: 避免经纬度被重复计算导致坐标位置偏移\n .filter((d) => !d.originCoordinates)\n .map((d) => {\n d.version = 'GAODE2.x';\n // @ts-ignore\n d.originCoordinates = cloneDeep(d.coordinates); // 为了兼容高德1.x 需要保存一份原始的经纬度坐标数据(许多上层逻辑依赖经纬度数据)\n // @ts-ignore\n d.coordinates = this.mapService.lngLatToCoord(d.coordinates);\n // d.coordinates = this.mapService.lngLatToCoord(unProjectFlat(d.coordinates));\n });\n } else {\n // 连续的线、面数据\n // @ts-ignore\n mappedData\n // TODO: 避免经纬度被重复计算导致坐标位置偏移\n .filter((d) => !d.originCoordinates)\n .map((d) => {\n d.version = 'GAODE2.x';\n // @ts-ignore\n d.originCoordinates = cloneDeep(d.coordinates); // 为了兼容高德1.x 需要保存一份原始的经纬度坐标数据(许多上层逻辑依赖经纬度数据)\n // @ts-ignore\n d.coordinates = this.mapService.lngLatToCoords(d.coordinates);\n });\n }\n }\n // console.log('mappedData', mappedData)\n return mappedData;\n }\n\n private applyAttributeMapping(\n attribute: IStyleAttribute,\n record: { [key: string]: unknown },\n minimumColor?: string,\n ) {\n if (!attribute.scale) {\n return [];\n }\n const scalers = attribute?.scale?.scalers || [];\n const params: unknown[] = [];\n\n scalers.forEach(({ field }) => {\n if (\n record.hasOwnProperty(field) ||\n attribute.scale?.type === 'variable'\n ) {\n // TODO:多字段,常量\n params.push(record[field]);\n }\n });\n // console.log('params', params)\n // console.log('attribute', attribute)\n // if (attribute.name === 'color') {\n // if (params.length === 0 || params[0] === '') {\n // return [minimumColor];\n // }\n // }\n\n return attribute.mapping ? attribute.mapping(params) : [];\n }\n}\n"],"file":"DataMappingPlugin.js"}
@@ -51,7 +51,7 @@ var UpdateStyleAttributePlugin = (_dec = (0, _inversify.injectable)(), _dec(_cla
51
51
  var filter = styleAttributeService.getLayerStyleAttribute('filter');
52
52
  var shape = styleAttributeService.getLayerStyleAttribute('shape');
53
53
 
54
- if (filter && filter.needRegenerateVertices || shape && shape.needRegenerateVertices) {
54
+ if (filter && filter.needRegenerateVertices) {
55
55
  layer.layerModelNeedUpdate = true;
56
56
  attributes.forEach(function (attr) {
57
57
  return attr.needRegenerateVertices = false;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/plugins/UpdateStyleAttributePlugin.ts"],"names":["UpdateStyleAttributePlugin","layer","styleAttributeService","hooks","init","tap","initStyleAttribute","beforeRender","layerModelNeedUpdate","updateStyleAtrribute","attributes","getLayerStyleAttributes","filter","getLayerStyleAttribute","shape","needRegenerateVertices","forEach","attr","attribute","updateAttributeByFeatureRange","name","getEncodedData","featureRange","startIndex","endIndex"],"mappings":";;;;;;;;;;;;;AAMA;;AACA;;;;IAMqBA,0B,WADpB,4B;;;;;;;WAEC,eACEC,KADF,QAKE;AAAA;;AAAA,UAFEC,qBAEF,QAFEA,qBAEF;AACAD,MAAAA,KAAK,CAACE,KAAN,CAAYC,IAAZ,CAAiBC,GAAjB,CAAqB,4BAArB,EAAmD,YAAM;AACvD,QAAA,KAAI,CAACC,kBAAL,CAAwBL,KAAxB,EAA+B;AAAEC,UAAAA,qBAAqB,EAArBA;AAAF,SAA/B;AACD,OAFD;AASAD,MAAAA,KAAK,CAACE,KAAN,CAAYI,YAAZ,CAAyBF,GAAzB,CAA6B,4BAA7B,EAA2D,YAAM;AAC/D,YAAIJ,KAAK,CAACO,oBAAV,EAAgC;AAC9B;AACD;;AACD,QAAA,KAAI,CAACC,oBAAL,CAA0BR,KAA1B,EAAiC;AAAEC,UAAAA,qBAAqB,EAArBA;AAAF,SAAjC;AACD,OALD;AAMD;;;WACD,8BACED,KADF,SAKE;AAAA,UAFEC,qBAEF,SAFEA,qBAEF;AACA,UAAMQ,UAAU,GAAGR,qBAAqB,CAACS,uBAAtB,MAAmD,EAAtE;AACA,UAAMC,MAAM,GAAGV,qBAAqB,CAACW,sBAAtB,CAA6C,QAA7C,CAAf;AACA,UAAMC,KAAK,GAAGZ,qBAAqB,CAACW,sBAAtB,CAA6C,OAA7C,CAAd;;AACA,UACGD,MAAM,IAAIA,MAAM,CAACG,sBAAlB,IACCD,KAAK,IAAIA,KAAK,CAACC,sBAFlB,EAGE;AACAd,QAAAA,KAAK,CAACO,oBAAN,GAA6B,IAA7B;AACAE,QAAAA,UAAU,CAACM,OAAX,CAAmB,UAACC,IAAD;AAAA,iBAAWA,IAAI,CAACF,sBAAL,GAA8B,KAAzC;AAAA,SAAnB;AACA;AACD;;AACDL,MAAAA,UAAU,CACPE,MADH,CACU,UAACM,SAAD;AAAA,eAAeA,SAAS,CAACH,sBAAzB;AAAA,OADV,EAEGC,OAFH,CAEW,UAACE,SAAD,EAAe;AAEtBhB,QAAAA,qBAAqB,CAACiB,6BAAtB,CACED,SAAS,CAACE,IADZ,EAEEnB,KAAK,CAACoB,cAAN,EAFF,EAGEH,SAAS,CAACI,YAAV,CAAuBC,UAHzB,EAIEL,SAAS,CAACI,YAAV,CAAuBE,QAJzB;AAMAN,QAAAA,SAAS,CAACH,sBAAV,GAAmC,KAAnC;AACD,OAXH;AAYD;;;WAED,4BACEd,KADF,SAKE;AAAA,UAFEC,qBAEF,SAFEA,qBAEF;AACA,UAAMQ,UAAU,GAAGR,qBAAqB,CAACS,uBAAtB,MAAmD,EAAtE;AACAD,MAAAA,UAAU,CACPE,MADH,CACU,UAACM,SAAD;AAAA,eAAeA,SAAS,CAACH,sBAAzB;AAAA,OADV,EAEGC,OAFH,CAEW,UAACE,SAAD,EAAe;AAEtBhB,QAAAA,qBAAqB,CAACiB,6BAAtB,CACED,SAAS,CAACE,IADZ,EAEEnB,KAAK,CAACoB,cAAN,EAFF,EAGEH,SAAS,CAACI,YAAV,CAAuBC,UAHzB,EAIEL,SAAS,CAACI,YAAV,CAAuBE,QAJzB;AAMAN,QAAAA,SAAS,CAACH,sBAAV,GAAmC,KAAnC;AACD,OAXH;AAYD","sourcesContent":["import {\n ILayer,\n ILayerPlugin,\n IStyleAttributeService,\n TYPES,\n} from '@antv/l7-core';\nimport { inject, injectable } from 'inversify';\nimport 'reflect-metadata';\n\n/**\n * 在初始化阶段完成属性的注册,以及首次根据 Layer 指定的三角化方法完成 indices 和 attribute 的创建\n */\n@injectable()\nexport default class UpdateStyleAttributePlugin implements ILayerPlugin {\n public apply(\n layer: ILayer,\n {\n styleAttributeService,\n }: { styleAttributeService: IStyleAttributeService },\n ) {\n layer.hooks.init.tap('UpdateStyleAttributePlugin', () => {\n this.initStyleAttribute(layer, { styleAttributeService });\n });\n\n // layer.hooks.beforeRenderData.tap('styleAttributeService', () => {\n // // layer.layerModelNeedUpdate = true;\n // return true;\n // });\n\n layer.hooks.beforeRender.tap('UpdateStyleAttributePlugin', () => {\n if (layer.layerModelNeedUpdate) {\n return;\n }\n this.updateStyleAtrribute(layer, { styleAttributeService });\n });\n }\n private updateStyleAtrribute(\n layer: ILayer,\n {\n styleAttributeService,\n }: { styleAttributeService: IStyleAttributeService },\n ) {\n const attributes = styleAttributeService.getLayerStyleAttributes() || [];\n const filter = styleAttributeService.getLayerStyleAttribute('filter');\n const shape = styleAttributeService.getLayerStyleAttribute('shape');\n if (\n (filter && filter.needRegenerateVertices) ||\n (shape && shape.needRegenerateVertices) // TODO:Shape 更新重新build\n ) {\n layer.layerModelNeedUpdate = true;\n attributes.forEach((attr) => (attr.needRegenerateVertices = false));\n return;\n }\n attributes\n .filter((attribute) => attribute.needRegenerateVertices)\n .forEach((attribute) => {\n // 精确更新某个/某些 feature(s),需要传入 featureIdx d\n styleAttributeService.updateAttributeByFeatureRange(\n attribute.name,\n layer.getEncodedData(), // 获取经过 mapping 最新的数据\n attribute.featureRange.startIndex,\n attribute.featureRange.endIndex,\n );\n attribute.needRegenerateVertices = false;\n });\n }\n\n private initStyleAttribute(\n layer: ILayer,\n {\n styleAttributeService,\n }: { styleAttributeService: IStyleAttributeService },\n ) {\n const attributes = styleAttributeService.getLayerStyleAttributes() || [];\n attributes\n .filter((attribute) => attribute.needRegenerateVertices)\n .forEach((attribute) => {\n // 精确更新某个/某些 feature(s),需要传入 featureIdx d\n styleAttributeService.updateAttributeByFeatureRange(\n attribute.name,\n layer.getEncodedData(), // 获取经过 mapping 最新的数据\n attribute.featureRange.startIndex,\n attribute.featureRange.endIndex,\n );\n attribute.needRegenerateVertices = false;\n });\n }\n}\n"],"file":"UpdateStyleAttributePlugin.js"}
1
+ {"version":3,"sources":["../../src/plugins/UpdateStyleAttributePlugin.ts"],"names":["UpdateStyleAttributePlugin","layer","styleAttributeService","hooks","init","tap","initStyleAttribute","beforeRender","layerModelNeedUpdate","updateStyleAtrribute","attributes","getLayerStyleAttributes","filter","getLayerStyleAttribute","shape","needRegenerateVertices","forEach","attr","attribute","updateAttributeByFeatureRange","name","getEncodedData","featureRange","startIndex","endIndex"],"mappings":";;;;;;;;;;;;;AAMA;;AACA;;;;IAMqBA,0B,WADpB,4B;;;;;;;WAEC,eACEC,KADF,QAKE;AAAA;;AAAA,UAFEC,qBAEF,QAFEA,qBAEF;AACAD,MAAAA,KAAK,CAACE,KAAN,CAAYC,IAAZ,CAAiBC,GAAjB,CAAqB,4BAArB,EAAmD,YAAM;AACvD,QAAA,KAAI,CAACC,kBAAL,CAAwBL,KAAxB,EAA+B;AAAEC,UAAAA,qBAAqB,EAArBA;AAAF,SAA/B;AACD,OAFD;AASAD,MAAAA,KAAK,CAACE,KAAN,CAAYI,YAAZ,CAAyBF,GAAzB,CAA6B,4BAA7B,EAA2D,YAAM;AAC/D,YAAIJ,KAAK,CAACO,oBAAV,EAAgC;AAC9B;AACD;;AACD,QAAA,KAAI,CAACC,oBAAL,CAA0BR,KAA1B,EAAiC;AAAEC,UAAAA,qBAAqB,EAArBA;AAAF,SAAjC;AACD,OALD;AAMD;;;WACD,8BACED,KADF,SAKE;AAAA,UAFEC,qBAEF,SAFEA,qBAEF;AACA,UAAMQ,UAAU,GAAGR,qBAAqB,CAACS,uBAAtB,MAAmD,EAAtE;AACA,UAAMC,MAAM,GAAGV,qBAAqB,CAACW,sBAAtB,CAA6C,QAA7C,CAAf;AACA,UAAMC,KAAK,GAAGZ,qBAAqB,CAACW,sBAAtB,CAA6C,OAA7C,CAAd;;AACA,UACED,MAAM,IACNA,MAAM,CAACG,sBAFT,EAIE;AACAd,QAAAA,KAAK,CAACO,oBAAN,GAA6B,IAA7B;AACAE,QAAAA,UAAU,CAACM,OAAX,CAAmB,UAACC,IAAD;AAAA,iBAAWA,IAAI,CAACF,sBAAL,GAA8B,KAAzC;AAAA,SAAnB;AACA;AACD;;AACDL,MAAAA,UAAU,CACPE,MADH,CACU,UAACM,SAAD;AAAA,eAAeA,SAAS,CAACH,sBAAzB;AAAA,OADV,EAEGC,OAFH,CAEW,UAACE,SAAD,EAAe;AAEtBhB,QAAAA,qBAAqB,CAACiB,6BAAtB,CACED,SAAS,CAACE,IADZ,EAEEnB,KAAK,CAACoB,cAAN,EAFF,EAGEH,SAAS,CAACI,YAAV,CAAuBC,UAHzB,EAIEL,SAAS,CAACI,YAAV,CAAuBE,QAJzB;AAMAN,QAAAA,SAAS,CAACH,sBAAV,GAAmC,KAAnC;AACD,OAXH;AAYD;;;WAED,4BACEd,KADF,SAKE;AAAA,UAFEC,qBAEF,SAFEA,qBAEF;AACA,UAAMQ,UAAU,GAAGR,qBAAqB,CAACS,uBAAtB,MAAmD,EAAtE;AACAD,MAAAA,UAAU,CACPE,MADH,CACU,UAACM,SAAD;AAAA,eAAeA,SAAS,CAACH,sBAAzB;AAAA,OADV,EAEGC,OAFH,CAEW,UAACE,SAAD,EAAe;AAEtBhB,QAAAA,qBAAqB,CAACiB,6BAAtB,CACED,SAAS,CAACE,IADZ,EAEEnB,KAAK,CAACoB,cAAN,EAFF,EAGEH,SAAS,CAACI,YAAV,CAAuBC,UAHzB,EAIEL,SAAS,CAACI,YAAV,CAAuBE,QAJzB;AAMAN,QAAAA,SAAS,CAACH,sBAAV,GAAmC,KAAnC;AACD,OAXH;AAYD","sourcesContent":["import {\n ILayer,\n ILayerPlugin,\n IStyleAttributeService,\n TYPES,\n} from '@antv/l7-core';\nimport { inject, injectable } from 'inversify';\nimport 'reflect-metadata';\n\n/**\n * 在初始化阶段完成属性的注册,以及首次根据 Layer 指定的三角化方法完成 indices 和 attribute 的创建\n */\n@injectable()\nexport default class UpdateStyleAttributePlugin implements ILayerPlugin {\n public apply(\n layer: ILayer,\n {\n styleAttributeService,\n }: { styleAttributeService: IStyleAttributeService },\n ) {\n layer.hooks.init.tap('UpdateStyleAttributePlugin', () => {\n this.initStyleAttribute(layer, { styleAttributeService });\n });\n\n // layer.hooks.beforeRenderData.tap('styleAttributeService', () => {\n // // layer.layerModelNeedUpdate = true;\n // return true;\n // });\n\n layer.hooks.beforeRender.tap('UpdateStyleAttributePlugin', () => {\n if (layer.layerModelNeedUpdate) {\n return;\n }\n this.updateStyleAtrribute(layer, { styleAttributeService });\n });\n }\n private updateStyleAtrribute(\n layer: ILayer,\n {\n styleAttributeService,\n }: { styleAttributeService: IStyleAttributeService },\n ) {\n const attributes = styleAttributeService.getLayerStyleAttributes() || [];\n const filter = styleAttributeService.getLayerStyleAttribute('filter');\n const shape = styleAttributeService.getLayerStyleAttribute('shape');\n if (\n filter &&\n filter.needRegenerateVertices // ||\n // (shape && shape.needRegenerateVertices) // TODO:Shape 更新重新build\n ) {\n layer.layerModelNeedUpdate = true;\n attributes.forEach((attr) => (attr.needRegenerateVertices = false));\n return;\n }\n attributes\n .filter((attribute) => attribute.needRegenerateVertices)\n .forEach((attribute) => {\n // 精确更新某个/某些 feature(s),需要传入 featureIdx d\n styleAttributeService.updateAttributeByFeatureRange(\n attribute.name,\n layer.getEncodedData(), // 获取经过 mapping 最新的数据\n attribute.featureRange.startIndex,\n attribute.featureRange.endIndex,\n );\n attribute.needRegenerateVertices = false;\n });\n }\n\n private initStyleAttribute(\n layer: ILayer,\n {\n styleAttributeService,\n }: { styleAttributeService: IStyleAttributeService },\n ) {\n const attributes = styleAttributeService.getLayerStyleAttributes() || [];\n attributes\n .filter((attribute) => attribute.needRegenerateVertices)\n .forEach((attribute) => {\n // 精确更新某个/某些 feature(s),需要传入 featureIdx d\n styleAttributeService.updateAttributeByFeatureRange(\n attribute.name,\n layer.getEncodedData(), // 获取经过 mapping 最新的数据\n attribute.featureRange.startIndex,\n attribute.featureRange.endIndex,\n );\n attribute.needRegenerateVertices = false;\n });\n }\n}\n"],"file":"UpdateStyleAttributePlugin.js"}
@@ -11,12 +11,16 @@ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/cl
11
11
 
12
12
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
13
 
14
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
15
+
14
16
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
15
17
 
16
18
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
17
19
 
18
20
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
19
21
 
22
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
23
+
20
24
  var _isNumber2 = _interopRequireDefault(require("lodash/isNumber"));
21
25
 
22
26
  var _l7Core = require("@antv/l7-core");
@@ -36,7 +40,7 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflec
36
40
  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; } }
37
41
 
38
42
  var pointExtrudeFrag = "varying vec4 v_color;\nuniform float u_opacity: 1.0;\n\nvarying float v_z;\nvarying float v_lightWeight;\n\n#pragma include \"picking\"\n\nvarying mat4 styleMappingMat; // \u4F20\u9012\u4ECE\u7247\u5143\u4E2D\u4F20\u9012\u7684\u6620\u5C04\u6570\u636E\n\nuniform float u_linearColor: 0;\nuniform vec4 u_sourceColor;\nuniform vec4 u_targetColor;\n\nuniform float u_opacitylinear: 0.0;\nuniform float u_opacitylinear_dir: 1.0;\n\nvoid main() {\n float opacity = styleMappingMat[0][0];\n\n // \u8BBE\u7F6E\u5706\u67F1\u7684\u5E95\u8272\n if(u_linearColor == 1.0) { // \u4F7F\u7528\u6E10\u53D8\u989C\u8272\n gl_FragColor = mix(u_sourceColor, u_targetColor, v_z);\n gl_FragColor.rgb *= v_lightWeight;\n } else { // \u4F7F\u7528 color \u65B9\u6CD5\u4F20\u5165\u7684\u989C\u8272\n gl_FragColor = v_color;\n }\n\n // \u5E94\u7528\u900F\u660E\u5EA6\n gl_FragColor.a *= opacity;\n\n // \u5F00\u542F\u900F\u660E\u5EA6\u6E10\u53D8\n if(u_opacitylinear > 0.0) {\n gl_FragColor.a *= u_opacitylinear_dir > 0.0 ? (1.0 - v_z): v_z;\n }\n\n // picking\n gl_FragColor = filterColor(gl_FragColor);\n}\n";
39
- var pointExtrudeVert = "precision highp float;\n\n#define pi 3.1415926535\n#define ambientRatio 0.5\n#define diffuseRatio 0.3\n#define specularRatio 0.2\n\nattribute vec3 a_Position;\nattribute vec3 a_Pos;\nattribute vec4 a_Color;\nattribute vec3 a_Size;\nattribute vec3 a_Normal;\n\nuniform float u_globel;\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\nvarying vec4 v_color;\n\nuniform float u_opacity : 1;\nuniform float u_lightEnable: 1;\n\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\nvarying float v_z;\nvarying float v_lightWeight;\n\n#pragma include \"styleMapping\"\n#pragma include \"styleMappingCalOpacity\"\n\n#pragma include \"projection\"\n#pragma include \"light\"\n#pragma include \"picking\"\n\nfloat getYRadian(float x, float z) {\n if(x > 0.0 && z > 0.0) {\n return atan(x/z);\n } else if(x > 0.0 && z <= 0.0){\n return atan(-z/x) + pi/2.0;\n } else if(x <= 0.0 && z <= 0.0) {\n return pi + atan(x/z); //atan(x/z) + \n } else {\n return atan(z/-x) + pi*3.0/2.0;\n }\n}\n\nfloat getXRadian(float y, float r) {\n return atan(y/r);\n}\n\nvoid main() {\n\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 vec3 size = a_Size * a_Position;\n\n // a_Position.z \u662F\u5728\u6784\u5EFA\u7F51\u683C\u7684\u65F6\u5019\u4F20\u5165\u7684\u6807\u51C6\u503C 0 - 1\uFF0C\u5728\u63D2\u503C\u5668\u63D2\u503C\u53EF\u4EE5\u83B7\u53D6 0\uFF5E1 \u7EBF\u6027\u6E10\u53D8\u7684\u503C\n v_z = a_Position.z;\n\n vec2 offset = project_pixel(size.xy);\n\n vec4 project_pos = project_position(vec4(a_Pos.xy, 0., 1.0));\n\n vec4 pos = vec4(project_pos.xy + offset, project_pixel(size.z), 1.0);\n\n float lightWeight = u_lightEnable > 0.0 ? calc_lighting(pos): 1.0;\n v_lightWeight = lightWeight;\n v_color =vec4(a_Color.rgb * lightWeight, a_Color.w);\n\n // gl_Position = project_common_position_to_clipspace(pos);\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n gl_Position = u_Mvp * pos;\n } else {\n gl_Position = project_common_position_to_clipspace(pos);\n }\n \n if(u_globel > 0.0) {\n // \u5728\u5730\u7403\u6A21\u5F0F\u4E0B\uFF0C\u5C06\u539F\u672C\u5782\u76F4\u4E8E xy \u5E73\u9762\u7684\u5706\u67F1\u8C03\u6574\u59FF\u6001\u5230\u9002\u5E94\u5706\u7684\u89D2\u5EA6\n //\u65CB\u8F6C\u77E9\u9635mx\uFF0C\u521B\u5EFA\u7ED5x\u8F74\u65CB\u8F6C\u77E9\u9635\n float r = sqrt(a_Pos.z*a_Pos.z + a_Pos.x*a_Pos.x);\n float xRadian = getXRadian(a_Pos.y, r);\n float xcos = cos(xRadian);//\u6C42\u89E3\u65CB\u8F6C\u89D2\u5EA6\u4F59\u5F26\u503C\n float xsin = sin(xRadian);//\u6C42\u89E3\u65CB\u8F6C\u89D2\u5EA6\u6B63\u5F26\u503C\n mat4 mx = mat4(\n 1,0,0,0, \n 0,xcos,-xsin,0, \n 0,xsin,xcos,0, \n 0,0,0,1);\n\n //\u65CB\u8F6C\u77E9\u9635my\uFF0C\u521B\u5EFA\u7ED5y\u8F74\u65CB\u8F6C\u77E9\u9635\n float yRadian = getYRadian(a_Pos.x, a_Pos.z);\n float ycos = cos(yRadian);//\u6C42\u89E3\u65CB\u8F6C\u89D2\u5EA6\u4F59\u5F26\u503C\n float ysin = sin(yRadian);//\u6C42\u89E3\u65CB\u8F6C\u89D2\u5EA6\u6B63\u5F26\u503C\n mat4 my = mat4(\n ycos,0,-ysin,0, \n 0,1,0,0, \n ysin,0,ycos,0, \n 0,0,0,1);\n\n gl_Position = u_ViewProjectionMatrix * vec4(( my * mx * vec4(a_Position * a_Size, 1.0)).xyz + a_Pos, 1.0);\n }\n\n setPickingColor(a_PickingColor);\n}\n";
43
+ var pointExtrudeVert = "precision highp float;\n\n#define pi 3.1415926535\n#define ambientRatio 0.5\n#define diffuseRatio 0.3\n#define specularRatio 0.2\n\nattribute vec3 a_Position;\nattribute vec3 a_Pos;\nattribute vec4 a_Color;\nattribute vec3 a_Size;\nattribute vec3 a_Normal;\n\nuniform float u_globel;\nuniform float u_r;\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\nvarying vec4 v_color;\n\nuniform float u_opacity : 1;\nuniform float u_lightEnable: 1;\n\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\nvarying float v_z;\nvarying float v_lightWeight;\n\n#pragma include \"styleMapping\"\n#pragma include \"styleMappingCalOpacity\"\n\n#pragma include \"projection\"\n#pragma include \"light\"\n#pragma include \"picking\"\n\nfloat getYRadian(float x, float z) {\n if(x > 0.0 && z > 0.0) {\n return atan(x/z);\n } else if(x > 0.0 && z <= 0.0){\n return atan(-z/x) + pi/2.0;\n } else if(x <= 0.0 && z <= 0.0) {\n return pi + atan(x/z); //atan(x/z) + \n } else {\n return atan(z/-x) + pi*3.0/2.0;\n }\n}\n\nfloat getXRadian(float y, float r) {\n return atan(y/r);\n}\n\nvoid main() {\n\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 vec3 size = a_Size * a_Position;\n\n // a_Position.z \u662F\u5728\u6784\u5EFA\u7F51\u683C\u7684\u65F6\u5019\u4F20\u5165\u7684\u6807\u51C6\u503C 0 - 1\uFF0C\u5728\u63D2\u503C\u5668\u63D2\u503C\u53EF\u4EE5\u83B7\u53D6 0\uFF5E1 \u7EBF\u6027\u6E10\u53D8\u7684\u503C\n v_z = a_Position.z;\n\n vec2 offset = project_pixel(size.xy);\n\n vec4 project_pos = project_position(vec4(a_Pos.xy, 0., 1.0));\n\n vec4 pos = vec4(project_pos.xy + offset, project_pixel(size.z) * u_r, 1.0);\n\n // \u5706\u67F1\u5149\u7167\u6548\u679C\n float lightWeight = u_lightEnable > 0.0 ? calc_lighting(pos): 1.0;\n v_lightWeight = lightWeight;\n v_color =vec4(a_Color.rgb * lightWeight, a_Color.w);\n\n // gl_Position = project_common_position_to_clipspace(pos);\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n gl_Position = u_Mvp * pos;\n } else {\n gl_Position = project_common_position_to_clipspace(pos);\n }\n \n if(u_globel > 0.0) {\n // \u5728\u5730\u7403\u6A21\u5F0F\u4E0B\uFF0C\u5C06\u539F\u672C\u5782\u76F4\u4E8E xy \u5E73\u9762\u7684\u5706\u67F1\u8C03\u6574\u59FF\u6001\u5230\u9002\u5E94\u5706\u7684\u89D2\u5EA6\n //\u65CB\u8F6C\u77E9\u9635mx\uFF0C\u521B\u5EFA\u7ED5x\u8F74\u65CB\u8F6C\u77E9\u9635\n float r = sqrt(a_Pos.z*a_Pos.z + a_Pos.x*a_Pos.x);\n float xRadian = getXRadian(a_Pos.y, r);\n float xcos = cos(xRadian);//\u6C42\u89E3\u65CB\u8F6C\u89D2\u5EA6\u4F59\u5F26\u503C\n float xsin = sin(xRadian);//\u6C42\u89E3\u65CB\u8F6C\u89D2\u5EA6\u6B63\u5F26\u503C\n mat4 mx = mat4(\n 1,0,0,0, \n 0,xcos,-xsin,0, \n 0,xsin,xcos,0, \n 0,0,0,1);\n\n //\u65CB\u8F6C\u77E9\u9635my\uFF0C\u521B\u5EFA\u7ED5y\u8F74\u65CB\u8F6C\u77E9\u9635\n float yRadian = getYRadian(a_Pos.x, a_Pos.z);\n float ycos = cos(yRadian);//\u6C42\u89E3\u65CB\u8F6C\u89D2\u5EA6\u4F59\u5F26\u503C\n float ysin = sin(yRadian);//\u6C42\u89E3\u65CB\u8F6C\u89D2\u5EA6\u6B63\u5F26\u503C\n mat4 my = mat4(\n ycos,0,-ysin,0, \n 0,1,0,0, \n ysin,0,ycos,0, \n 0,0,0,1);\n\n gl_Position = u_ViewProjectionMatrix * vec4(( my * mx * vec4(a_Position * a_Size, 1.0)).xyz + a_Pos, 1.0);\n }\n\n setPickingColor(a_PickingColor);\n}\n";
40
44
 
41
45
  var ExtrudeModel = function (_BaseModel) {
42
46
  (0, _inherits2.default)(ExtrudeModel, _BaseModel);
@@ -44,14 +48,30 @@ var ExtrudeModel = function (_BaseModel) {
44
48
  var _super = _createSuper(ExtrudeModel);
45
49
 
46
50
  function ExtrudeModel() {
51
+ var _this;
52
+
47
53
  (0, _classCallCheck2.default)(this, ExtrudeModel);
48
- return _super.apply(this, arguments);
54
+
55
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
56
+ args[_key] = arguments[_key];
57
+ }
58
+
59
+ _this = _super.call.apply(_super, [this].concat(args));
60
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "raiseCount", 0);
61
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "raiserepeat", 0);
62
+ return _this;
49
63
  }
50
64
 
51
65
  (0, _createClass2.default)(ExtrudeModel, [{
52
66
  key: "getUninforms",
53
67
  value: function getUninforms() {
54
68
  var _ref = this.layer.getLayerConfig(),
69
+ _ref$animateOption = _ref.animateOption,
70
+ animateOption = _ref$animateOption === void 0 ? {
71
+ enable: false,
72
+ speed: 0.01,
73
+ repeat: false
74
+ } : _ref$animateOption,
55
75
  _ref$opacity = _ref.opacity,
56
76
  opacity = _ref$opacity === void 0 ? 1 : _ref$opacity,
57
77
  sourceColor = _ref.sourceColor,
@@ -105,7 +125,27 @@ var ExtrudeModel = function (_BaseModel) {
105
125
  useLinearColor = 1;
106
126
  }
107
127
 
128
+ if (this.raiseCount < 1 && this.raiserepeat > 0) {
129
+ if (animateOption.enable) {
130
+ var _animateOption$speed = animateOption.speed,
131
+ speed = _animateOption$speed === void 0 ? 0.01 : _animateOption$speed,
132
+ _animateOption$repeat = animateOption.repeat,
133
+ repeat = _animateOption$repeat === void 0 ? false : _animateOption$repeat;
134
+ this.raiseCount += speed;
135
+
136
+ if (this.raiseCount >= 1) {
137
+ if (this.raiserepeat > 1) {
138
+ this.raiseCount = 0;
139
+ this.raiserepeat--;
140
+ } else {
141
+ this.raiseCount = 1;
142
+ }
143
+ }
144
+ }
145
+ }
146
+
108
147
  return {
148
+ u_r: animateOption.enable && this.raiserepeat > 0 ? this.raiseCount : 1.0,
109
149
  u_globel: this.mapService.version === 'GLOBEL' ? 1 : 0,
110
150
  u_dataTexture: this.dataTexture,
111
151
  u_cellTypeLayout: this.getCellTypeLayout(),
@@ -128,8 +168,11 @@ var ExtrudeModel = function (_BaseModel) {
128
168
  value: function buildModels() {
129
169
  var _ref2 = this.layer.getLayerConfig(),
130
170
  _ref2$depth = _ref2.depth,
131
- depth = _ref2$depth === void 0 ? true : _ref2$depth;
171
+ depth = _ref2$depth === void 0 ? true : _ref2$depth,
172
+ _ref2$animateOption$r = _ref2.animateOption.repeat,
173
+ repeat = _ref2$animateOption$r === void 0 ? 1 : _ref2$animateOption$r;
132
174
 
175
+ this.raiserepeat = repeat;
133
176
  return [this.layer.buildLayerModel({
134
177
  moduleName: 'pointExtrude2',
135
178
  vertexShader: pointExtrudeVert,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/point/models/extrude.ts"],"names":["ExtrudeModel","layer","getLayerConfig","opacity","sourceColor","targetColor","opacityLinear","enable","dir","lightEnable","dataTextureTest","dataTextureNeedUpdate","judgeStyleAttributes","encodeData","getEncodedData","calDataFrame","cellLength","cellProperties","data","width","height","rowCount","dataTexture","length","createTexture2D","flipY","format","gl","LUMINANCE","type","FLOAT","useLinearColor","sourceColorArr","targetColorArr","u_globel","mapService","version","u_dataTexture","u_cellTypeLayout","getCellTypeLayout","u_opacity","u_linearColor","u_sourceColor","u_targetColor","u_opacitylinear","Number","u_opacitylinear_dir","u_lightEnable","buildModels","depth","buildLayerModel","moduleName","vertexShader","pointExtrudeVert","fragmentShader","pointExtrudeFrag","triangulation","PointExtrudeTriangulation","blend","getBlend","cull","face","FRONT","BACK","destroy","isGlobel","styleAttributeService","registerStyleAttribute","name","AttributeType","Attribute","descriptor","buffer","usage","DYNAMIC_DRAW","size","update","feature","featureIdx","vertex","attributeIdx","buffersize","Array","isArray","STATIC_DRAW","normal","coordinates","BaseModel"],"mappings":"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","sourcesContent":["import { AttributeType, gl, IEncodeFeature, IModel } from '@antv/l7-core';\nimport { rgb2arr } from '@antv/l7-utils';\nimport { isNumber } from 'lodash';\nimport BaseModel, { styleOffset, styleSingle } from '../../core/BaseModel';\nimport { PointExtrudeTriangulation } from '../../core/triangulation';\nimport { lglt2xyz } from '../../earth/utils';\nimport { calculateCentroid } from '../../utils/geo';\nimport pointExtrudeFrag from '../shaders/extrude_frag.glsl';\nimport pointExtrudeVert from '../shaders/extrude_vert.glsl';\ninterface IPointLayerStyleOptions {\n depth: boolean;\n opacity: styleSingle;\n offsets: styleOffset;\n\n sourceColor?: string; // 可选参数、设置渐变色的起始颜色(all)\n targetColor?: string; // 可选参数、设置渐变色的终点颜色(all)\n opacityLinear?: {\n enable: boolean;\n dir: string;\n };\n\n lightEnable: boolean;\n}\nexport default class ExtrudeModel extends BaseModel {\n public getUninforms() {\n const {\n opacity = 1,\n\n sourceColor,\n targetColor,\n\n opacityLinear = {\n enable: false,\n dir: 'up',\n },\n\n lightEnable = true,\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n if (\n this.dataTextureTest &&\n this.dataTextureNeedUpdate({\n opacity,\n })\n ) {\n this.judgeStyleAttributes({\n opacity,\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 // 转化渐变色\n let useLinearColor = 0; // 默认不生效\n let sourceColorArr = [0, 0, 0, 0];\n let targetColorArr = [0, 0, 0, 0];\n if (sourceColor && targetColor) {\n sourceColorArr = rgb2arr(sourceColor);\n targetColorArr = rgb2arr(targetColor);\n useLinearColor = 1;\n }\n\n return {\n // TODO: 判断当前的点图层的模型是普通地图模式还是地球模式\n u_globel: this.mapService.version === 'GLOBEL' ? 1 : 0,\n\n u_dataTexture: this.dataTexture, // 数据纹理 - 有数据映射的时候纹理中带数据,若没有任何数据映射时纹理是 [1]\n u_cellTypeLayout: this.getCellTypeLayout(),\n // u_opacity: opacity || 1.0,\n // u_offsets: offsets || [0, 0],\n u_opacity: isNumber(opacity) ? opacity : 1.0,\n\n // 渐变色支持参数\n u_linearColor: useLinearColor,\n u_sourceColor: sourceColorArr,\n u_targetColor: targetColorArr,\n\n // 透明度渐变\n u_opacitylinear: Number(opacityLinear.enable),\n u_opacitylinear_dir: opacityLinear.dir === 'up' ? 1.0 : 0.0,\n\n // 光照计算开关\n u_lightEnable: Number(lightEnable),\n };\n }\n public initModels(): IModel[] {\n return this.buildModels();\n }\n\n public buildModels(): IModel[] {\n // GAODE1.x GAODE2.x MAPBOX\n const {\n depth = true,\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n return [\n this.layer.buildLayerModel({\n moduleName: 'pointExtrude2',\n vertexShader: pointExtrudeVert,\n fragmentShader: pointExtrudeFrag,\n triangulation: PointExtrudeTriangulation,\n blend: this.getBlend(),\n cull: {\n enable: true,\n face: this.mapService.version === 'MAPBOX' ? gl.FRONT : gl.BACK,\n },\n depth: {\n enable: depth,\n },\n // primitive: gl.POINTS,\n }),\n ];\n }\n public clearModels() {\n this.dataTexture?.destroy();\n }\n protected registerBuiltinAttributes() {\n // TODO: 判断当前的点图层的模型是普通地图模式还是地球模式\n const isGlobel = this.mapService.version === 'GLOBEL';\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: 3,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const { size } = feature;\n if (size) {\n let buffersize: number[] = [];\n if (Array.isArray(size)) {\n buffersize =\n size.length === 2 ? [size[0], size[0], size[1]] : size;\n }\n if (!Array.isArray(size)) {\n buffersize = [size, size, size];\n }\n return buffersize;\n } else {\n return [2, 2, 2];\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 this.styleAttributeService.registerStyleAttribute({\n name: 'pos',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Pos',\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: 3,\n update: (feature: IEncodeFeature, featureIdx: number) => {\n const coordinates = calculateCentroid(feature.coordinates);\n if (isGlobel) {\n // TODO: 在地球模式下需要将传入 shader 的经纬度转化成对应的 xyz 坐标\n return lglt2xyz([coordinates[0], coordinates[1]]) as [\n number,\n number,\n number,\n ];\n } else {\n return [coordinates[0], coordinates[1], 0];\n }\n },\n },\n });\n }\n}\n"],"file":"extrude.js"}
1
+ {"version":3,"sources":["../../../src/point/models/extrude.ts"],"names":["ExtrudeModel","layer","getLayerConfig","animateOption","enable","speed","repeat","opacity","sourceColor","targetColor","opacityLinear","dir","lightEnable","dataTextureTest","dataTextureNeedUpdate","judgeStyleAttributes","encodeData","getEncodedData","calDataFrame","cellLength","cellProperties","data","width","height","rowCount","dataTexture","length","createTexture2D","flipY","format","gl","LUMINANCE","type","FLOAT","useLinearColor","sourceColorArr","targetColorArr","raiseCount","raiserepeat","u_r","u_globel","mapService","version","u_dataTexture","u_cellTypeLayout","getCellTypeLayout","u_opacity","u_linearColor","u_sourceColor","u_targetColor","u_opacitylinear","Number","u_opacitylinear_dir","u_lightEnable","buildModels","depth","buildLayerModel","moduleName","vertexShader","pointExtrudeVert","fragmentShader","pointExtrudeFrag","triangulation","PointExtrudeTriangulation","blend","getBlend","cull","face","FRONT","BACK","destroy","isGlobel","styleAttributeService","registerStyleAttribute","name","AttributeType","Attribute","descriptor","buffer","usage","DYNAMIC_DRAW","size","update","feature","featureIdx","vertex","attributeIdx","buffersize","Array","isArray","STATIC_DRAW","normal","coordinates","BaseModel"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IAnimateOption,\n IEncodeFeature,\n IModel,\n} from '@antv/l7-core';\nimport { rgb2arr } from '@antv/l7-utils';\nimport { isBoolean, isNumber } from 'lodash';\nimport BaseModel, { styleOffset, styleSingle } from '../../core/BaseModel';\nimport { PointExtrudeTriangulation } from '../../core/triangulation';\nimport { lglt2xyz } from '../../earth/utils';\nimport { calculateCentroid } from '../../utils/geo';\nimport pointExtrudeFrag from '../shaders/extrude_frag.glsl';\nimport pointExtrudeVert from '../shaders/extrude_vert.glsl';\ninterface IPointLayerStyleOptions {\n animateOption: IAnimateOption;\n depth: boolean;\n opacity: styleSingle;\n offsets: styleOffset;\n\n sourceColor?: string; // 可选参数、设置渐变色的起始颜色(all)\n targetColor?: string; // 可选参数、设置渐变色的终点颜色(all)\n opacityLinear?: {\n enable: boolean;\n dir: string;\n };\n\n lightEnable: boolean;\n}\nexport default class ExtrudeModel extends BaseModel {\n private raiseCount: number = 0;\n private raiserepeat: number = 0;\n public getUninforms() {\n const {\n animateOption = {\n enable: false,\n speed: 0.01,\n repeat: false,\n },\n opacity = 1,\n\n sourceColor,\n targetColor,\n\n opacityLinear = {\n enable: false,\n dir: 'up',\n },\n\n lightEnable = true,\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n if (\n this.dataTextureTest &&\n this.dataTextureNeedUpdate({\n opacity,\n })\n ) {\n this.judgeStyleAttributes({\n opacity,\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 // 转化渐变色\n let useLinearColor = 0; // 默认不生效\n let sourceColorArr = [0, 0, 0, 0];\n let targetColorArr = [0, 0, 0, 0];\n if (sourceColor && targetColor) {\n sourceColorArr = rgb2arr(sourceColor);\n targetColorArr = rgb2arr(targetColor);\n useLinearColor = 1;\n }\n\n if (this.raiseCount < 1 && this.raiserepeat > 0) {\n if (animateOption.enable) {\n const { speed = 0.01, repeat = false } = animateOption;\n this.raiseCount += speed;\n if (this.raiseCount >= 1) {\n if (this.raiserepeat > 1) {\n this.raiseCount = 0;\n this.raiserepeat--;\n } else {\n this.raiseCount = 1;\n }\n }\n }\n }\n\n return {\n u_r: animateOption.enable && this.raiserepeat > 0 ? this.raiseCount : 1.0,\n // TODO: 判断当前的点图层的模型是普通地图模式还是地球模式\n u_globel: this.mapService.version === 'GLOBEL' ? 1 : 0,\n\n u_dataTexture: this.dataTexture, // 数据纹理 - 有数据映射的时候纹理中带数据,若没有任何数据映射时纹理是 [1]\n u_cellTypeLayout: this.getCellTypeLayout(),\n // u_opacity: opacity || 1.0,\n // u_offsets: offsets || [0, 0],\n u_opacity: isNumber(opacity) ? opacity : 1.0,\n\n // 渐变色支持参数\n u_linearColor: useLinearColor,\n u_sourceColor: sourceColorArr,\n u_targetColor: targetColorArr,\n\n // 透明度渐变\n u_opacitylinear: Number(opacityLinear.enable),\n u_opacitylinear_dir: opacityLinear.dir === 'up' ? 1.0 : 0.0,\n\n // 光照计算开关\n u_lightEnable: Number(lightEnable),\n };\n }\n public initModels(): IModel[] {\n return this.buildModels();\n }\n\n public buildModels(): IModel[] {\n // GAODE1.x GAODE2.x MAPBOX\n const {\n depth = true,\n animateOption: { repeat = 1 },\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n this.raiserepeat = repeat;\n return [\n this.layer.buildLayerModel({\n moduleName: 'pointExtrude2',\n vertexShader: pointExtrudeVert,\n fragmentShader: pointExtrudeFrag,\n triangulation: PointExtrudeTriangulation,\n blend: this.getBlend(),\n cull: {\n enable: true,\n face: this.mapService.version === 'MAPBOX' ? gl.FRONT : gl.BACK,\n },\n depth: {\n enable: depth,\n },\n // primitive: gl.POINTS,\n }),\n ];\n }\n public clearModels() {\n this.dataTexture?.destroy();\n }\n protected registerBuiltinAttributes() {\n // TODO: 判断当前的点图层的模型是普通地图模式还是地球模式\n const isGlobel = this.mapService.version === 'GLOBEL';\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: 3,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const { size } = feature;\n if (size) {\n let buffersize: number[] = [];\n if (Array.isArray(size)) {\n buffersize =\n size.length === 2 ? [size[0], size[0], size[1]] : size;\n }\n if (!Array.isArray(size)) {\n buffersize = [size, size, size];\n }\n return buffersize;\n } else {\n return [2, 2, 2];\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 this.styleAttributeService.registerStyleAttribute({\n name: 'pos',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Pos',\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: 3,\n update: (feature: IEncodeFeature, featureIdx: number) => {\n const coordinates = calculateCentroid(feature.coordinates);\n if (isGlobel) {\n // TODO: 在地球模式下需要将传入 shader 的经纬度转化成对应的 xyz 坐标\n return lglt2xyz([coordinates[0], coordinates[1]]) as [\n number,\n number,\n number,\n ];\n } else {\n return [coordinates[0], coordinates[1], 0];\n }\n },\n },\n });\n }\n}\n"],"file":"extrude.js"}
@@ -31,8 +31,8 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflec
31
31
 
32
32
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
33
33
 
34
- var pointImageFrag = "\nuniform sampler2D u_texture;\nvarying vec4 v_color;\nvarying vec2 v_uv;\nuniform vec2 u_textSize;\nuniform float u_opacity : 1;\n\nvarying mat4 styleMappingMat; // \u4F20\u9012\u4ECE\u7247\u5143\u4E2D\u4F20\u9012\u7684\u6620\u5C04\u6570\u636E\n\n#pragma include \"picking\"\nvoid main(){\n float opacity = styleMappingMat[0][0];\n vec2 pos= v_uv / u_textSize + gl_PointCoord / u_textSize * 64.;\n vec4 textureColor=texture2D(u_texture,pos);\n if(all(lessThan(v_color, vec4(1.0+0.00001))) && all(greaterThan(v_color, vec4(1.0-0.00001))) || v_color==vec4(1.0)){\n gl_FragColor= textureColor;\n }else {\n gl_FragColor= step(0.01, textureColor.z) * v_color;\n }\n // gl_FragColor.a =gl_FragColor.a * u_opacity;\n gl_FragColor.a =gl_FragColor.a * opacity;\n gl_FragColor = filterColor(gl_FragColor);\n}\n";
35
- var pointImageVert = "precision highp float;\nattribute vec3 a_Position;\nattribute vec4 a_Color;\nattribute vec2 a_Uv;\nattribute float a_Size;\nvarying vec4 v_color;\nvarying vec2 v_uv;\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\nuniform float u_stroke_width : 1;\nuniform vec2 u_offsets;\n\nuniform float u_opacity : 1;\n\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 \"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\n vec2 textrueOffsets = vec2(0.0, 0.0);\n if(hasOffsets()) {\n vec2 valueXPos = nextPos(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset);\n textrueOffsets.r = pos2value(valueXPos, columnWidth, rowHeight); // x\n textureOffset += 1.0;\n\n vec2 valueYPos = nextPos(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset);\n textrueOffsets.g = pos2value(valueYPos, columnWidth, rowHeight); // x\n textureOffset += 1.0;\n } else {\n textrueOffsets = u_offsets;\n }\n\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n v_color = a_Color;\n v_uv = a_Uv;\n vec4 project_pos = project_position(vec4(a_Position, 1.0));\n \n // vec2 offset = project_pixel(u_offsets);\n vec2 offset = project_pixel(textrueOffsets);\n\n // gl_Position = project_common_position_to_clipspace(vec4(vec2(project_pos.xy + offset),project_pos.z, 1.0));\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n gl_Position = u_Mvp * vec4(vec2(project_pos.xy + offset),project_pos.z, 1.0);\n } else {\n gl_Position = project_common_position_to_clipspace(vec4(vec2(project_pos.xy + offset),project_pos.z, 1.0));\n }\n gl_PointSize = a_Size * 2.0 * u_DevicePixelRatio;\n\n setPickingColor(a_PickingColor);\n\n}\n";
34
+ var pointImageFrag = "\nuniform sampler2D u_texture;\nvarying vec4 v_color;\nvarying vec2 v_uv;\nuniform vec2 u_textSize;\nuniform float u_opacity : 1;\n\nvarying mat4 styleMappingMat; // \u4F20\u9012\u4ECE\u7247\u5143\u4E2D\u4F20\u9012\u7684\u6620\u5C04\u6570\u636E\n\n#pragma include \"picking\"\n\nvoid main(){\n float opacity = styleMappingMat[0][0];\n float size = styleMappingMat[1][0];\n vec2 pos = v_uv / u_textSize + gl_PointCoord / u_textSize * 64.;\n vec4 textureColor;\n\n // Y = 0.299R + 0.587G + 0.114B // \u4EAE\u5EA6\u63D0\u53D6\n if(size < 13.0) { // \u5C3A\u5BF8\u8FC7\u5C0F\u65F6\u4F7F\u7528 bloom \u5377\u79EF\u6A21\u7CCA\u91C7\u6837\n float h = 1.0/ 512.0;\n vec4 color11 = texture2D( u_texture, vec2( pos.x - 1.0 * h, pos.y + 1.0 * h) );\n vec4 color12 = texture2D( u_texture, vec2( pos.x - 0.0 * h, pos.y + 1.0 * h) );\n vec4 color13 = texture2D( u_texture, vec2( pos.x + 1.0 * h, pos.y + 1.0 * h) );\n\n vec4 color21 = texture2D( u_texture, vec2( pos.x - 1.0 * h, pos.y) );\n vec4 color22 = texture2D( u_texture, vec2( pos.x , pos.y) );\n vec4 color23 = texture2D( u_texture, vec2( pos.x + 1.0 * h, pos.y) );\n\n vec4 color31 = texture2D( u_texture, vec2( pos.x - 1.0 * h, pos.y-1.0*h) );\n vec4 color32 = texture2D( u_texture, vec2( pos.x - 0.0 * h, pos.y-1.0*h) );\n vec4 color33 = texture2D( u_texture, vec2( pos.x + 1.0 * h, pos.y-1.0*h) );\n\n vec4 bloomPixels = (\n 1.0*color11 + \n 1.0*color12 + \n 1.0*color13 + \n 1.0*color21 + \n 1.0*color21 + \n 2.0*color22 + \n 1.0*color23 + \n 1.0*color31 + \n 1.0*color32 + \n 1.0*color33\n )/10.0;\n // luma \u53BB\u9664\u9ED1\u70B9\n float bloomluma = 0.299 * bloomPixels.r + 0.587 * bloomPixels.g + 0.114 * bloomPixels.b;\n // \u5F25\u8865\u900F\u660E\u5EA6\n bloomPixels.a *= bloomluma * 1.5;\n textureColor = bloomPixels;\n } else {\n textureColor = texture2D(u_texture, pos);\n }\n \n\n if(all(lessThan(v_color, vec4(1.0+0.00001))) && all(greaterThan(v_color, vec4(1.0-0.00001))) || v_color==vec4(1.0)){\n gl_FragColor= textureColor;\n }else {\n gl_FragColor= step(0.01, textureColor.z) * v_color;\n }\n\n gl_FragColor.a = gl_FragColor.a * opacity;\n gl_FragColor = filterColor(gl_FragColor);\n}\n";
35
+ var pointImageVert = "precision highp float;\nattribute vec3 a_Position;\nattribute vec4 a_Color;\nattribute vec2 a_Uv;\nattribute float a_Size;\nvarying vec4 v_color;\nvarying vec2 v_uv;\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\nuniform float u_stroke_width : 1;\nuniform vec2 u_offsets;\n\nuniform float u_opacity : 1;\n\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 \"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\n styleMappingMat[1][0] = a_Size;\n\n vec2 textrueOffsets = vec2(0.0, 0.0);\n if(hasOffsets()) {\n vec2 valueXPos = nextPos(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset);\n textrueOffsets.r = pos2value(valueXPos, columnWidth, rowHeight); // x\n textureOffset += 1.0;\n\n vec2 valueYPos = nextPos(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset);\n textrueOffsets.g = pos2value(valueYPos, columnWidth, rowHeight); // x\n textureOffset += 1.0;\n } else {\n textrueOffsets = u_offsets;\n }\n\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n v_color = a_Color;\n v_uv = a_Uv;\n vec4 project_pos = project_position(vec4(a_Position, 1.0));\n \n // vec2 offset = project_pixel(u_offsets);\n vec2 offset = project_pixel(textrueOffsets);\n\n // gl_Position = project_common_position_to_clipspace(vec4(vec2(project_pos.xy + offset),project_pos.z, 1.0));\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n gl_Position = u_Mvp * vec4(vec2(project_pos.xy + offset),project_pos.z, 1.0);\n } else {\n gl_Position = project_common_position_to_clipspace(vec4(vec2(project_pos.xy + offset),project_pos.z, 1.0));\n }\n gl_PointSize = a_Size * 2.0 * u_DevicePixelRatio;\n\n setPickingColor(a_PickingColor);\n\n}\n";
36
36
 
37
37
  var IconeModel = function (_BaseModel) {
38
38
  (0, _inherits2.default)(IconeModel, _BaseModel);
@@ -33,8 +33,8 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflec
33
33
 
34
34
  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; } }
35
35
 
36
- var pointImageFrag = "\nuniform sampler2D u_texture;\nvarying vec4 v_color;\nvarying vec2 v_uv;\nuniform vec2 u_textSize;\nuniform float u_opacity : 1;\n\nvarying mat4 styleMappingMat; // \u4F20\u9012\u4ECE\u7247\u5143\u4E2D\u4F20\u9012\u7684\u6620\u5C04\u6570\u636E\n\n#pragma include \"picking\"\nvoid main(){\n float opacity = styleMappingMat[0][0];\n vec2 pos= v_uv / u_textSize + gl_PointCoord / u_textSize * 64.;\n vec4 textureColor=texture2D(u_texture,pos);\n if(all(lessThan(v_color, vec4(1.0+0.00001))) && all(greaterThan(v_color, vec4(1.0-0.00001))) || v_color==vec4(1.0)){\n gl_FragColor= textureColor;\n }else {\n gl_FragColor= step(0.01, textureColor.z) * v_color;\n }\n // gl_FragColor.a =gl_FragColor.a * u_opacity;\n gl_FragColor.a =gl_FragColor.a * opacity;\n gl_FragColor = filterColor(gl_FragColor);\n}\n";
37
- var pointImageVert = "precision highp float;\nattribute vec3 a_Position;\nattribute vec4 a_Color;\nattribute vec2 a_Uv;\nattribute float a_Size;\nvarying vec4 v_color;\nvarying vec2 v_uv;\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\nuniform float u_stroke_width : 1;\nuniform vec2 u_offsets;\n\nuniform float u_opacity : 1;\n\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 \"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\n vec2 textrueOffsets = vec2(0.0, 0.0);\n if(hasOffsets()) {\n vec2 valueXPos = nextPos(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset);\n textrueOffsets.r = pos2value(valueXPos, columnWidth, rowHeight); // x\n textureOffset += 1.0;\n\n vec2 valueYPos = nextPos(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset);\n textrueOffsets.g = pos2value(valueYPos, columnWidth, rowHeight); // x\n textureOffset += 1.0;\n } else {\n textrueOffsets = u_offsets;\n }\n\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n v_color = a_Color;\n v_uv = a_Uv;\n vec4 project_pos = project_position(vec4(a_Position, 1.0));\n \n // vec2 offset = project_pixel(u_offsets);\n vec2 offset = project_pixel(textrueOffsets);\n\n // gl_Position = project_common_position_to_clipspace(vec4(vec2(project_pos.xy + offset),project_pos.z, 1.0));\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n gl_Position = u_Mvp * vec4(vec2(project_pos.xy + offset),project_pos.z, 1.0);\n } else {\n gl_Position = project_common_position_to_clipspace(vec4(vec2(project_pos.xy + offset),project_pos.z, 1.0));\n }\n gl_PointSize = a_Size * 2.0 * u_DevicePixelRatio;\n\n setPickingColor(a_PickingColor);\n\n}\n";
36
+ var pointImageFrag = "\nuniform sampler2D u_texture;\nvarying vec4 v_color;\nvarying vec2 v_uv;\nuniform vec2 u_textSize;\nuniform float u_opacity : 1;\n\nvarying mat4 styleMappingMat; // \u4F20\u9012\u4ECE\u7247\u5143\u4E2D\u4F20\u9012\u7684\u6620\u5C04\u6570\u636E\n\n#pragma include \"picking\"\n\nvoid main(){\n float opacity = styleMappingMat[0][0];\n float size = styleMappingMat[1][0];\n vec2 pos = v_uv / u_textSize + gl_PointCoord / u_textSize * 64.;\n vec4 textureColor;\n\n // Y = 0.299R + 0.587G + 0.114B // \u4EAE\u5EA6\u63D0\u53D6\n if(size < 13.0) { // \u5C3A\u5BF8\u8FC7\u5C0F\u65F6\u4F7F\u7528 bloom \u5377\u79EF\u6A21\u7CCA\u91C7\u6837\n float h = 1.0/ 512.0;\n vec4 color11 = texture2D( u_texture, vec2( pos.x - 1.0 * h, pos.y + 1.0 * h) );\n vec4 color12 = texture2D( u_texture, vec2( pos.x - 0.0 * h, pos.y + 1.0 * h) );\n vec4 color13 = texture2D( u_texture, vec2( pos.x + 1.0 * h, pos.y + 1.0 * h) );\n\n vec4 color21 = texture2D( u_texture, vec2( pos.x - 1.0 * h, pos.y) );\n vec4 color22 = texture2D( u_texture, vec2( pos.x , pos.y) );\n vec4 color23 = texture2D( u_texture, vec2( pos.x + 1.0 * h, pos.y) );\n\n vec4 color31 = texture2D( u_texture, vec2( pos.x - 1.0 * h, pos.y-1.0*h) );\n vec4 color32 = texture2D( u_texture, vec2( pos.x - 0.0 * h, pos.y-1.0*h) );\n vec4 color33 = texture2D( u_texture, vec2( pos.x + 1.0 * h, pos.y-1.0*h) );\n\n vec4 bloomPixels = (\n 1.0*color11 + \n 1.0*color12 + \n 1.0*color13 + \n 1.0*color21 + \n 1.0*color21 + \n 2.0*color22 + \n 1.0*color23 + \n 1.0*color31 + \n 1.0*color32 + \n 1.0*color33\n )/10.0;\n // luma \u53BB\u9664\u9ED1\u70B9\n float bloomluma = 0.299 * bloomPixels.r + 0.587 * bloomPixels.g + 0.114 * bloomPixels.b;\n // \u5F25\u8865\u900F\u660E\u5EA6\n bloomPixels.a *= bloomluma * 1.5;\n textureColor = bloomPixels;\n } else {\n textureColor = texture2D(u_texture, pos);\n }\n \n\n if(all(lessThan(v_color, vec4(1.0+0.00001))) && all(greaterThan(v_color, vec4(1.0-0.00001))) || v_color==vec4(1.0)){\n gl_FragColor= textureColor;\n }else {\n gl_FragColor= step(0.01, textureColor.z) * v_color;\n }\n\n gl_FragColor.a = gl_FragColor.a * opacity;\n gl_FragColor = filterColor(gl_FragColor);\n}\n";
37
+ var pointImageVert = "precision highp float;\nattribute vec3 a_Position;\nattribute vec4 a_Color;\nattribute vec2 a_Uv;\nattribute float a_Size;\nvarying vec4 v_color;\nvarying vec2 v_uv;\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\nuniform float u_stroke_width : 1;\nuniform vec2 u_offsets;\n\nuniform float u_opacity : 1;\n\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 \"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\n styleMappingMat[1][0] = a_Size;\n\n vec2 textrueOffsets = vec2(0.0, 0.0);\n if(hasOffsets()) {\n vec2 valueXPos = nextPos(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset);\n textrueOffsets.r = pos2value(valueXPos, columnWidth, rowHeight); // x\n textureOffset += 1.0;\n\n vec2 valueYPos = nextPos(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset);\n textrueOffsets.g = pos2value(valueYPos, columnWidth, rowHeight); // x\n textureOffset += 1.0;\n } else {\n textrueOffsets = u_offsets;\n }\n\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n v_color = a_Color;\n v_uv = a_Uv;\n vec4 project_pos = project_position(vec4(a_Position, 1.0));\n \n // vec2 offset = project_pixel(u_offsets);\n vec2 offset = project_pixel(textrueOffsets);\n\n // gl_Position = project_common_position_to_clipspace(vec4(vec2(project_pos.xy + offset),project_pos.z, 1.0));\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n gl_Position = u_Mvp * vec4(vec2(project_pos.xy + offset),project_pos.z, 1.0);\n } else {\n gl_Position = project_common_position_to_clipspace(vec4(vec2(project_pos.xy + offset),project_pos.z, 1.0));\n }\n gl_PointSize = a_Size * 2.0 * u_DevicePixelRatio;\n\n setPickingColor(a_PickingColor);\n\n}\n";
38
38
 
39
39
  var ImageModel = function (_BaseModel) {
40
40
  (0, _inherits2.default)(ImageModel, _BaseModel);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@antv/l7-layers",
3
- "version": "2.6.23",
3
+ "version": "2.6.27",
4
4
  "description": "L7's collection of built-in layers",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.js",
@@ -24,9 +24,9 @@
24
24
  "license": "ISC",
25
25
  "dependencies": {
26
26
  "@antv/geo-coord": "^1.0.8",
27
- "@antv/l7-core": "^2.6.23",
28
- "@antv/l7-source": "^2.6.23",
29
- "@antv/l7-utils": "^2.6.23",
27
+ "@antv/l7-core": "^2.6.27",
28
+ "@antv/l7-source": "^2.6.27",
29
+ "@antv/l7-utils": "^2.6.27",
30
30
  "@babel/runtime": "^7.7.7",
31
31
  "@mapbox/martini": "^0.2.0",
32
32
  "@turf/meta": "^6.0.2",
@@ -52,7 +52,7 @@
52
52
  "@types/gl-matrix": "^2.4.5",
53
53
  "@types/lodash": "^4.14.138"
54
54
  },
55
- "gitHead": "14d6525f8ee7c9b1b301ae1275b867ee9ff0d02d",
55
+ "gitHead": "c057c2146bddba7904aed8312d3c8ae9698a0eb7",
56
56
  "publishConfig": {
57
57
  "access": "public"
58
58
  }