@antv/l7-layers 2.9.1 → 2.9.4

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.
@@ -13,7 +13,7 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflec
13
13
  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; } }
14
14
 
15
15
  import { AttributeType, gl } from '@antv/l7-core';
16
- import { getCullFace, getMask } from '@antv/l7-utils';
16
+ import { getMask } from '@antv/l7-utils';
17
17
  import BaseModel from '../../core/BaseModel';
18
18
  import { PointFillTriangulation } from '../../core/triangulation';
19
19
  var pointFillFrag = "\nuniform float u_additive;\n\nvarying mat4 styleMappingMat; // \u4F20\u9012\u4ECE\u7247\u5143\u4E2D\u4F20\u9012\u7684\u6620\u5C04\u6570\u636E\n\nvarying vec4 v_data;\nvarying vec4 v_color;\nvarying float v_radius;\n\n#pragma include \"sdf_2d\"\n#pragma include \"picking\"\n\nvoid main() {\n int shape = int(floor(v_data.w + 0.5));\n\n vec4 textrueStroke = vec4(\n styleMappingMat[1][0],\n styleMappingMat[1][1],\n styleMappingMat[1][2],\n styleMappingMat[1][3]\n );\n\n float opacity = styleMappingMat[0][0];\n\n lowp float antialiasblur = v_data.z;\n float r = v_radius / (v_radius);\n\n float outer_df = sdCircle(v_data.xy, 1.0);\n float inner_df = sdCircle(v_data.xy, r);\n\n float opacity_t = smoothstep(0.0, antialiasblur, outer_df);\n\n gl_FragColor = vec4(v_color.rgb, v_color.a * opacity);\n\n if(u_additive > 0.0) {\n gl_FragColor *= opacity_t;\n } else {\n gl_FragColor.a *= opacity_t;\n }\n\n if(gl_FragColor.a > 0.0) {\n gl_FragColor = filterColor(gl_FragColor);\n }\n\n vec2 extrude = styleMappingMat[2].ba;\n vec2 dir = normalize(extrude);\n vec2 baseDir = vec2(1.0, 0.0);\n float pi = 3.14159265359;\n // full circle\n // float rades = dot(dir, baseDir);\n // float flag = sign(dir.y);\n // float radar_v = (flag - 1.0) * -0.5 + flag * acos(rades)/pi/2.0;\n \n // half circle\n float flag = sign(dir.y);\n float rades = dot(dir, baseDir);\n float radar_v = (flag - 1.0) * -0.5 * acos(rades)/pi;\n // simple AA\n if(radar_v > 0.99) {\n radar_v = 1.0 - (radar_v - 0.99)/0.01;\n }\n\n gl_FragColor.a *= radar_v;\n}\n";
@@ -189,11 +189,7 @@ var RadarModel = function (_BaseModel) {
189
189
  enable: false
190
190
  },
191
191
  blend: this.getBlend(),
192
- stencil: getMask(mask, maskInside),
193
- cull: {
194
- enable: true,
195
- face: getCullFace(this.mapService.version)
196
- }
192
+ stencil: getMask(mask, maskInside)
197
193
  })];
198
194
  }
199
195
  }, {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/point/models/radar.ts"],"names":["AttributeType","gl","getCullFace","getMask","BaseModel","PointFillTriangulation","Version","RadarModel","layer","getLayerConfig","opacity","offsets","blend","speed","dataTextureTest","dataTextureNeedUpdate","judgeStyleAttributes","encodeData","getEncodedData","calDataFrame","cellLength","cellProperties","data","width","height","rowCount","dataTexture","length","createTexture2D","flipY","format","LUMINANCE","type","FLOAT","u_isMeter","Number","isMeter","u_speed","u_additive","u_dataTexture","u_cellTypeLayout","getCellTypeLayout","u_opacity","u_offsets","isOffsetStatic","animateOption","enable","u_aimate","animateOption2Array","u_time","getLayerAnimateTime","styleAttributeService","createAttributesAndIndices","unit","version","mapService","L7MAP","GLOBEL","calMeter2Coord","buildModels","getSource","extent","minLng","minLat","maxLng","maxLat","center","MAPBOX","window","mapboxgl","MercatorCoordinate","coord","fromLngLat","lng","lat","offsetInMeters","offsetInMercatorCoordinateUnits","meterInMercatorCoordinateUnits","westCoord","x","y","z","westLnglat","toLngLat","meter2coord","m1","meterToCoord","m2","Boolean","mask","maskInside","getShaders","frag","vert","buildLayerModel","moduleName","vertexShader","fragmentShader","triangulation","depth","getBlend","stencil","cull","face","pointFillFrag","pointFillVert","destroy","option","rings","registerStyleAttribute","name","Attribute","descriptor","buffer","usage","DYNAMIC_DRAW","size","update","feature","featureIdx","vertex","attributeIdx","extrude","extrudeIndex","Array","isArray","shape","shape2d","shapeIndex","indexOf"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IAnimateOption,\n IAttribute,\n IElements,\n IEncodeFeature,\n ILayerConfig,\n IModel,\n IModelUniform,\n} from '@antv/l7-core';\nimport { getCullFace, getMask } from '@antv/l7-utils';\nimport { isNumber } from 'lodash';\nimport BaseModel from '../../core/BaseModel';\nimport { IPointLayerStyleOptions } from '../../core/interface';\nimport { PointFillTriangulation } from '../../core/triangulation';\n\nimport pointFillFrag from '../shaders/radar/radar_frag.glsl';\nimport pointFillVert from '../shaders/radar/radar_vert.glsl';\n\nimport { Version } from '@antv/l7-maps';\n\nexport default class RadarModel extends BaseModel {\n public meter2coord: number = 1;\n private isMeter: boolean = false;\n public getUninforms(): IModelUniform {\n const {\n opacity = 1,\n offsets = [0, 0],\n blend,\n speed = 1,\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n\n if (\n this.dataTextureTest &&\n this.dataTextureNeedUpdate({\n opacity,\n offsets,\n })\n ) {\n // 判断当前的样式中哪些是需要进行数据映射的,哪些是常量,同时计算用于构建数据纹理的一些中间变量\n this.judgeStyleAttributes({\n opacity,\n offsets,\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 return {\n u_isMeter: Number(this.isMeter),\n u_speed: speed,\n u_additive: blend === 'additive' ? 1.0 : 0.0,\n u_dataTexture: this.dataTexture, // 数据纹理 - 有数据映射的时候纹理中带数据,若没有任何数据映射时纹理是 [1]\n u_cellTypeLayout: this.getCellTypeLayout(),\n\n u_opacity: isNumber(opacity) ? opacity : 1.0,\n u_offsets: this.isOffsetStatic(offsets)\n ? (offsets as [number, number])\n : [0, 0],\n };\n }\n public getAnimateUniforms(): IModelUniform {\n const {\n animateOption = { enable: false },\n } = this.layer.getLayerConfig() as ILayerConfig;\n return {\n u_aimate: this.animateOption2Array(animateOption),\n u_time: this.layer.getLayerAnimateTime(),\n };\n }\n\n public getAttribute(): {\n attributes: {\n [attributeName: string]: IAttribute;\n };\n elements: IElements;\n } {\n return this.styleAttributeService.createAttributesAndIndices(\n this.layer.getEncodedData(),\n PointFillTriangulation,\n );\n }\n\n public initModels(): IModel[] {\n const {\n unit = 'l7size',\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n const { version } = this.mapService;\n if (\n unit === 'meter' &&\n version !== Version.L7MAP &&\n version !== Version.GLOBEL\n ) {\n this.isMeter = true;\n this.calMeter2Coord();\n }\n\n return this.buildModels();\n }\n\n /**\n * 计算等面积点图层(unit meter)笛卡尔坐标标度与世界坐标标度的比例\n * @returns\n */\n public calMeter2Coord() {\n const [minLng, minLat, maxLng, maxLat] = this.layer.getSource().extent;\n const center = [(minLng + maxLng) / 2, (minLat + maxLat) / 2];\n\n const { version } = this.mapService;\n if (version === Version.MAPBOX && window.mapboxgl.MercatorCoordinate) {\n const coord = window.mapboxgl.MercatorCoordinate.fromLngLat(\n { lng: center[0], lat: center[1] },\n 0,\n );\n const offsetInMeters = 1;\n const offsetInMercatorCoordinateUnits =\n offsetInMeters * coord.meterInMercatorCoordinateUnits();\n const westCoord = new window.mapboxgl.MercatorCoordinate(\n coord.x - offsetInMercatorCoordinateUnits,\n coord.y,\n coord.z,\n );\n const westLnglat = westCoord.toLngLat();\n\n this.meter2coord = center[0] - westLnglat.lng;\n return;\n }\n\n // @ts-ignore\n const m1 = this.mapService.meterToCoord(center, [minLng, minLat]);\n // @ts-ignore\n const m2 = this.mapService.meterToCoord(center, [\n maxLng === minLng ? maxLng + 0.1 : maxLng,\n maxLat === minLat ? minLat + 0.1 : maxLat,\n ]);\n this.meter2coord = (m1 + m2) / 2;\n if (!Boolean(this.meter2coord)) {\n // Tip: 兼容单个数据导致的 m1、m2 为 NaN\n this.meter2coord = 7.70681090738883;\n }\n }\n\n public buildModels(): IModel[] {\n const {\n mask = false,\n maskInside = true,\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\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: PointFillTriangulation,\n depth: { enable: false },\n blend: this.getBlend(),\n stencil: getMask(mask, maskInside),\n cull: {\n enable: true,\n face: getCullFace(this.mapService.version),\n },\n }),\n ];\n }\n\n /**\n * 根据 animateOption 的值返回对应的 shader 代码\n * @returns\n */\n public getShaders(): { frag: string; vert: string; type: string } {\n return {\n frag: pointFillFrag,\n vert: pointFillVert,\n type: 'point_radar',\n };\n }\n\n public clearModels() {\n this.dataTexture?.destroy();\n }\n\n // overwrite baseModel func\n protected animateOption2Array(option: Partial<IAnimateOption>): number[] {\n return [option.enable ? 0 : 1.0, option.speed || 1, option.rings || 3, 0];\n }\n protected registerBuiltinAttributes() {\n this.styleAttributeService.registerStyleAttribute({\n name: 'extrude',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Extrude',\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 let extrude;\n extrude = [1, 1, 0, -1, 1, 0, -1, -1, 0, 1, -1, 0];\n\n const extrudeIndex = (attributeIdx % 4) * 3;\n return [\n extrude[extrudeIndex],\n extrude[extrudeIndex + 1],\n extrude[extrudeIndex + 2],\n ];\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 = 5 } = feature;\n return Array.isArray(size)\n ? [size[0] * this.meter2coord]\n : [(size as number) * this.meter2coord];\n },\n },\n });\n\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'shape',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Shape',\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 { shape = 2 } = feature;\n const shape2d = this.layer.getLayerConfig().shape2d as string[];\n const shapeIndex = shape2d.indexOf(shape as string);\n return [shapeIndex];\n },\n },\n });\n }\n}\n"],"file":"radar.js"}
1
+ {"version":3,"sources":["../../../src/point/models/radar.ts"],"names":["AttributeType","gl","getMask","BaseModel","PointFillTriangulation","Version","RadarModel","layer","getLayerConfig","opacity","offsets","blend","speed","dataTextureTest","dataTextureNeedUpdate","judgeStyleAttributes","encodeData","getEncodedData","calDataFrame","cellLength","cellProperties","data","width","height","rowCount","dataTexture","length","createTexture2D","flipY","format","LUMINANCE","type","FLOAT","u_isMeter","Number","isMeter","u_speed","u_additive","u_dataTexture","u_cellTypeLayout","getCellTypeLayout","u_opacity","u_offsets","isOffsetStatic","animateOption","enable","u_aimate","animateOption2Array","u_time","getLayerAnimateTime","styleAttributeService","createAttributesAndIndices","unit","version","mapService","L7MAP","GLOBEL","calMeter2Coord","buildModels","getSource","extent","minLng","minLat","maxLng","maxLat","center","MAPBOX","window","mapboxgl","MercatorCoordinate","coord","fromLngLat","lng","lat","offsetInMeters","offsetInMercatorCoordinateUnits","meterInMercatorCoordinateUnits","westCoord","x","y","z","westLnglat","toLngLat","meter2coord","m1","meterToCoord","m2","Boolean","mask","maskInside","getShaders","frag","vert","buildLayerModel","moduleName","vertexShader","fragmentShader","triangulation","depth","getBlend","stencil","pointFillFrag","pointFillVert","destroy","option","rings","registerStyleAttribute","name","Attribute","descriptor","buffer","usage","DYNAMIC_DRAW","size","update","feature","featureIdx","vertex","attributeIdx","extrude","extrudeIndex","Array","isArray","shape","shape2d","shapeIndex","indexOf"],"mappings":";;;;;;;;;;;;;;AAAA,SACEA,aADF,EAEEC,EAFF,QAUO,eAVP;AAWA,SAAsBC,OAAtB,QAAqC,gBAArC;AAEA,OAAOC,SAAP,MAAsB,sBAAtB;AAEA,SAASC,sBAAT,QAAuC,0BAAvC;;;AAKA,SAASC,OAAT,QAAwB,eAAxB;;IAEqBC,U;;;;;;;;;;;;;;;;kEACU,C;;8DACF,K;;;;;;;WAC3B,wBAAqC;AACnC,iBAKI,KAAKC,KAAL,CAAWC,cAAX,EALJ;AAAA,8BACEC,OADF;AAAA,UACEA,OADF,6BACY,CADZ;AAAA,8BAEEC,OAFF;AAAA,UAEEA,OAFF,6BAEY,CAAC,CAAD,EAAI,CAAJ,CAFZ;AAAA,UAGEC,KAHF,QAGEA,KAHF;AAAA,4BAIEC,KAJF;AAAA,UAIEA,KAJF,2BAIU,CAJV;;AAOA,UACE,KAAKC,eAAL,IACA,KAAKC,qBAAL,CAA2B;AACzBL,QAAAA,OAAO,EAAPA,OADyB;AAEzBC,QAAAA,OAAO,EAAPA;AAFyB,OAA3B,CAFF,EAME;AAEA,aAAKK,oBAAL,CAA0B;AACxBN,UAAAA,OAAO,EAAPA,OADwB;AAExBC,UAAAA,OAAO,EAAPA;AAFwB,SAA1B;AAKA,YAAMM,UAAU,GAAG,KAAKT,KAAL,CAAWU,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,EAAE5B,EAAE,CAAC6B,SAHQ;AAInBC,UAAAA,IAAI,EAAE9B,EAAE,CAAC+B,KAJU;AAKnBV,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,EAAE5B,EAAE,CAAC6B,SAHQ;AAInBC,UAAAA,IAAI,EAAE9B,EAAE,CAAC+B,KAJU;AAKnBV,UAAAA,KAAK,EAAE,CALY;AAMnBC,UAAAA,MAAM,EAAE;AANW,SAArB,CAVN;AAkBD;;AACD,aAAO;AACLU,QAAAA,SAAS,EAAEC,MAAM,CAAC,KAAKC,OAAN,CADZ;AAELC,QAAAA,OAAO,EAAExB,KAFJ;AAGLyB,QAAAA,UAAU,EAAE1B,KAAK,KAAK,UAAV,GAAuB,GAAvB,GAA6B,GAHpC;AAIL2B,QAAAA,aAAa,EAAE,KAAKb,WAJf;AAKLc,QAAAA,gBAAgB,EAAE,KAAKC,iBAAL,EALb;AAOLC,QAAAA,SAAS,EAAE,UAAShC,OAAT,IAAoBA,OAApB,GAA8B,GAPpC;AAQLiC,QAAAA,SAAS,EAAE,KAAKC,cAAL,CAAoBjC,OAApB,IACNA,OADM,GAEP,CAAC,CAAD,EAAI,CAAJ;AAVC,OAAP;AAYD;;;WACD,8BAA2C;AACzC,kBAEI,KAAKH,KAAL,CAAWC,cAAX,EAFJ;AAAA,sCACEoC,aADF;AAAA,UACEA,aADF,oCACkB;AAAEC,QAAAA,MAAM,EAAE;AAAV,OADlB;;AAGA,aAAO;AACLC,QAAAA,QAAQ,EAAE,KAAKC,mBAAL,CAAyBH,aAAzB,CADL;AAELI,QAAAA,MAAM,EAAE,KAAKzC,KAAL,CAAW0C,mBAAX;AAFH,OAAP;AAID;;;WAED,wBAKE;AACA,aAAO,KAAKC,qBAAL,CAA2BC,0BAA3B,CACL,KAAK5C,KAAL,CAAWU,cAAX,EADK,EAELb,sBAFK,CAAP;AAID;;;WAED,sBAA8B;AAC5B,kBAEI,KAAKG,KAAL,CAAWC,cAAX,EAFJ;AAAA,6BACE4C,IADF;AAAA,UACEA,IADF,2BACS,QADT;;AAGA,UAAQC,OAAR,GAAoB,KAAKC,UAAzB,CAAQD,OAAR;;AACA,UACED,IAAI,KAAK,OAAT,IACAC,OAAO,KAAKhD,OAAO,CAACkD,KADpB,IAEAF,OAAO,KAAKhD,OAAO,CAACmD,MAHtB,EAIE;AACA,aAAKrB,OAAL,GAAe,IAAf;AACA,aAAKsB,cAAL;AACD;;AAED,aAAO,KAAKC,WAAL,EAAP;AACD;;;WAMD,0BAAwB;AACtB,iDAAyC,KAAKnD,KAAL,CAAWoD,SAAX,GAAuBC,MAAhE;AAAA,UAAOC,MAAP;AAAA,UAAeC,MAAf;AAAA,UAAuBC,MAAvB;AAAA,UAA+BC,MAA/B;;AACA,UAAMC,MAAM,GAAG,CAAC,CAACJ,MAAM,GAAGE,MAAV,IAAoB,CAArB,EAAwB,CAACD,MAAM,GAAGE,MAAV,IAAoB,CAA5C,CAAf;AAEA,UAAQX,OAAR,GAAoB,KAAKC,UAAzB,CAAQD,OAAR;;AACA,UAAIA,OAAO,KAAKhD,OAAO,CAAC6D,MAApB,IAA8BC,MAAM,CAACC,QAAP,CAAgBC,kBAAlD,EAAsE;AACpE,YAAMC,KAAK,GAAGH,MAAM,CAACC,QAAP,CAAgBC,kBAAhB,CAAmCE,UAAnC,CACZ;AAAEC,UAAAA,GAAG,EAAEP,MAAM,CAAC,CAAD,CAAb;AAAkBQ,UAAAA,GAAG,EAAER,MAAM,CAAC,CAAD;AAA7B,SADY,EAEZ,CAFY,CAAd;AAIA,YAAMS,cAAc,GAAG,CAAvB;AACA,YAAMC,+BAA+B,GACnCD,cAAc,GAAGJ,KAAK,CAACM,8BAAN,EADnB;AAEA,YAAMC,SAAS,GAAG,IAAIV,MAAM,CAACC,QAAP,CAAgBC,kBAApB,CAChBC,KAAK,CAACQ,CAAN,GAAUH,+BADM,EAEhBL,KAAK,CAACS,CAFU,EAGhBT,KAAK,CAACU,CAHU,CAAlB;AAKA,YAAMC,UAAU,GAAGJ,SAAS,CAACK,QAAV,EAAnB;AAEA,aAAKC,WAAL,GAAmBlB,MAAM,CAAC,CAAD,CAAN,GAAYgB,UAAU,CAACT,GAA1C;AACA;AACD;;AAGD,UAAMY,EAAE,GAAG,KAAK9B,UAAL,CAAgB+B,YAAhB,CAA6BpB,MAA7B,EAAqC,CAACJ,MAAD,EAASC,MAAT,CAArC,CAAX;AAEA,UAAMwB,EAAE,GAAG,KAAKhC,UAAL,CAAgB+B,YAAhB,CAA6BpB,MAA7B,EAAqC,CAC9CF,MAAM,KAAKF,MAAX,GAAoBE,MAAM,GAAG,GAA7B,GAAmCA,MADW,EAE9CC,MAAM,KAAKF,MAAX,GAAoBA,MAAM,GAAG,GAA7B,GAAmCE,MAFW,CAArC,CAAX;AAIA,WAAKmB,WAAL,GAAmB,CAACC,EAAE,GAAGE,EAAN,IAAY,CAA/B;;AACA,UAAI,CAACC,OAAO,CAAC,KAAKJ,WAAN,CAAZ,EAAgC;AAE9B,aAAKA,WAAL,GAAmB,gBAAnB;AACD;AACF;;;WAED,uBAA+B;AAC7B,kBAGI,KAAK5E,KAAL,CAAWC,cAAX,EAHJ;AAAA,6BACEgF,IADF;AAAA,UACEA,IADF,2BACS,KADT;AAAA,mCAEEC,UAFF;AAAA,UAEEA,UAFF,iCAEe,IAFf;;AAIA,6BAA6B,KAAKC,UAAL,EAA7B;AAAA,UAAQC,IAAR,oBAAQA,IAAR;AAAA,UAAcC,IAAd,oBAAcA,IAAd;AAAA,UAAoB7D,IAApB,oBAAoBA,IAApB;;AAEA,aAAO,CACL,KAAKxB,KAAL,CAAWsF,eAAX,CAA2B;AACzBC,QAAAA,UAAU,EAAE/D,IADa;AAEzBgE,QAAAA,YAAY,EAAEH,IAFW;AAGzBI,QAAAA,cAAc,EAAEL,IAHS;AAIzBM,QAAAA,aAAa,EAAE7F,sBAJU;AAKzB8F,QAAAA,KAAK,EAAE;AAAErD,UAAAA,MAAM,EAAE;AAAV,SALkB;AAMzBlC,QAAAA,KAAK,EAAE,KAAKwF,QAAL,EANkB;AAOzBC,QAAAA,OAAO,EAAElG,OAAO,CAACsF,IAAD,EAAOC,UAAP;AAPS,OAA3B,CADK,CAAP;AAWD;;;WAMD,sBAAkE;AAChE,aAAO;AACLE,QAAAA,IAAI,EAAEU,aADD;AAELT,QAAAA,IAAI,EAAEU,aAFD;AAGLvE,QAAAA,IAAI,EAAE;AAHD,OAAP;AAKD;;;WAED,uBAAqB;AAAA;;AACnB,gCAAKN,WAAL,wEAAkB8E,OAAlB;AACD;;;WAGD,6BAA8BC,MAA9B,EAAyE;AACvE,aAAO,CAACA,MAAM,CAAC3D,MAAP,GAAgB,CAAhB,GAAoB,GAArB,EAA0B2D,MAAM,CAAC5F,KAAP,IAAgB,CAA1C,EAA6C4F,MAAM,CAACC,KAAP,IAAgB,CAA7D,EAAgE,CAAhE,CAAP;AACD;;;WACD,qCAAsC;AAAA;;AACpC,WAAKvD,qBAAL,CAA2BwD,sBAA3B,CAAkD;AAChDC,QAAAA,IAAI,EAAE,SAD0C;AAEhD5E,QAAAA,IAAI,EAAE/B,aAAa,CAAC4G,SAF4B;AAGhDC,QAAAA,UAAU,EAAE;AACVF,UAAAA,IAAI,EAAE,WADI;AAEVG,UAAAA,MAAM,EAAE;AAENC,YAAAA,KAAK,EAAE9G,EAAE,CAAC+G,YAFJ;AAGN3F,YAAAA,IAAI,EAAE,EAHA;AAINU,YAAAA,IAAI,EAAE9B,EAAE,CAAC+B;AAJH,WAFE;AAQViF,UAAAA,IAAI,EAAE,CARI;AASVC,UAAAA,MAAM,EAAE,gBACNC,OADM,EAENC,UAFM,EAGNC,MAHM,EAINC,YAJM,EAKH;AACH,gBAAIC,OAAJ;AACAA,YAAAA,OAAO,GAAG,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAC,CAAX,EAAc,CAAd,EAAiB,CAAjB,EAAoB,CAAC,CAArB,EAAwB,CAAC,CAAzB,EAA4B,CAA5B,EAA+B,CAA/B,EAAkC,CAAC,CAAnC,EAAsC,CAAtC,CAAV;AAEA,gBAAMC,YAAY,GAAIF,YAAY,GAAG,CAAhB,GAAqB,CAA1C;AACA,mBAAO,CACLC,OAAO,CAACC,YAAD,CADF,EAELD,OAAO,CAACC,YAAY,GAAG,CAAhB,CAFF,EAGLD,OAAO,CAACC,YAAY,GAAG,CAAhB,CAHF,CAAP;AAKD;AAxBS;AAHoC,OAAlD;AAgCA,WAAKtE,qBAAL,CAA2BwD,sBAA3B,CAAkD;AAChDC,QAAAA,IAAI,EAAE,MAD0C;AAEhD5E,QAAAA,IAAI,EAAE/B,aAAa,CAAC4G,SAF4B;AAGhDC,QAAAA,UAAU,EAAE;AACVF,UAAAA,IAAI,EAAE,QADI;AAEVG,UAAAA,MAAM,EAAE;AAENC,YAAAA,KAAK,EAAE9G,EAAE,CAAC+G,YAFJ;AAGN3F,YAAAA,IAAI,EAAE,EAHA;AAINU,YAAAA,IAAI,EAAE9B,EAAE,CAAC+B;AAJH,WAFE;AAQViF,UAAAA,IAAI,EAAE,CARI;AASVC,UAAAA,MAAM,EAAE,gBACNC,OADM,EAENC,UAFM,EAGNC,MAHM,EAINC,YAJM,EAKH;AACH,gCAAqBH,OAArB,CAAQF,IAAR;AAAA,gBAAQA,IAAR,8BAAe,CAAf;AACA,mBAAOQ,KAAK,CAACC,OAAN,CAAcT,IAAd,IACH,CAACA,IAAI,CAAC,CAAD,CAAJ,GAAU,MAAI,CAAC9B,WAAhB,CADG,GAEH,CAAE8B,IAAD,GAAmB,MAAI,CAAC9B,WAAzB,CAFJ;AAGD;AAnBS;AAHoC,OAAlD;AA2BA,WAAKjC,qBAAL,CAA2BwD,sBAA3B,CAAkD;AAChDC,QAAAA,IAAI,EAAE,OAD0C;AAEhD5E,QAAAA,IAAI,EAAE/B,aAAa,CAAC4G,SAF4B;AAGhDC,QAAAA,UAAU,EAAE;AACVF,UAAAA,IAAI,EAAE,SADI;AAEVG,UAAAA,MAAM,EAAE;AAENC,YAAAA,KAAK,EAAE9G,EAAE,CAAC+G,YAFJ;AAGN3F,YAAAA,IAAI,EAAE,EAHA;AAINU,YAAAA,IAAI,EAAE9B,EAAE,CAAC+B;AAJH,WAFE;AAQViF,UAAAA,IAAI,EAAE,CARI;AASVC,UAAAA,MAAM,EAAE,gBACNC,OADM,EAENC,UAFM,EAGNC,MAHM,EAINC,YAJM,EAKH;AACH,iCAAsBH,OAAtB,CAAQQ,KAAR;AAAA,gBAAQA,KAAR,+BAAgB,CAAhB;;AACA,gBAAMC,OAAO,GAAG,MAAI,CAACrH,KAAL,CAAWC,cAAX,GAA4BoH,OAA5C;;AACA,gBAAMC,UAAU,GAAGD,OAAO,CAACE,OAAR,CAAgBH,KAAhB,CAAnB;AACA,mBAAO,CAACE,UAAD,CAAP;AACD;AAnBS;AAHoC,OAAlD;AAyBD;;;;EA9QqC1H,S;;SAAnBG,U","sourcesContent":["import {\n AttributeType,\n gl,\n IAnimateOption,\n IAttribute,\n IElements,\n IEncodeFeature,\n ILayerConfig,\n IModel,\n IModelUniform,\n} from '@antv/l7-core';\nimport { getCullFace, getMask } from '@antv/l7-utils';\nimport { isNumber } from 'lodash';\nimport BaseModel from '../../core/BaseModel';\nimport { IPointLayerStyleOptions } from '../../core/interface';\nimport { PointFillTriangulation } from '../../core/triangulation';\n\nimport pointFillFrag from '../shaders/radar/radar_frag.glsl';\nimport pointFillVert from '../shaders/radar/radar_vert.glsl';\n\nimport { Version } from '@antv/l7-maps';\n\nexport default class RadarModel extends BaseModel {\n public meter2coord: number = 1;\n private isMeter: boolean = false;\n public getUninforms(): IModelUniform {\n const {\n opacity = 1,\n offsets = [0, 0],\n blend,\n speed = 1,\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n\n if (\n this.dataTextureTest &&\n this.dataTextureNeedUpdate({\n opacity,\n offsets,\n })\n ) {\n // 判断当前的样式中哪些是需要进行数据映射的,哪些是常量,同时计算用于构建数据纹理的一些中间变量\n this.judgeStyleAttributes({\n opacity,\n offsets,\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 return {\n u_isMeter: Number(this.isMeter),\n u_speed: speed,\n u_additive: blend === 'additive' ? 1.0 : 0.0,\n u_dataTexture: this.dataTexture, // 数据纹理 - 有数据映射的时候纹理中带数据,若没有任何数据映射时纹理是 [1]\n u_cellTypeLayout: this.getCellTypeLayout(),\n\n u_opacity: isNumber(opacity) ? opacity : 1.0,\n u_offsets: this.isOffsetStatic(offsets)\n ? (offsets as [number, number])\n : [0, 0],\n };\n }\n public getAnimateUniforms(): IModelUniform {\n const {\n animateOption = { enable: false },\n } = this.layer.getLayerConfig() as ILayerConfig;\n return {\n u_aimate: this.animateOption2Array(animateOption),\n u_time: this.layer.getLayerAnimateTime(),\n };\n }\n\n public getAttribute(): {\n attributes: {\n [attributeName: string]: IAttribute;\n };\n elements: IElements;\n } {\n return this.styleAttributeService.createAttributesAndIndices(\n this.layer.getEncodedData(),\n PointFillTriangulation,\n );\n }\n\n public initModels(): IModel[] {\n const {\n unit = 'l7size',\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n const { version } = this.mapService;\n if (\n unit === 'meter' &&\n version !== Version.L7MAP &&\n version !== Version.GLOBEL\n ) {\n this.isMeter = true;\n this.calMeter2Coord();\n }\n\n return this.buildModels();\n }\n\n /**\n * 计算等面积点图层(unit meter)笛卡尔坐标标度与世界坐标标度的比例\n * @returns\n */\n public calMeter2Coord() {\n const [minLng, minLat, maxLng, maxLat] = this.layer.getSource().extent;\n const center = [(minLng + maxLng) / 2, (minLat + maxLat) / 2];\n\n const { version } = this.mapService;\n if (version === Version.MAPBOX && window.mapboxgl.MercatorCoordinate) {\n const coord = window.mapboxgl.MercatorCoordinate.fromLngLat(\n { lng: center[0], lat: center[1] },\n 0,\n );\n const offsetInMeters = 1;\n const offsetInMercatorCoordinateUnits =\n offsetInMeters * coord.meterInMercatorCoordinateUnits();\n const westCoord = new window.mapboxgl.MercatorCoordinate(\n coord.x - offsetInMercatorCoordinateUnits,\n coord.y,\n coord.z,\n );\n const westLnglat = westCoord.toLngLat();\n\n this.meter2coord = center[0] - westLnglat.lng;\n return;\n }\n\n // @ts-ignore\n const m1 = this.mapService.meterToCoord(center, [minLng, minLat]);\n // @ts-ignore\n const m2 = this.mapService.meterToCoord(center, [\n maxLng === minLng ? maxLng + 0.1 : maxLng,\n maxLat === minLat ? minLat + 0.1 : maxLat,\n ]);\n this.meter2coord = (m1 + m2) / 2;\n if (!Boolean(this.meter2coord)) {\n // Tip: 兼容单个数据导致的 m1、m2 为 NaN\n this.meter2coord = 7.70681090738883;\n }\n }\n\n public buildModels(): IModel[] {\n const {\n mask = false,\n maskInside = true,\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\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: PointFillTriangulation,\n depth: { enable: false },\n blend: this.getBlend(),\n stencil: getMask(mask, maskInside),\n }),\n ];\n }\n\n /**\n * 根据 animateOption 的值返回对应的 shader 代码\n * @returns\n */\n public getShaders(): { frag: string; vert: string; type: string } {\n return {\n frag: pointFillFrag,\n vert: pointFillVert,\n type: 'point_radar',\n };\n }\n\n public clearModels() {\n this.dataTexture?.destroy();\n }\n\n // overwrite baseModel func\n protected animateOption2Array(option: Partial<IAnimateOption>): number[] {\n return [option.enable ? 0 : 1.0, option.speed || 1, option.rings || 3, 0];\n }\n protected registerBuiltinAttributes() {\n this.styleAttributeService.registerStyleAttribute({\n name: 'extrude',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Extrude',\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 let extrude;\n extrude = [1, 1, 0, -1, 1, 0, -1, -1, 0, 1, -1, 0];\n\n const extrudeIndex = (attributeIdx % 4) * 3;\n return [\n extrude[extrudeIndex],\n extrude[extrudeIndex + 1],\n extrude[extrudeIndex + 2],\n ];\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 = 5 } = feature;\n return Array.isArray(size)\n ? [size[0] * this.meter2coord]\n : [(size as number) * this.meter2coord];\n },\n },\n });\n\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'shape',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Shape',\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 { shape = 2 } = feature;\n const shape2d = this.layer.getLayerConfig().shape2d as string[];\n const shapeIndex = shape2d.indexOf(shape as string);\n return [shapeIndex];\n },\n },\n });\n }\n}\n"],"file":"radar.js"}
@@ -17,4 +17,5 @@ export default class TilePickManager extends EventEmitter implements ITilePickMa
17
17
  clearPick(): void;
18
18
  beforeHighlight(pickedColors: any): void;
19
19
  beforeSelect(pickedColors: any): void;
20
+ protected renderMask(layer: ILayer): void;
20
21
  }
@@ -81,7 +81,7 @@ var TilePickManager = function (_EventEmitter) {
81
81
  var _this3 = this;
82
82
 
83
83
  if (this.parent.type === 'RasterLayer') {
84
- this.normalRender([this.parent]);
84
+ this.renderMask(this.parent);
85
85
  }
86
86
 
87
87
  var isPicked = layers.filter(function (layer) {
@@ -108,7 +108,7 @@ var TilePickManager = function (_EventEmitter) {
108
108
 
109
109
  var layerPicked = _this3.pickingService.pickFromPickingFBO(layer, target);
110
110
 
111
- if (layerPicked) {
111
+ if (layerPicked && _this3.parent.type !== 'RasterLayer') {
112
112
  _this3.emit('pick', {
113
113
  type: target.type,
114
114
  pickedColors: _this3.pickingService.pickedColors,
@@ -121,7 +121,7 @@ var TilePickManager = function (_EventEmitter) {
121
121
  return layerPicked;
122
122
  });
123
123
 
124
- if (!isPicked && this.isLastPicked && target.type !== 'click') {
124
+ if (this.parent.type !== 'RasterLayer' && !isPicked && this.isLastPicked && target.type !== 'click') {
125
125
  this.pickingService.pickedTileLayers = [];
126
126
  this.emit('unpick', {});
127
127
  this.beforeHighlight([0, 0, 0]);
@@ -158,6 +158,28 @@ var TilePickManager = function (_EventEmitter) {
158
158
  layer.hooks.beforeSelect.call(pickedColors);
159
159
  });
160
160
  }
161
+ }, {
162
+ key: "renderMask",
163
+ value: function renderMask(layer) {
164
+ if (layer.inited && layer.isVisible()) {
165
+ layer.hooks.beforeRender.call();
166
+
167
+ if (layer.masks.length > 0) {
168
+ this.rendererService.clear({
169
+ stencil: 0,
170
+ depth: 1,
171
+ framebuffer: null
172
+ });
173
+ layer.masks.map(function (m) {
174
+ m.hooks.beforeRender.call();
175
+ m.render();
176
+ m.hooks.afterRender.call();
177
+ });
178
+ }
179
+
180
+ layer.hooks.afterRender.call();
181
+ }
182
+ }
161
183
  }]);
162
184
 
163
185
  return TilePickManager;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/tile/manager/tilePickerManager.ts"],"names":["EventEmitter","TilePickManager","parent","rendererService","pickingService","children","layerService","layers","filter","layer","inited","isVisible","map","hooks","beforeRenderData","call","beforeRender","masks","length","clear","stencil","depth","framebuffer","m","render","afterRender","target","type","normalRender","isPicked","needPick","some","beforePickingEncode","renderModels","afterPickingEncode","layerPicked","pickFromPickingFBO","emit","pickedColors","pickedTileLayers","isLastPicked","beforeHighlight","child","beforeSelect"],"mappings":"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","sourcesContent":["import {\n IInteractionTarget,\n ILayer,\n ILayerService,\n IPickingService,\n IRendererService,\n ITilePickManager,\n} from '@antv/l7-core';\nimport { EventEmitter } from 'eventemitter3';\nexport default class TilePickManager extends EventEmitter\n implements ITilePickManager {\n public isLastPicked: boolean = false;\n private rendererService: IRendererService;\n private pickingService: IPickingService;\n private layerService: ILayerService;\n private children: ILayer[];\n private parent: ILayer;\n\n constructor(\n parent: ILayer,\n rendererService: IRendererService,\n pickingService: IPickingService,\n children: ILayer[],\n layerService: ILayerService,\n ) {\n super();\n this.parent = parent;\n this.rendererService = rendererService;\n this.pickingService = pickingService;\n this.layerService = layerService;\n this.children = children;\n }\n\n /**\n *\n * @param layers\n */\n public normalRender(layers: ILayer[]) {\n layers\n .filter((layer) => layer.inited)\n .filter((layer) => layer.isVisible())\n .map((layer) => {\n layer.hooks.beforeRenderData.call();\n layer.hooks.beforeRender.call();\n if (layer.masks.length > 0) {\n // 清除上一次的模版缓存\n this.rendererService.clear({\n stencil: 0,\n depth: 1,\n framebuffer: null,\n });\n layer.masks.map((m: ILayer) => {\n m.hooks.beforeRender.call();\n m.render();\n m.hooks.afterRender.call();\n });\n }\n layer.render();\n layer.hooks.afterRender.call();\n });\n }\n\n public pickRender(layers: ILayer[], target: IInteractionTarget) {\n // Tip: 在进行拾取渲染的时候也需要先渲染一遍父组件然后再渲染子组件\n // 如需要在 栅格瓦片存在 Mask 的时候发生的拾取,那么就需要先渲染父组件(渲染父组件的帧缓冲)\n if (this.parent.type === 'RasterLayer') {\n this.normalRender([this.parent]);\n }\n const isPicked = layers\n .filter(\n (layer) =>\n this.parent.needPick(target.type) &&\n layer.inited &&\n layer.isVisible(),\n )\n .some((layer) => {\n layer.hooks.beforePickingEncode.call();\n if (layer.masks.length > 0) {\n // 清除上一次的模版缓存\n this.rendererService.clear({\n stencil: 0,\n depth: 1,\n framebuffer: null,\n });\n\n layer.masks.map((m: ILayer) => {\n m.hooks.beforeRender.call();\n m.render();\n m.hooks.afterRender.call();\n });\n }\n layer.renderModels(true);\n layer.hooks.afterPickingEncode.call();\n const layerPicked = this.pickingService.pickFromPickingFBO(\n layer,\n target,\n );\n if (layerPicked) {\n this.emit('pick', {\n type: target.type,\n pickedColors: this.pickingService.pickedColors,\n layer,\n });\n this.pickingService.pickedTileLayers = [this.parent];\n }\n\n return layerPicked;\n });\n if (!isPicked && this.isLastPicked && target.type !== 'click') {\n // 只有上一次有被高亮选中,本次未选中的时候才需要清除选中状态\n this.pickingService.pickedTileLayers = [];\n this.emit('unpick', {});\n this.beforeHighlight([0, 0, 0]);\n }\n this.isLastPicked = isPicked;\n return isPicked;\n }\n\n public clearPick() {\n this.children\n .filter((child) => child.inited && child.isVisible())\n .map((layer) => {\n layer.hooks.beforeSelect.call([0, 0, 0]);\n });\n this.pickingService.pickedTileLayers = [];\n }\n\n public beforeHighlight(pickedColors: any) {\n this.children\n .filter((child) => child.inited && child.isVisible())\n .map((child) => {\n child.hooks.beforeHighlight.call(pickedColors);\n });\n }\n\n public beforeSelect(pickedColors: any) {\n this.children\n .filter((child) => child.inited && child.isVisible())\n .map((layer) => {\n layer.hooks.beforeSelect.call(pickedColors);\n });\n }\n}\n"],"file":"tilePickerManager.js"}
1
+ {"version":3,"sources":["../../../src/tile/manager/tilePickerManager.ts"],"names":["EventEmitter","TilePickManager","parent","rendererService","pickingService","children","layerService","layers","filter","layer","inited","isVisible","map","hooks","beforeRenderData","call","beforeRender","masks","length","clear","stencil","depth","framebuffer","m","render","afterRender","target","type","renderMask","isPicked","needPick","some","beforePickingEncode","renderModels","afterPickingEncode","layerPicked","pickFromPickingFBO","emit","pickedColors","pickedTileLayers","isLastPicked","beforeHighlight","child","beforeSelect"],"mappings":"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","sourcesContent":["import {\n IInteractionTarget,\n ILayer,\n ILayerService,\n IPickingService,\n IRendererService,\n ITilePickManager,\n} from '@antv/l7-core';\nimport { EventEmitter } from 'eventemitter3';\nexport default class TilePickManager extends EventEmitter\n implements ITilePickManager {\n public isLastPicked: boolean = false;\n private rendererService: IRendererService;\n private pickingService: IPickingService;\n private layerService: ILayerService;\n private children: ILayer[];\n private parent: ILayer;\n\n constructor(\n parent: ILayer,\n rendererService: IRendererService,\n pickingService: IPickingService,\n children: ILayer[],\n layerService: ILayerService,\n ) {\n super();\n this.parent = parent;\n this.rendererService = rendererService;\n this.pickingService = pickingService;\n this.layerService = layerService;\n this.children = children;\n }\n\n /**\n *\n * @param layers\n */\n public normalRender(layers: ILayer[]) {\n layers\n .filter((layer) => layer.inited)\n .filter((layer) => layer.isVisible())\n .map((layer) => {\n layer.hooks.beforeRenderData.call();\n layer.hooks.beforeRender.call();\n if (layer.masks.length > 0) {\n // 清除上一次的模版缓存\n this.rendererService.clear({\n stencil: 0,\n depth: 1,\n framebuffer: null,\n });\n layer.masks.map((m: ILayer) => {\n m.hooks.beforeRender.call();\n m.render();\n m.hooks.afterRender.call();\n });\n }\n layer.render();\n layer.hooks.afterRender.call();\n });\n }\n\n public pickRender(layers: ILayer[], target: IInteractionTarget) {\n // Tip: 在进行拾取渲染的时候也需要先渲染一遍父组件然后再渲染子组件\n // 如需要在 栅格瓦片存在 Mask 的时候发生的拾取,那么就需要先渲染父组件(渲染父组件的帧缓冲)\n if (this.parent.type === 'RasterLayer') {\n this.renderMask(this.parent);\n }\n const isPicked = layers\n .filter(\n (layer) =>\n this.parent.needPick(target.type) &&\n layer.inited &&\n layer.isVisible(),\n )\n .some((layer) => {\n layer.hooks.beforePickingEncode.call();\n if (layer.masks.length > 0) {\n // 清除上一次的模版缓存\n this.rendererService.clear({\n stencil: 0,\n depth: 1,\n framebuffer: null,\n });\n\n layer.masks.map((m: ILayer) => {\n m.hooks.beforeRender.call();\n m.render();\n m.hooks.afterRender.call();\n });\n }\n layer.renderModels(true);\n layer.hooks.afterPickingEncode.call();\n const layerPicked = this.pickingService.pickFromPickingFBO(\n layer,\n target,\n );\n // RasterLayer 不参与拾取后的 shader 计算\n if (layerPicked && this.parent.type !== 'RasterLayer') {\n this.emit('pick', {\n type: target.type,\n pickedColors: this.pickingService.pickedColors,\n layer,\n });\n this.pickingService.pickedTileLayers = [this.parent];\n }\n\n return layerPicked;\n });\n if (\n this.parent.type !== 'RasterLayer' &&\n !isPicked &&\n this.isLastPicked &&\n target.type !== 'click'\n ) {\n // 只有上一次有被高亮选中,本次未选中的时候才需要清除选中状态\n this.pickingService.pickedTileLayers = [];\n this.emit('unpick', {});\n this.beforeHighlight([0, 0, 0]);\n }\n this.isLastPicked = isPicked;\n return isPicked;\n }\n\n public clearPick() {\n this.children\n .filter((child) => child.inited && child.isVisible())\n .map((layer) => {\n layer.hooks.beforeSelect.call([0, 0, 0]);\n });\n this.pickingService.pickedTileLayers = [];\n }\n\n public beforeHighlight(pickedColors: any) {\n this.children\n .filter((child) => child.inited && child.isVisible())\n .map((child) => {\n child.hooks.beforeHighlight.call(pickedColors);\n });\n }\n\n public beforeSelect(pickedColors: any) {\n this.children\n .filter((child) => child.inited && child.isVisible())\n .map((layer) => {\n layer.hooks.beforeSelect.call(pickedColors);\n });\n }\n\n protected renderMask(layer: ILayer) {\n if (layer.inited && layer.isVisible()) {\n layer.hooks.beforeRender.call();\n if (layer.masks.length > 0) {\n this.rendererService.clear({\n stencil: 0,\n depth: 1,\n framebuffer: null,\n });\n layer.masks.map((m: ILayer) => {\n m.hooks.beforeRender.call();\n m.render();\n m.hooks.afterRender.call();\n });\n }\n layer.hooks.afterRender.call();\n }\n }\n}\n"],"file":"tilePickerManager.js"}
@@ -1,6 +1,6 @@
1
1
  import { ILayer, IMapService, IParseDataItem, IRendererService, IScaleValue, ISubLayerInitOptions, ScaleAttributeType } from '@antv/l7-core';
2
2
  import Source from '@antv/l7-source';
3
- import { Tile } from '@antv/l7-utils';
3
+ import { Tile, TilesetManager } from '@antv/l7-utils';
4
4
  import { ILayerTileConfig, ITileFactory, ITileFactoryOptions, ITileStyles, Timeout } from '../interface';
5
5
  export default class TileFactory implements ITileFactory {
6
6
  type: string;
@@ -8,6 +8,8 @@ export default class TileFactory implements ITileFactory {
8
8
  mapService: IMapService;
9
9
  rendererService: IRendererService;
10
10
  outSideEventTimer: Timeout | null;
11
+ protected zoomOffset: number;
12
+ protected tilesetManager: TilesetManager;
11
13
  protected layers: ILayer[];
12
14
  private eventCache;
13
15
  constructor(option: ITileFactoryOptions);
@@ -31,7 +33,8 @@ export default class TileFactory implements ITileFactory {
31
33
  getDefautStyleAttributeField(layer: ILayer, type: string): string | string[] | 2;
32
34
  setStyleAttributeField(layer: ILayer, type: ScaleAttributeType, value: IScaleValue | undefined | string | string[]): ILayer | undefined;
33
35
  protected parseScaleValue(value: IScaleValue | string, type: string): (string | number | unknown[])[] | (string | number | string[] | number[] | ((...args: any[]) => [] | undefined))[];
34
- protected emitEvent(layers: ILayer[], isVector?: boolean, tile?: any): void;
36
+ protected getTile(lng: number, lat: number): Tile;
37
+ protected emitEvent(layers: ILayer[], isVector?: boolean): void;
35
38
  protected getCombineFeature(features: IParseDataItem[]): any;
36
39
  protected getFeatureAndEmitEvent(layer: ILayer, eventName: string, e: any, isVector?: boolean, tile?: any): void;
37
40
  private getAllFeatures;
@@ -8,8 +8,9 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
8
8
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
9
9
 
10
10
  import Source from '@antv/l7-source';
11
+ import { osmLonLat2TileXY } from '@antv/l7-utils';
11
12
  import MaskLayer from '../../mask';
12
- import { getLayerShape, readPixel, readRasterValue, registerLayers } from '../utils';
13
+ import { getLayerShape, readRasterValue, registerLayers } from '../utils';
13
14
  import VectorLayer from './vectorLayer';
14
15
  import * as turf from '@turf/helpers';
15
16
  import union from '@turf/union';
@@ -28,6 +29,10 @@ var TileFactory = function () {
28
29
 
29
30
  _defineProperty(this, "outSideEventTimer", null);
30
31
 
32
+ _defineProperty(this, "zoomOffset", void 0);
33
+
34
+ _defineProperty(this, "tilesetManager", void 0);
35
+
31
36
  _defineProperty(this, "layers", void 0);
32
37
 
33
38
  _defineProperty(this, "eventCache", {
@@ -41,6 +46,9 @@ var TileFactory = function () {
41
46
  this.parentLayer = option.parent;
42
47
  this.mapService = option.mapService;
43
48
  this.rendererService = option.rendererService;
49
+ var source = this.parentLayer.getSource();
50
+ this.zoomOffset = source.parser.zoomOffset || 0;
51
+ this.tilesetManager = source.tileset;
44
52
  }
45
53
 
46
54
  _createClass(TileFactory, [{
@@ -213,9 +221,21 @@ var TileFactory = function () {
213
221
 
214
222
  return [];
215
223
  }
224
+ }, {
225
+ key: "getTile",
226
+ value: function getTile(lng, lat) {
227
+ var zoom = this.mapService.getZoom();
228
+ var z = Math.ceil(zoom) + this.zoomOffset;
229
+ var xy = osmLonLat2TileXY(lng, lat, z);
230
+ var tiles = this.tilesetManager.tiles.filter(function (t) {
231
+ return t.key === "".concat(xy[0], ",").concat(xy[1], ",").concat(z);
232
+ });
233
+ var tile = tiles[0];
234
+ return tile;
235
+ }
216
236
  }, {
217
237
  key: "emitEvent",
218
- value: function emitEvent(layers, isVector, tile) {
238
+ value: function emitEvent(layers, isVector) {
219
239
  var _this = this;
220
240
 
221
241
  layers.map(function (layer) {
@@ -223,12 +243,32 @@ var TileFactory = function () {
223
243
  layer.on('click', function (e) {
224
244
  _this.eventCache.click = 1;
225
245
 
226
- _this.getFeatureAndEmitEvent(layer, 'subLayerClick', e, isVector, tile);
246
+ if (_this.parentLayer.type === 'RasterLayer') {
247
+ var _e$lngLat = e.lngLat,
248
+ lng = _e$lngLat.lng,
249
+ lat = _e$lngLat.lat;
250
+
251
+ var tile = _this.getTile(lng, lat);
252
+
253
+ _this.getFeatureAndEmitEvent(layer, 'subLayerClick', e, isVector, tile);
254
+ } else {
255
+ _this.getFeatureAndEmitEvent(layer, 'subLayerClick', e);
256
+ }
227
257
  });
228
258
  layer.on('mousemove', function (e) {
229
259
  _this.eventCache.mousemove = 1;
230
260
 
231
- _this.getFeatureAndEmitEvent(layer, 'subLayerMouseMove', e, isVector, tile);
261
+ if (_this.parentLayer.type === 'RasterLayer') {
262
+ var _e$lngLat2 = e.lngLat,
263
+ lng = _e$lngLat2.lng,
264
+ lat = _e$lngLat2.lat;
265
+
266
+ var tile = _this.getTile(lng, lat);
267
+
268
+ _this.getFeatureAndEmitEvent(layer, 'subLayerMouseMove', e, isVector, tile);
269
+ } else {
270
+ _this.getFeatureAndEmitEvent(layer, 'subLayerMouseMove', e);
271
+ }
232
272
  });
233
273
  layer.on('mouseup', function (e) {
234
274
  _this.eventCache.mouseup = 1;
@@ -236,7 +276,17 @@ var TileFactory = function () {
236
276
  _this.getFeatureAndEmitEvent(layer, 'subLayerMouseUp', e);
237
277
  });
238
278
  layer.on('mouseenter', function (e) {
239
- _this.getFeatureAndEmitEvent(layer, 'subLayerMouseEnter', e);
279
+ if (_this.parentLayer.type === 'RasterLayer') {
280
+ var _e$lngLat3 = e.lngLat,
281
+ lng = _e$lngLat3.lng,
282
+ lat = _e$lngLat3.lat;
283
+
284
+ var tile = _this.getTile(lng, lat);
285
+
286
+ _this.getFeatureAndEmitEvent(layer, 'subLayerMouseMove', e, isVector, tile);
287
+ } else {
288
+ _this.getFeatureAndEmitEvent(layer, 'subLayerMouseEnter', e);
289
+ }
240
290
  });
241
291
  layer.on('mouseout', function (e) {
242
292
  _this.getFeatureAndEmitEvent(layer, 'subLayerMouseOut', e);
@@ -270,6 +320,7 @@ var TileFactory = function () {
270
320
  key: "getCombineFeature",
271
321
  value: function getCombineFeature(features) {
272
322
  var p = null;
323
+ var properties = features[0];
273
324
  features.map(function (feature) {
274
325
  var polygon = turf.polygon(feature.coordinates);
275
326
 
@@ -281,18 +332,28 @@ var TileFactory = function () {
281
332
  p = union(p, polygon);
282
333
  }
283
334
  });
335
+
336
+ if (properties) {
337
+ p.properties = _objectSpread({}, properties);
338
+ }
339
+
284
340
  return p;
285
341
  }
286
342
  }, {
287
343
  key: "getFeatureAndEmitEvent",
288
344
  value: function getFeatureAndEmitEvent(layer, eventName, e, isVector, tile) {
289
- var featureId = e.featureId;
290
- var features = this.getAllFeatures(featureId);
291
- e.feature = this.getCombineFeature(features);
292
-
293
345
  if (isVector === false) {
294
- e.pickedColors = readPixel(e.x, e.y, this.rendererService);
295
346
  e.value = readRasterValue(tile, this.mapService, e.x, e.y);
347
+ } else {
348
+ var featureId = e.featureId;
349
+ var features = this.getAllFeatures(featureId);
350
+
351
+ try {
352
+ e.feature = this.getCombineFeature(features);
353
+ } catch (err) {
354
+ console.warn('Combine Featuer Err! Return First Feature!');
355
+ e.feature = features[0];
356
+ }
296
357
  }
297
358
 
298
359
  this.parentLayer.emit(eventName, e);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/tile/tileFactory/base.ts"],"names":["Source","MaskLayer","getLayerShape","readPixel","readRasterValue","registerLayers","VectorLayer","turf","union","TileFactory","option","click","mousemove","mouseup","mousedown","contextmenu","parentLayer","parent","mapService","rendererService","tile","initOptions","layers","layerIDList","emptyData","features","featureId","vectorTileLayer","source","sourceLayer","data","Array","isArray","length","type","parser","tileLayerOption","L7Layer","mask","color","layerType","size","shape","FactoryTileLayer","layer","visible","isVisible","tileOrigin","l7TileOrigin","coord","l7TileCoord","getLayerInitOption","isVector","emitEvent","select","setStyleAttributeField","masklayer","bboxPolygon","push","addMaskLayer","styles","value","defaultValue","getDefautStyleAttributeField","params","parseScaleValue","field","values","callback","map","once","on","e","eventCache","getFeatureAndEmitEvent","handleOutsideEvent","p","feature","polygon","coordinates","eventName","getAllFeatures","getCombineFeature","pickedColors","x","y","emit","allLayers","tileLayer","children","getSource","dataArray","_id","coords","emitType","outSideEventTimer","clearTimeout","setTimeout"],"mappings":";;;;;;;;;AASA,OAAOA,MAAP,MAAmB,iBAAnB;AAEA,OAAOC,SAAP,MAAsB,YAAtB;AACA,SACEC,aADF,EAEEC,SAFF,EAGEC,eAHF,EAIEC,cAJF,QAKO,UALP;AAMA,OAAOC,WAAP,MAAwB,eAAxB;AAEA,OAAO,KAAKC,IAAZ,MAAsB,eAAtB;AACA,OAAOC,KAAP,MAAkB,aAAlB;;IAUqBC,W;AAenB,uBAAYC,MAAZ,EAAyC;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA,+CAVE,IAUF;;AAAA;;AAAA,wCAPpB;AACnBC,MAAAA,KAAK,EAAE,CADY;AAEnBC,MAAAA,SAAS,EAAE,CAFQ;AAGnBC,MAAAA,OAAO,EAAE,CAHU;AAInBC,MAAAA,SAAS,EAAE,CAJQ;AAKnBC,MAAAA,WAAW,EAAE;AALM,KAOoB;;AACvC,SAAKC,WAAL,GAAmBN,MAAM,CAACO,MAA1B;AACA,SAAKC,UAAL,GAAkBR,MAAM,CAACQ,UAAzB;AACA,SAAKC,eAAL,GAAuBT,MAAM,CAACS,eAA9B;AACD;;;;WAED,oBAAkBC,IAAlB,EAA8BC,WAA9B,EAAiE;AAC/D,aAAO;AACLC,QAAAA,MAAM,EAAE,EADH;AAELC,QAAAA,WAAW,EAAE;AAFR,OAAP;AAID;;;WAED,wBAAsBH,IAAtB,EAAkCC,WAAlC,EAAqE;AACnE,UAAMG,SAAS,GAAG;AAChBC,QAAAA,QAAQ,EAAE,EADM;AAEhBC,QAAAA,SAAS,EAAE,IAFK;AAGhBC,QAAAA,eAAe,EAAE,IAHD;AAIhBC,QAAAA,MAAM,EAAE;AAJQ,OAAlB;AAMA,UAAQC,WAAR,GAAmCR,WAAnC,CAAQQ,WAAR;AAAA,UAAqBH,SAArB,GAAmCL,WAAnC,CAAqBK,SAArB;;AACA,UAAI,CAACG,WAAL,EAAkB;AAChB,eAAOL,SAAP;AACD;;AACD,UAAMG,eAAe,GAAGP,IAAI,CAACU,IAAL,CAAUR,MAAV,CAAiBO,WAAjB,CAAxB;AACA,UAAMJ,QAAQ,GAAGE,eAAH,aAAGA,eAAH,uBAAGA,eAAe,CAAEF,QAAlC;;AACA,UAAI,EAAEM,KAAK,CAACC,OAAN,CAAcP,QAAd,KAA2BA,QAAQ,CAACQ,MAAT,GAAkB,CAA/C,CAAJ,EAAuD;AACrD,eAAOT,SAAP;AACD,OAFD,MAEO;AACL,YAAMI,MAAM,GAAG,IAAI5B,MAAJ,CACb;AACEkC,UAAAA,IAAI,EAAE,mBADR;AAEET,UAAAA,QAAQ,EAARA;AAFF,SADa,EAKb;AACEU,UAAAA,MAAM,EAAE;AACND,YAAAA,IAAI,EAAE,SADA;AAENR,YAAAA,SAAS,EAATA;AAFM;AADV,SALa,CAAf;AAaA,eAAO;AACLD,UAAAA,QAAQ,EAARA,QADK;AAELC,UAAAA,SAAS,EAATA,SAFK;AAGLC,UAAAA,eAAe,EAAfA,eAHK;AAILC,UAAAA,MAAM,EAANA;AAJK,SAAP;AAMD;AACF;;;WAED,qBAAmBQ,eAAnB,EAAsD;AACpD,UACEC,OADF,GAMID,eANJ,CACEC,OADF;AAAA,UAEEjB,IAFF,GAMIgB,eANJ,CAEEhB,IAFF;AAAA,UAGEC,WAHF,GAMIe,eANJ,CAGEf,WAHF;AAAA,UAIEM,eAJF,GAMIS,eANJ,CAIET,eAJF;AAAA,UAKEC,MALF,GAMIQ,eANJ,CAKER,MALF;AAOA,UAAQU,IAAR,GAAgDjB,WAAhD,CAAQiB,IAAR;AAAA,UAAcC,KAAd,GAAgDlB,WAAhD,CAAckB,KAAd;AAAA,UAAqBC,SAArB,GAAgDnB,WAAhD,CAAqBmB,SAArB;AAAA,UAAgCC,IAAhC,GAAgDpB,WAAhD,CAAgCoB,IAAhC;AAAA,UAAsCC,KAAtC,GAAgDrB,WAAhD,CAAsCqB,KAAtC;AACA,UAAMC,gBAAgB,GAAGN,OAAO,GAAGA,OAAH,GAAa/B,WAA7C;AACA,UAAMsC,KAAK,GAAG,IAAID,gBAAJ;AACZE,QAAAA,OAAO,EAAEzB,IAAI,CAAC0B,SADF;AAEZC,QAAAA,UAAU,EAAEpB,eAAF,aAAEA,eAAF,uBAAEA,eAAe,CAAEqB,YAFjB;AAGZC,QAAAA,KAAK,EAAEtB,eAAF,aAAEA,eAAF,uBAAEA,eAAe,CAAEuB;AAHZ,SAIT,KAAKC,kBAAL,CAAwB9B,WAAxB,CAJS,EAAd;;AAOA,UAAIuB,KAAK,CAACQ,QAAV,EAAoB;AAClB,aAAKC,SAAL,CAAe,CAACT,KAAD,CAAf;AACAA,QAAAA,KAAK,CAACV,IAAN,GAAaM,SAAb;AACAI,QAAAA,KAAK,CAACU,MAAN,CAAa,IAAb;AACD;;AAGDV,MAAAA,KAAK,CAAChB,MAAN,CAAaA,MAAb;AAGA,WAAK2B,sBAAL,CAA4BX,KAA5B,EAAmC,OAAnC,EAA4CF,KAA5C;AACA,WAAKa,sBAAL,CAA4BX,KAA5B,EAAmC,OAAnC,EAA4CL,KAA5C;AACA,WAAKgB,sBAAL,CAA4BX,KAA5B,EAAmC,MAAnC,EAA2CH,IAA3C;AAGA,UAAMnB,MAAM,GAAG,CAACsB,KAAD,CAAf;;AACA,UAAIN,IAAI,IAAIM,KAAK,CAACQ,QAAlB,EAA4B;AAC1B,YAAMI,SAAS,GAAG,IAAIvD,SAAJ,GACf2B,MADe,CACR;AACNM,UAAAA,IAAI,EAAE,mBADA;AAENT,UAAAA,QAAQ,EAAE,CAACL,IAAI,CAACqC,WAAN;AAFJ,SADQ,EAKff,KALe,CAKT,MALS,CAAlB;AAOApB,QAAAA,MAAM,CAACoC,IAAP,CAAYF,SAAZ;AAEAZ,QAAAA,KAAK,CAACe,YAAN,CAAmBH,SAAnB;AACD;;AAEDnD,MAAAA,cAAc,CAAC,KAAKW,WAAN,EAAmBM,MAAnB,CAAd;AAEA,WAAKA,MAAL,GAAc,CAACsB,KAAD,CAAd;AAEA,aAAOA,KAAP;AACD;;;WAED,qBAAmBgB,MAAnB,EAAwC;AACtC,aAAO,EAAP;AACD;;;WAED,sCAAoChB,KAApC,EAAmDV,IAAnD,EAAiE;AAC/D,cAAQA,IAAR;AACE,aAAK,MAAL;AACE,iBAAO,CAAP;;AACF,aAAK,OAAL;AACE,iBAAO,MAAP;;AACF,aAAK,OAAL;AACE,iBAAOhC,aAAa,CAAC,KAAKc,WAAL,CAAiBkB,IAAlB,EAAwBU,KAAxB,CAApB;;AACF;AACE,iBAAO,EAAP;AARJ;AAUD;;;WAED,gCACEA,KADF,EAEEV,IAFF,EAGE2B,KAHF,EAIE;AACA,UAAI9B,KAAK,CAACC,OAAN,CAAc6B,KAAd,CAAJ,EAA0B;AAExBjB,QAAAA,KAAK,CAACV,IAAD,CAAL,OAAAU,KAAK,qBAAUiB,KAAV,EAAL;AACA;AACD;;AACD,UAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;AAC7BjB,QAAAA,KAAK,CAACV,IAAD,CAAL,CAAY2B,KAAZ;AACA;AACD;;AACD,UAAMC,YAAY,GAAG,KAAKC,4BAAL,CAAkCnB,KAAlC,EAAyCV,IAAzC,CAArB;;AACA,UAAI,CAAC2B,KAAL,EAAY;AACVjB,QAAAA,KAAK,CAACV,IAAD,CAAL,CAAY4B,YAAZ;AACA,eAAOlB,KAAP;AACD;;AACD,UAAMoB,MAAM,GAAG,KAAKC,eAAL,CAAqBJ,KAArB,EAA4B3B,IAA5B,CAAf;;AACA,UAAI8B,MAAM,CAAC/B,MAAP,KAAkB,CAAtB,EAAyB;AACvBW,QAAAA,KAAK,CAACV,IAAD,CAAL,CAAY4B,YAAZ;AACD,OAFD,MAEO;AAELlB,QAAAA,KAAK,CAACV,IAAD,CAAL,OAAAU,KAAK,qBAAUoB,MAAV,EAAL;AACD;AACF;;;WAED,yBAA0BH,KAA1B,EAAuD3B,IAAvD,EAAqE;AACnE,UAAIA,IAAI,KAAK,OAAb,EAAsB;AACpB,YAAI,OAAO2B,KAAP,KAAiB,QAArB,EAA+B;AAC7B,iBAAO,CAACA,KAAD,CAAP;AACD,SAFD,MAEO,IAAIA,KAAJ,aAAIA,KAAJ,eAAIA,KAAK,CAAEK,KAAX,EAAkB;AACvB,iBAAO,CAACL,KAAD,aAACA,KAAD,uBAACA,KAAK,CAAEK,KAAR,CAAP;AACD,SAFM,MAEA;AACL,iBAAO,EAAP;AACD;AACF;;AACD,iBAAoCL,KAApC;AAAA,UAAQK,KAAR,QAAQA,KAAR;AAAA,UAAeC,MAAf,QAAeA,MAAf;AAAA,UAAuBC,QAAvB,QAAuBA,QAAvB;;AACA,UAAIF,KAAK,IAAIC,MAAT,IAAmBpC,KAAK,CAACC,OAAN,CAAcmC,MAAd,CAAvB,EAA8C;AAC5C,eAAO,CAACD,KAAD,EAAQC,MAAR,CAAP;AACD,OAFD,MAEO,IAAID,KAAK,IAAIE,QAAb,EAAuB;AAC5B,eAAO,CAACF,KAAD,EAAQE,QAAR,CAAP;AACD,OAFM,MAEA,IAAIF,KAAJ,EAAW;AAChB,eAAO,CAACA,KAAD,CAAP;AACD;;AACD,aAAO,EAAP;AACD;;;WAED,mBAAoB5C,MAApB,EAAsC8B,QAAtC,EAA0DhC,IAA1D,EAAsE;AAAA;;AACpEE,MAAAA,MAAM,CAAC+C,GAAP,CAAW,UAACzB,KAAD,EAAW;AACpBA,QAAAA,KAAK,CAAC0B,IAAN,CAAW,QAAX,EAAqB,YAAM;AACzB1B,UAAAA,KAAK,CAAC2B,EAAN,CAAS,OAAT,EAAkB,UAACC,CAAD,EAAO;AACvB,YAAA,KAAI,CAACC,UAAL,CAAgB9D,KAAhB,GAAwB,CAAxB;;AACA,YAAA,KAAI,CAAC+D,sBAAL,CACE9B,KADF,EAEE,eAFF,EAGE4B,CAHF,EAIEpB,QAJF,EAKEhC,IALF;AAOD,WATD;AAUAwB,UAAAA,KAAK,CAAC2B,EAAN,CAAS,WAAT,EAAsB,UAACC,CAAD,EAAO;AAC3B,YAAA,KAAI,CAACC,UAAL,CAAgB7D,SAAhB,GAA4B,CAA5B;;AACA,YAAA,KAAI,CAAC8D,sBAAL,CACE9B,KADF,EAEE,mBAFF,EAGE4B,CAHF,EAIEpB,QAJF,EAKEhC,IALF;AAOD,WATD;AAUAwB,UAAAA,KAAK,CAAC2B,EAAN,CAAS,SAAT,EAAoB,UAACC,CAAD,EAAO;AACzB,YAAA,KAAI,CAACC,UAAL,CAAgB5D,OAAhB,GAA0B,CAA1B;;AACA,YAAA,KAAI,CAAC6D,sBAAL,CAA4B9B,KAA5B,EAAmC,iBAAnC,EAAsD4B,CAAtD;AACD,WAHD;AAIA5B,UAAAA,KAAK,CAAC2B,EAAN,CAAS,YAAT,EAAuB,UAACC,CAAD,EAAO;AAC5B,YAAA,KAAI,CAACE,sBAAL,CAA4B9B,KAA5B,EAAmC,oBAAnC,EAAyD4B,CAAzD;AACD,WAFD;AAGA5B,UAAAA,KAAK,CAAC2B,EAAN,CAAS,UAAT,EAAqB,UAACC,CAAD,EAAO;AAC1B,YAAA,KAAI,CAACE,sBAAL,CAA4B9B,KAA5B,EAAmC,kBAAnC,EAAuD4B,CAAvD;AACD,WAFD;AAGA5B,UAAAA,KAAK,CAAC2B,EAAN,CAAS,WAAT,EAAsB,UAACC,CAAD,EAAO;AAC3B,YAAA,KAAI,CAACC,UAAL,CAAgB3D,SAAhB,GAA4B,CAA5B;;AACA,YAAA,KAAI,CAAC4D,sBAAL,CAA4B9B,KAA5B,EAAmC,mBAAnC,EAAwD4B,CAAxD;AACD,WAHD;AAIA5B,UAAAA,KAAK,CAAC2B,EAAN,CAAS,aAAT,EAAwB,UAACC,CAAD,EAAO;AAC7B,YAAA,KAAI,CAACC,UAAL,CAAgB1D,WAAhB,GAA8B,CAA9B;;AACA,YAAA,KAAI,CAAC2D,sBAAL,CAA4B9B,KAA5B,EAAmC,qBAAnC,EAA0D4B,CAA1D;AACD,WAHD;AAMA5B,UAAAA,KAAK,CAAC2B,EAAN,CAAS,SAAT,EAAoB,UAACC,CAAD;AAAA,mBAClB,KAAI,CAACG,kBAAL,CAAwB,OAAxB,EAAiC,iBAAjC,EAAoD/B,KAApD,EAA2D4B,CAA3D,CADkB;AAAA,WAApB;AAGA5B,UAAAA,KAAK,CAAC2B,EAAN,CAAS,WAAT,EAAsB,UAACC,CAAD;AAAA,mBACpB,KAAI,CAACG,kBAAL,CAAwB,SAAxB,EAAmC,mBAAnC,EAAwD/B,KAAxD,EAA+D4B,CAA/D,CADoB;AAAA,WAAtB;AAGA5B,UAAAA,KAAK,CAAC2B,EAAN,CAAS,aAAT,EAAwB,UAACC,CAAD;AAAA,mBACtB,KAAI,CAACG,kBAAL,CAAwB,WAAxB,EAAqC,qBAArC,EAA4D/B,KAA5D,EAAmE4B,CAAnE,CADsB;AAAA,WAAxB;AAGA5B,UAAAA,KAAK,CAAC2B,EAAN,CAAS,eAAT,EAA0B,UAACC,CAAD;AAAA,mBACxB,KAAI,CAACG,kBAAL,CACE,aADF,EAEE,uBAFF,EAGE/B,KAHF,EAIE4B,CAJF,CADwB;AAAA,WAA1B;AAQD,SA1DD;AA2DD,OA5DD;AA6DD;;;WAED,2BAA4B/C,QAA5B,EAAwD;AACtD,UAAImD,CAAM,GAAG,IAAb;AACAnD,MAAAA,QAAQ,CAAC4C,GAAT,CAAa,UAACQ,OAAD,EAAa;AACxB,YAAMC,OAAO,GAAGvE,IAAI,CAACuE,OAAL,CAAaD,OAAO,CAACE,WAArB,CAAhB;;AACA,YAAIH,CAAC,KAAK,IAAV,EAAgB;AACdA,UAAAA,CAAC,GAAGE,OAAJ;AACD;;AACD;AACEF,UAAAA,CAAC,GAAGpE,KAAK,CAACoE,CAAD,EAAIE,OAAJ,CAAT;AACD;AACF,OARD;AASA,aAAOF,CAAP;AACD;;;WAED,gCACEhC,KADF,EAEEoC,SAFF,EAGER,CAHF,EAIEpB,QAJF,EAKEhC,IALF,EAME;AACA,UAAMM,SAAS,GAAG8C,CAAC,CAAC9C,SAApB;AACA,UAAMD,QAAQ,GAAG,KAAKwD,cAAL,CAAoBvD,SAApB,CAAjB;AACA8C,MAAAA,CAAC,CAACK,OAAF,GAAY,KAAKK,iBAAL,CAAuBzD,QAAvB,CAAZ;;AAEA,UAAI2B,QAAQ,KAAK,KAAjB,EAAwB;AAEtBoB,QAAAA,CAAC,CAACW,YAAF,GAAiBhF,SAAS,CAACqE,CAAC,CAACY,CAAH,EAAMZ,CAAC,CAACa,CAAR,EAAW,KAAKlE,eAAhB,CAA1B;AAEAqD,QAAAA,CAAC,CAACX,KAAF,GAAUzD,eAAe,CAACgB,IAAD,EAAO,KAAKF,UAAZ,EAAwBsD,CAAC,CAACY,CAA1B,EAA6BZ,CAAC,CAACa,CAA/B,CAAzB;AACD;;AACD,WAAKrE,WAAL,CAAiBsE,IAAjB,CAAsBN,SAAtB,EAAiCR,CAAjC;AACD;;;WAED,wBAAuB9C,SAAvB,EAA0C;AACxC,UAAM6D,SAAmB,GAAG,KAAKvE,WAAL,CAAiBwE,SAAjB,CAA2BC,QAAvD;AACA,UAAMhE,QAA0B,GAAG,EAAnC;AACA8D,MAAAA,SAAS,CAAClB,GAAV,CAAc,UAACzB,KAAD,EAAW;AACvB,YAAMhB,MAAM,GAAGgB,KAAK,CAAC8C,SAAN,EAAf;AACA9D,QAAAA,MAAM,CAACE,IAAP,CAAY6D,SAAZ,CAAsBtB,GAAtB,CAA0B,UAACQ,OAAD,EAAa;AACrC,cAAIA,OAAO,CAACe,GAAR,KAAgBlE,SAApB,EAA+B;AAC7BD,YAAAA,QAAQ,CAACiC,IAAT,CAAcmB,OAAd;AACD;AACF,SAJD;AAKD,OAPD;AAQA,aAAOpD,QAAP;AACD;;;WAED,4BAA2BJ,WAA3B,EAA8D;AAC5D,UAAMX,MAAM,qBAAQW,WAAR,CAAZ;;AACA,aAAOX,MAAM,CAAC6B,KAAd;AACA,aAAO7B,MAAM,CAACgC,KAAd;AACA,aAAOhC,MAAM,CAAC+B,IAAd;AACA,aAAO/B,MAAM,CAACmF,MAAd;AACA,aAAOnF,MAAM,CAACmB,WAAd;AACA,aAAOnB,MAAM,CAACmF,MAAd;AACA,aAAOnF,MAAP;AACD;;;WAED,4BACEwB,IADF,EAEE4D,QAFF,EAGElD,KAHF,EAIE4B,CAJF,EAKE;AAAA;;AACA,UAAI,KAAKuB,iBAAT,EAA4B;AAC1BC,QAAAA,YAAY,CAAC,KAAKD,iBAAN,CAAZ;AACA,aAAKA,iBAAL,GAAyB,IAAzB;AACD;;AACD,WAAKA,iBAAL,GAAyBE,UAAU,CAAC,YAAM;AACxC,YAAI,MAAI,CAACxB,UAAL,CAAgBvC,IAAhB,IAAwB,CAA5B,EAA+B;AAC7B,UAAA,MAAI,CAACuC,UAAL,CAAgBvC,IAAhB,IAAwB,CAAxB;AACD,SAFD,MAEO;AACL,UAAA,MAAI,CAACwC,sBAAL,CAA4B9B,KAA5B,EAAmCkD,QAAnC,EAA6CtB,CAA7C;AACD;AACF,OANkC,EAMhC,EANgC,CAAnC;AAOD;;;;;;SArUkB/D,W","sourcesContent":["import {\n ILayer,\n IMapService,\n IParseDataItem,\n IRendererService,\n IScaleValue,\n ISubLayerInitOptions,\n ScaleAttributeType,\n} from '@antv/l7-core';\nimport Source from '@antv/l7-source';\nimport { Tile } from '@antv/l7-utils';\nimport MaskLayer from '../../mask';\nimport {\n getLayerShape,\n readPixel,\n readRasterValue,\n registerLayers,\n} from '../utils';\nimport VectorLayer from './vectorLayer';\n\nimport * as turf from '@turf/helpers';\nimport union from '@turf/union';\nimport {\n CacheEvent,\n ILayerTileConfig,\n ITileFactory,\n ITileFactoryOptions,\n ITileStyles,\n Timeout,\n} from '../interface';\n\nexport default class TileFactory implements ITileFactory {\n public type: string;\n public parentLayer: ILayer;\n public mapService: IMapService;\n public rendererService: IRendererService;\n public outSideEventTimer: Timeout | null = null;\n protected layers: ILayer[];\n // 用于记录图层内事件,辅助判断图层外事件逻辑\n private eventCache = {\n click: 0,\n mousemove: 0,\n mouseup: 0,\n mousedown: 0,\n contextmenu: 0,\n };\n constructor(option: ITileFactoryOptions) {\n this.parentLayer = option.parent;\n this.mapService = option.mapService;\n this.rendererService = option.rendererService;\n }\n\n public createTile(tile: Tile, initOptions: ISubLayerInitOptions) {\n return {\n layers: [] as ILayer[],\n layerIDList: [] as string[],\n };\n }\n\n public getFeatureData(tile: Tile, initOptions: ISubLayerInitOptions) {\n const emptyData = {\n features: [],\n featureId: null,\n vectorTileLayer: null,\n source: null,\n };\n const { sourceLayer, featureId } = initOptions;\n if (!sourceLayer) {\n return emptyData;\n }\n const vectorTileLayer = tile.data.layers[sourceLayer];\n const features = vectorTileLayer?.features;\n if (!(Array.isArray(features) && features.length > 0)) {\n return emptyData;\n } else {\n const source = new Source(\n {\n type: 'FeatureCollection',\n features,\n },\n {\n parser: {\n type: 'geojson',\n featureId,\n },\n },\n );\n\n return {\n features,\n featureId,\n vectorTileLayer,\n source,\n };\n }\n }\n\n public createLayer(tileLayerOption: ILayerTileConfig) {\n const {\n L7Layer,\n tile,\n initOptions,\n vectorTileLayer,\n source,\n } = tileLayerOption;\n const { mask, color, layerType, size, shape } = initOptions;\n const FactoryTileLayer = L7Layer ? L7Layer : VectorLayer;\n const layer = new FactoryTileLayer({\n visible: tile.isVisible,\n tileOrigin: vectorTileLayer?.l7TileOrigin,\n coord: vectorTileLayer?.l7TileCoord,\n ...this.getLayerInitOption(initOptions),\n });\n // vector layer set config\n if (layer.isVector) {\n this.emitEvent([layer]);\n layer.type = layerType;\n layer.select(true);\n }\n\n // set source\n layer.source(source);\n\n // set scale attribute field\n this.setStyleAttributeField(layer, 'shape', shape);\n this.setStyleAttributeField(layer, 'color', color);\n this.setStyleAttributeField(layer, 'size', size);\n\n // set mask\n const layers = [layer];\n if (mask && layer.isVector) {\n const masklayer = new MaskLayer()\n .source({\n type: 'FeatureCollection',\n features: [tile.bboxPolygon],\n })\n .shape('fill');\n\n layers.push(masklayer as VectorLayer);\n\n layer.addMaskLayer(masklayer);\n }\n // regist layer\n registerLayers(this.parentLayer, layers);\n\n this.layers = [layer];\n\n return layer;\n }\n\n public updateStyle(styles: ITileStyles) {\n return '';\n }\n\n public getDefautStyleAttributeField(layer: ILayer, type: string) {\n switch (type) {\n case 'size':\n return 2;\n case 'color':\n return '#fff';\n case 'shape':\n return getLayerShape(this.parentLayer.type, layer);\n default:\n return '';\n }\n }\n\n public setStyleAttributeField(\n layer: ILayer,\n type: ScaleAttributeType,\n value: IScaleValue | undefined | string | string[],\n ) {\n if (Array.isArray(value)) {\n // @ts-ignore\n layer[type](...value);\n return;\n }\n if (typeof value === 'string') {\n layer[type](value);\n return;\n }\n const defaultValue = this.getDefautStyleAttributeField(layer, type);\n if (!value) {\n layer[type](defaultValue);\n return layer;\n }\n const params = this.parseScaleValue(value, type);\n if (params.length === 0) {\n layer[type](defaultValue);\n } else {\n // @ts-ignore\n layer[type](...params);\n }\n }\n\n protected parseScaleValue(value: IScaleValue | string, type: string) {\n if (type === 'shape') {\n if (typeof value === 'string') {\n return [value];\n } else if (value?.field) {\n return [value?.field];\n } else {\n return [];\n }\n }\n const { field, values, callback } = value as IScaleValue;\n if (field && values && Array.isArray(values)) {\n return [field, values];\n } else if (field && callback) {\n return [field, callback];\n } else if (field) {\n return [field];\n }\n return [];\n }\n\n protected emitEvent(layers: ILayer[], isVector?: boolean, tile?: any) {\n layers.map((layer) => {\n layer.once('inited', () => {\n layer.on('click', (e) => {\n this.eventCache.click = 1;\n this.getFeatureAndEmitEvent(\n layer,\n 'subLayerClick',\n e,\n isVector,\n tile,\n );\n });\n layer.on('mousemove', (e) => {\n this.eventCache.mousemove = 1;\n this.getFeatureAndEmitEvent(\n layer,\n 'subLayerMouseMove',\n e,\n isVector,\n tile,\n );\n });\n layer.on('mouseup', (e) => {\n this.eventCache.mouseup = 1;\n this.getFeatureAndEmitEvent(layer, 'subLayerMouseUp', e);\n });\n layer.on('mouseenter', (e) => {\n this.getFeatureAndEmitEvent(layer, 'subLayerMouseEnter', e);\n });\n layer.on('mouseout', (e) => {\n this.getFeatureAndEmitEvent(layer, 'subLayerMouseOut', e);\n });\n layer.on('mousedown', (e) => {\n this.eventCache.mousedown = 1;\n this.getFeatureAndEmitEvent(layer, 'subLayerMouseDown', e);\n });\n layer.on('contextmenu', (e) => {\n this.eventCache.contextmenu = 1;\n this.getFeatureAndEmitEvent(layer, 'subLayerContextmenu', e);\n });\n\n // out side\n layer.on('unclick', (e) =>\n this.handleOutsideEvent('click', 'subLayerUnClick', layer, e),\n );\n layer.on('unmouseup', (e) =>\n this.handleOutsideEvent('mouseup', 'subLayerUnMouseUp', layer, e),\n );\n layer.on('unmousedown', (e) =>\n this.handleOutsideEvent('mousedown', 'subLayerUnMouseDown', layer, e),\n );\n layer.on('uncontextmenu', (e) =>\n this.handleOutsideEvent(\n 'contextmenu',\n 'subLayerUnContextmenu',\n layer,\n e,\n ),\n );\n });\n });\n }\n\n protected getCombineFeature(features: IParseDataItem[]) {\n let p: any = null;\n features.map((feature) => {\n const polygon = turf.polygon(feature.coordinates);\n if (p === null) {\n p = polygon;\n }\n {\n p = union(p, polygon);\n }\n });\n return p;\n }\n\n protected getFeatureAndEmitEvent(\n layer: ILayer,\n eventName: string,\n e: any,\n isVector?: boolean,\n tile?: any,\n ) {\n const featureId = e.featureId;\n const features = this.getAllFeatures(featureId);\n e.feature = this.getCombineFeature(features);\n\n if (isVector === false) {\n // raster tile get rgb\n e.pickedColors = readPixel(e.x, e.y, this.rendererService);\n // raster tile origin value\n e.value = readRasterValue(tile, this.mapService, e.x, e.y);\n }\n this.parentLayer.emit(eventName, e);\n }\n\n private getAllFeatures(featureId: number) {\n const allLayers: ILayer[] = this.parentLayer.tileLayer.children;\n const features: IParseDataItem[] = [];\n allLayers.map((layer) => {\n const source = layer.getSource();\n source.data.dataArray.map((feature) => {\n if (feature._id === featureId) {\n features.push(feature);\n }\n });\n });\n return features;\n }\n\n private getLayerInitOption(initOptions: ISubLayerInitOptions) {\n const option = { ...initOptions };\n delete option.color;\n delete option.shape;\n delete option.size;\n delete option.coords;\n delete option.sourceLayer;\n delete option.coords;\n return option;\n }\n\n private handleOutsideEvent(\n type: CacheEvent,\n emitType: string,\n layer: ILayer,\n e: any,\n ) {\n if (this.outSideEventTimer) {\n clearTimeout(this.outSideEventTimer);\n this.outSideEventTimer = null;\n }\n this.outSideEventTimer = setTimeout(() => {\n if (this.eventCache[type] > 0) {\n this.eventCache[type] = 0;\n } else {\n this.getFeatureAndEmitEvent(layer, emitType, e);\n }\n }, 64);\n }\n}\n"],"file":"base.js"}
1
+ {"version":3,"sources":["../../../src/tile/tileFactory/base.ts"],"names":["Source","osmLonLat2TileXY","MaskLayer","getLayerShape","readRasterValue","registerLayers","VectorLayer","turf","union","TileFactory","option","click","mousemove","mouseup","mousedown","contextmenu","parentLayer","parent","mapService","rendererService","source","getSource","zoomOffset","parser","tilesetManager","tileset","tile","initOptions","layers","layerIDList","emptyData","features","featureId","vectorTileLayer","sourceLayer","data","Array","isArray","length","type","tileLayerOption","L7Layer","mask","color","layerType","size","shape","FactoryTileLayer","layer","visible","isVisible","tileOrigin","l7TileOrigin","coord","l7TileCoord","getLayerInitOption","isVector","emitEvent","select","setStyleAttributeField","masklayer","bboxPolygon","push","addMaskLayer","styles","value","defaultValue","getDefautStyleAttributeField","params","parseScaleValue","field","values","callback","lng","lat","zoom","getZoom","z","Math","ceil","xy","tiles","filter","t","key","map","once","on","e","eventCache","lngLat","getTile","getFeatureAndEmitEvent","handleOutsideEvent","p","properties","feature","polygon","coordinates","eventName","x","y","getAllFeatures","getCombineFeature","err","console","warn","emit","allLayers","tileLayer","children","dataArray","_id","coords","emitType","outSideEventTimer","clearTimeout","setTimeout"],"mappings":"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","sourcesContent":["import {\n ILayer,\n IMapService,\n IParseDataItem,\n IRendererService,\n IScaleValue,\n ISubLayerInitOptions,\n ScaleAttributeType,\n} from '@antv/l7-core';\nimport Source from '@antv/l7-source';\nimport { osmLonLat2TileXY, Tile, TilesetManager } from '@antv/l7-utils';\nimport MaskLayer from '../../mask';\nimport {\n getLayerShape,\n readPixel,\n readRasterValue,\n registerLayers,\n} from '../utils';\nimport VectorLayer from './vectorLayer';\n\nimport * as turf from '@turf/helpers';\nimport union from '@turf/union';\nimport {\n CacheEvent,\n ILayerTileConfig,\n ITileFactory,\n ITileFactoryOptions,\n ITileStyles,\n Timeout,\n} from '../interface';\n\nexport default class TileFactory implements ITileFactory {\n public type: string;\n public parentLayer: ILayer;\n public mapService: IMapService;\n public rendererService: IRendererService;\n public outSideEventTimer: Timeout | null = null;\n protected zoomOffset: number;\n protected tilesetManager: TilesetManager;\n protected layers: ILayer[];\n // 用于记录图层内事件,辅助判断图层外事件逻辑\n private eventCache = {\n click: 0,\n mousemove: 0,\n mouseup: 0,\n mousedown: 0,\n contextmenu: 0,\n };\n constructor(option: ITileFactoryOptions) {\n this.parentLayer = option.parent;\n this.mapService = option.mapService;\n this.rendererService = option.rendererService;\n\n const source = this.parentLayer.getSource();\n this.zoomOffset = source.parser.zoomOffset || 0;\n this.tilesetManager = source.tileset as TilesetManager;\n }\n\n public createTile(tile: Tile, initOptions: ISubLayerInitOptions) {\n return {\n layers: [] as ILayer[],\n layerIDList: [] as string[],\n };\n }\n\n public getFeatureData(tile: Tile, initOptions: ISubLayerInitOptions) {\n const emptyData = {\n features: [],\n featureId: null,\n vectorTileLayer: null,\n source: null,\n };\n const { sourceLayer, featureId } = initOptions;\n if (!sourceLayer) {\n return emptyData;\n }\n const vectorTileLayer = tile.data.layers[sourceLayer];\n const features = vectorTileLayer?.features;\n if (!(Array.isArray(features) && features.length > 0)) {\n return emptyData;\n } else {\n const source = new Source(\n {\n type: 'FeatureCollection',\n features,\n },\n {\n parser: {\n type: 'geojson',\n featureId,\n },\n },\n );\n\n return {\n features,\n featureId,\n vectorTileLayer,\n source,\n };\n }\n }\n\n public createLayer(tileLayerOption: ILayerTileConfig) {\n const {\n L7Layer,\n tile,\n initOptions,\n vectorTileLayer,\n source,\n } = tileLayerOption;\n const { mask, color, layerType, size, shape } = initOptions;\n const FactoryTileLayer = L7Layer ? L7Layer : VectorLayer;\n const layer = new FactoryTileLayer({\n visible: tile.isVisible,\n tileOrigin: vectorTileLayer?.l7TileOrigin,\n coord: vectorTileLayer?.l7TileCoord,\n ...this.getLayerInitOption(initOptions),\n });\n // vector layer set config\n if (layer.isVector) {\n this.emitEvent([layer]);\n layer.type = layerType;\n layer.select(true);\n }\n\n // set source\n layer.source(source);\n\n // set scale attribute field\n this.setStyleAttributeField(layer, 'shape', shape);\n this.setStyleAttributeField(layer, 'color', color);\n this.setStyleAttributeField(layer, 'size', size);\n\n // set mask\n const layers = [layer];\n if (mask && layer.isVector) {\n const masklayer = new MaskLayer()\n .source({\n type: 'FeatureCollection',\n features: [tile.bboxPolygon],\n })\n .shape('fill');\n\n layers.push(masklayer as VectorLayer);\n\n layer.addMaskLayer(masklayer);\n }\n // regist layer\n registerLayers(this.parentLayer, layers);\n\n this.layers = [layer];\n\n return layer;\n }\n\n public updateStyle(styles: ITileStyles) {\n return '';\n }\n\n public getDefautStyleAttributeField(layer: ILayer, type: string) {\n switch (type) {\n case 'size':\n return 2;\n case 'color':\n return '#fff';\n case 'shape':\n return getLayerShape(this.parentLayer.type, layer);\n default:\n return '';\n }\n }\n\n public setStyleAttributeField(\n layer: ILayer,\n type: ScaleAttributeType,\n value: IScaleValue | undefined | string | string[],\n ) {\n if (Array.isArray(value)) {\n // @ts-ignore\n layer[type](...value);\n return;\n }\n if (typeof value === 'string') {\n layer[type](value);\n return;\n }\n const defaultValue = this.getDefautStyleAttributeField(layer, type);\n if (!value) {\n layer[type](defaultValue);\n return layer;\n }\n const params = this.parseScaleValue(value, type);\n if (params.length === 0) {\n layer[type](defaultValue);\n } else {\n // @ts-ignore\n layer[type](...params);\n }\n }\n\n protected parseScaleValue(value: IScaleValue | string, type: string) {\n if (type === 'shape') {\n if (typeof value === 'string') {\n return [value];\n } else if (value?.field) {\n return [value?.field];\n } else {\n return [];\n }\n }\n const { field, values, callback } = value as IScaleValue;\n if (field && values && Array.isArray(values)) {\n return [field, values];\n } else if (field && callback) {\n return [field, callback];\n } else if (field) {\n return [field];\n }\n return [];\n }\n\n protected getTile(lng: number, lat: number) {\n const zoom = this.mapService.getZoom();\n const z = Math.ceil(zoom) + this.zoomOffset;\n const xy = osmLonLat2TileXY(lng, lat, z);\n\n const tiles = this.tilesetManager.tiles.filter(\n (t) => t.key === `${xy[0]},${xy[1]},${z}`,\n );\n const tile = tiles[0];\n return tile;\n }\n\n protected emitEvent(layers: ILayer[], isVector?: boolean) {\n layers.map((layer) => {\n layer.once('inited', () => {\n layer.on('click', (e) => {\n this.eventCache.click = 1;\n if (this.parentLayer.type === 'RasterLayer') {\n const { lng, lat } = e.lngLat;\n const tile = this.getTile(lng, lat);\n this.getFeatureAndEmitEvent(\n layer,\n 'subLayerClick',\n e,\n isVector,\n tile,\n );\n } else {\n this.getFeatureAndEmitEvent(layer, 'subLayerClick', e);\n }\n });\n\n layer.on('mousemove', (e) => {\n this.eventCache.mousemove = 1;\n if (this.parentLayer.type === 'RasterLayer') {\n const { lng, lat } = e.lngLat;\n const tile = this.getTile(lng, lat);\n this.getFeatureAndEmitEvent(\n layer,\n 'subLayerMouseMove',\n e,\n isVector,\n tile,\n );\n } else {\n this.getFeatureAndEmitEvent(layer, 'subLayerMouseMove', e);\n }\n });\n layer.on('mouseup', (e) => {\n this.eventCache.mouseup = 1;\n this.getFeatureAndEmitEvent(layer, 'subLayerMouseUp', e);\n });\n layer.on('mouseenter', (e) => {\n if (this.parentLayer.type === 'RasterLayer') {\n const { lng, lat } = e.lngLat;\n const tile = this.getTile(lng, lat);\n this.getFeatureAndEmitEvent(\n layer,\n 'subLayerMouseMove',\n e,\n isVector,\n tile,\n );\n } else {\n this.getFeatureAndEmitEvent(layer, 'subLayerMouseEnter', e);\n }\n });\n layer.on('mouseout', (e) => {\n this.getFeatureAndEmitEvent(layer, 'subLayerMouseOut', e);\n });\n layer.on('mousedown', (e) => {\n this.eventCache.mousedown = 1;\n this.getFeatureAndEmitEvent(layer, 'subLayerMouseDown', e);\n });\n layer.on('contextmenu', (e) => {\n this.eventCache.contextmenu = 1;\n this.getFeatureAndEmitEvent(layer, 'subLayerContextmenu', e);\n });\n\n // out side\n layer.on('unclick', (e) =>\n this.handleOutsideEvent('click', 'subLayerUnClick', layer, e),\n );\n layer.on('unmouseup', (e) =>\n this.handleOutsideEvent('mouseup', 'subLayerUnMouseUp', layer, e),\n );\n layer.on('unmousedown', (e) =>\n this.handleOutsideEvent('mousedown', 'subLayerUnMouseDown', layer, e),\n );\n layer.on('uncontextmenu', (e) =>\n this.handleOutsideEvent(\n 'contextmenu',\n 'subLayerUnContextmenu',\n layer,\n e,\n ),\n );\n });\n });\n }\n\n protected getCombineFeature(features: IParseDataItem[]) {\n let p: any = null;\n const properties = features[0];\n features.map((feature) => {\n const polygon = turf.polygon(feature.coordinates);\n if (p === null) {\n p = polygon;\n }\n {\n p = union(p, polygon);\n }\n });\n if (properties) {\n p.properties = { ...properties };\n }\n return p;\n }\n\n protected getFeatureAndEmitEvent(\n layer: ILayer,\n eventName: string,\n e: any,\n isVector?: boolean,\n tile?: any,\n ) {\n if (isVector === false) {\n // raster tile get rgb\n // e.pickedColors = readPixel(e.x, e.y, this.rendererService);\n // raster tile origin value\n e.value = readRasterValue(tile, this.mapService, e.x, e.y);\n } else {\n // VectorLayer\n const featureId = e.featureId;\n const features = this.getAllFeatures(featureId);\n try {\n e.feature = this.getCombineFeature(features);\n } catch (err) {\n console.warn('Combine Featuer Err! Return First Feature!');\n e.feature = features[0];\n }\n }\n this.parentLayer.emit(eventName, e);\n }\n\n private getAllFeatures(featureId: number) {\n const allLayers: ILayer[] = this.parentLayer.tileLayer.children;\n const features: IParseDataItem[] = [];\n allLayers.map((layer) => {\n const source = layer.getSource();\n source.data.dataArray.map((feature) => {\n if (feature._id === featureId) {\n features.push(feature);\n }\n });\n });\n return features;\n }\n\n private getLayerInitOption(initOptions: ISubLayerInitOptions) {\n const option = { ...initOptions };\n delete option.color;\n delete option.shape;\n delete option.size;\n delete option.coords;\n delete option.sourceLayer;\n delete option.coords;\n return option;\n }\n\n private handleOutsideEvent(\n type: CacheEvent,\n emitType: string,\n layer: ILayer,\n e: any,\n ) {\n if (this.outSideEventTimer) {\n clearTimeout(this.outSideEventTimer);\n this.outSideEventTimer = null;\n }\n this.outSideEventTimer = setTimeout(() => {\n if (this.eventCache[type] > 0) {\n this.eventCache[type] = 0;\n } else {\n this.getFeatureAndEmitEvent(layer, emitType, e);\n }\n }, 64);\n }\n}\n"],"file":"base.js"}
@@ -59,7 +59,7 @@ var RasterTiffTile = function (_TileFactory) {
59
59
  clampLow: clampLow,
60
60
  rampColors: rampColors
61
61
  });
62
- this.emitEvent([layer], false, tile);
62
+ this.emitEvent([layer], false);
63
63
  registerLayers(this.parentLayer, [layer]);
64
64
  return {
65
65
  layers: [layer],
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/tile/tileFactory/rasterData.ts"],"names":["registerLayers","TileFactory","RasterDataLayer","RasterTiffTile","option","parentLayer","parent","tile","initOptions","opacity","domain","clampHigh","clampLow","rampColors","mask","tiffdata","data","layer","visible","isVisible","source","parser","type","width","height","extent","bboxPolygon","bbox","style","emitEvent","layers","layerIDList","id"],"mappings":";;;;;;;;;;;;AAGA,SAASA,cAAT,QAA+B,UAA/B;AACA,OAAOC,WAAP,MAAwB,QAAxB;AACA,OAAOC,eAAP,MAA4B,mBAA5B;;IAEqBC,c;;;;;AAGnB,0BAAYC,MAAZ,EAAyC;AAAA;;AAAA;;AACvC,8BAAMA,MAAN;;AADuC;;AAEvC,UAAKC,WAAL,GAAmBD,MAAM,CAACE,MAA1B;AAFuC;AAGxC;;;;WAED,oBAAkBC,IAAlB,EAA8BC,WAA9B,EAAiE;AAC/D,UACEC,OADF,GAOID,WAPJ,CACEC,OADF;AAAA,UAEEC,MAFF,GAOIF,WAPJ,CAEEE,MAFF;AAAA,UAGEC,SAHF,GAOIH,WAPJ,CAGEG,SAHF;AAAA,UAIEC,QAJF,GAOIJ,WAPJ,CAIEI,QAJF;AAAA,UAKEC,UALF,GAOIL,WAPJ,CAKEK,UALF;AAAA,UAMEC,IANF,GAOIN,WAPJ,CAMEM,IANF;AAQA,UAAMC,QAAQ,GAAGR,IAAI,CAACS,IAAtB;AACA,UAAMC,KAAK,GAAG,IAAIf,eAAJ,CAAoB;AAChCgB,QAAAA,OAAO,EAAEX,IAAI,CAACY,SADkB;AAEhCL,QAAAA,IAAI,EAAJA;AAFgC,OAApB,EAIXM,MAJW,CAIJL,QAAQ,CAACC,IAJL,EAIW;AACrBK,QAAAA,MAAM,EAAE;AACNC,UAAAA,IAAI,EAAE,QADA;AAENC,UAAAA,KAAK,EAAER,QAAQ,CAACQ,KAFV;AAGNC,UAAAA,MAAM,EAAET,QAAQ,CAACS,MAHX;AAINC,UAAAA,MAAM,EAAElB,IAAI,CAACmB,WAAL,CAAiBC;AAJnB;AADa,OAJX,EAYXC,KAZW,CAYL;AACLnB,QAAAA,OAAO,EAAPA,OADK;AAELC,QAAAA,MAAM,EAANA,MAFK;AAGLC,QAAAA,SAAS,EAATA,SAHK;AAILC,QAAAA,QAAQ,EAARA,QAJK;AAKLC,QAAAA,UAAU,EAAVA;AALK,OAZK,CAAd;AAmBA,WAAKgB,SAAL,CAAe,CAACZ,KAAD,CAAf,EAAwB,KAAxB,EAA+BV,IAA/B;AAEAP,MAAAA,cAAc,CAAC,KAAKK,WAAN,EAAmB,CAACY,KAAD,CAAnB,CAAd;AAEA,aAAO;AACLa,QAAAA,MAAM,EAAE,CAACb,KAAD,CADH;AAELc,QAAAA,WAAW,EAAE,CAACd,KAAK,CAACe,EAAP;AAFR,OAAP;AAID;;;;EA7CyC/B,W;;SAAvBE,c","sourcesContent":["import { ILayer, ISubLayerInitOptions } from '@antv/l7-core';\nimport { Tile } from '@antv/l7-utils';\nimport { ITileFactoryOptions } from '../interface';\nimport { registerLayers } from '../utils';\nimport TileFactory from './base';\nimport RasterDataLayer from './rasterDataLayer';\n\nexport default class RasterTiffTile extends TileFactory {\n public parentLayer: ILayer;\n\n constructor(option: ITileFactoryOptions) {\n super(option);\n this.parentLayer = option.parent;\n }\n\n public createTile(tile: Tile, initOptions: ISubLayerInitOptions) {\n const {\n opacity,\n domain,\n clampHigh,\n clampLow,\n rampColors,\n mask,\n } = initOptions;\n const tiffdata = tile.data;\n const layer = new RasterDataLayer({\n visible: tile.isVisible,\n mask,\n })\n .source(tiffdata.data, {\n parser: {\n type: 'raster',\n width: tiffdata.width,\n height: tiffdata.height,\n extent: tile.bboxPolygon.bbox,\n },\n })\n .style({\n opacity,\n domain,\n clampHigh,\n clampLow,\n rampColors,\n });\n this.emitEvent([layer], false, tile);\n\n registerLayers(this.parentLayer, [layer]);\n\n return {\n layers: [layer],\n layerIDList: [layer.id],\n };\n }\n}\n"],"file":"rasterData.js"}
1
+ {"version":3,"sources":["../../../src/tile/tileFactory/rasterData.ts"],"names":["registerLayers","TileFactory","RasterDataLayer","RasterTiffTile","option","parentLayer","parent","tile","initOptions","opacity","domain","clampHigh","clampLow","rampColors","mask","tiffdata","data","layer","visible","isVisible","source","parser","type","width","height","extent","bboxPolygon","bbox","style","emitEvent","layers","layerIDList","id"],"mappings":";;;;;;;;;;;;AAGA,SAASA,cAAT,QAA+B,UAA/B;AACA,OAAOC,WAAP,MAAwB,QAAxB;AACA,OAAOC,eAAP,MAA4B,mBAA5B;;IAEqBC,c;;;;;AAGnB,0BAAYC,MAAZ,EAAyC;AAAA;;AAAA;;AACvC,8BAAMA,MAAN;;AADuC;;AAEvC,UAAKC,WAAL,GAAmBD,MAAM,CAACE,MAA1B;AAFuC;AAGxC;;;;WAED,oBAAkBC,IAAlB,EAA8BC,WAA9B,EAAiE;AAC/D,UACEC,OADF,GAOID,WAPJ,CACEC,OADF;AAAA,UAEEC,MAFF,GAOIF,WAPJ,CAEEE,MAFF;AAAA,UAGEC,SAHF,GAOIH,WAPJ,CAGEG,SAHF;AAAA,UAIEC,QAJF,GAOIJ,WAPJ,CAIEI,QAJF;AAAA,UAKEC,UALF,GAOIL,WAPJ,CAKEK,UALF;AAAA,UAMEC,IANF,GAOIN,WAPJ,CAMEM,IANF;AAQA,UAAMC,QAAQ,GAAGR,IAAI,CAACS,IAAtB;AACA,UAAMC,KAAK,GAAG,IAAIf,eAAJ,CAAoB;AAChCgB,QAAAA,OAAO,EAAEX,IAAI,CAACY,SADkB;AAEhCL,QAAAA,IAAI,EAAJA;AAFgC,OAApB,EAIXM,MAJW,CAIJL,QAAQ,CAACC,IAJL,EAIW;AACrBK,QAAAA,MAAM,EAAE;AACNC,UAAAA,IAAI,EAAE,QADA;AAENC,UAAAA,KAAK,EAAER,QAAQ,CAACQ,KAFV;AAGNC,UAAAA,MAAM,EAAET,QAAQ,CAACS,MAHX;AAINC,UAAAA,MAAM,EAAElB,IAAI,CAACmB,WAAL,CAAiBC;AAJnB;AADa,OAJX,EAYXC,KAZW,CAYL;AACLnB,QAAAA,OAAO,EAAPA,OADK;AAELC,QAAAA,MAAM,EAANA,MAFK;AAGLC,QAAAA,SAAS,EAATA,SAHK;AAILC,QAAAA,QAAQ,EAARA,QAJK;AAKLC,QAAAA,UAAU,EAAVA;AALK,OAZK,CAAd;AAmBA,WAAKgB,SAAL,CAAe,CAACZ,KAAD,CAAf,EAAwB,KAAxB;AAEAjB,MAAAA,cAAc,CAAC,KAAKK,WAAN,EAAmB,CAACY,KAAD,CAAnB,CAAd;AAEA,aAAO;AACLa,QAAAA,MAAM,EAAE,CAACb,KAAD,CADH;AAELc,QAAAA,WAAW,EAAE,CAACd,KAAK,CAACe,EAAP;AAFR,OAAP;AAID;;;;EA7CyC/B,W;;SAAvBE,c","sourcesContent":["import { ILayer, ISubLayerInitOptions } from '@antv/l7-core';\nimport { Tile } from '@antv/l7-utils';\nimport { ITileFactoryOptions } from '../interface';\nimport { registerLayers } from '../utils';\nimport TileFactory from './base';\nimport RasterDataLayer from './rasterDataLayer';\n\nexport default class RasterTiffTile extends TileFactory {\n public parentLayer: ILayer;\n\n constructor(option: ITileFactoryOptions) {\n super(option);\n this.parentLayer = option.parent;\n }\n\n public createTile(tile: Tile, initOptions: ISubLayerInitOptions) {\n const {\n opacity,\n domain,\n clampHigh,\n clampLow,\n rampColors,\n mask,\n } = initOptions;\n const tiffdata = tile.data;\n const layer = new RasterDataLayer({\n visible: tile.isVisible,\n mask,\n })\n .source(tiffdata.data, {\n parser: {\n type: 'raster',\n width: tiffdata.width,\n height: tiffdata.height,\n extent: tile.bboxPolygon.bbox,\n },\n })\n .style({\n opacity,\n domain,\n clampHigh,\n clampLow,\n rampColors,\n });\n this.emitEvent([layer], false);\n\n registerLayers(this.parentLayer, [layer]);\n\n return {\n layers: [layer],\n layerIDList: [layer.id],\n };\n }\n}\n"],"file":"rasterData.js"}
package/es/tile/utils.js CHANGED
@@ -69,26 +69,31 @@ export function getContainerSize(container) {
69
69
  }
70
70
  }
71
71
  export function readRasterValue(tile, mapService, x, y) {
72
- var _tile$bboxPolygon, _tile$data;
72
+ var _tile$bboxPolygon, _tile$data, _tile$data2, _tile$data3;
73
73
 
74
- var bbox = ((_tile$bboxPolygon = tile.bboxPolygon) === null || _tile$bboxPolygon === void 0 ? void 0 : _tile$bboxPolygon.bbox) || [0, 0, 10, -10];
74
+ var bbox = (tile === null || tile === void 0 ? void 0 : (_tile$bboxPolygon = tile.bboxPolygon) === null || _tile$bboxPolygon === void 0 ? void 0 : _tile$bboxPolygon.bbox) || [0, 0, 10, -10];
75
75
 
76
76
  var _bbox = _slicedToArray(bbox, 4),
77
77
  _bbox$ = _bbox[0],
78
- tileLng = _bbox$ === void 0 ? 0 : _bbox$,
78
+ minLng = _bbox$ === void 0 ? 0 : _bbox$,
79
79
  _bbox$2 = _bbox[1],
80
- tileLat = _bbox$2 === void 0 ? 0 : _bbox$2,
80
+ minLat = _bbox$2 === void 0 ? 0 : _bbox$2,
81
81
  _bbox$3 = _bbox[2],
82
- tileMaxLng = _bbox$3 === void 0 ? 10 : _bbox$3,
82
+ maxLng = _bbox$3 === void 0 ? 10 : _bbox$3,
83
83
  _bbox$4 = _bbox[3],
84
- tileMaxLat = _bbox$4 === void 0 ? -10 : _bbox$4;
85
-
86
- var tileXY = mapService.lngLatToContainer([tileLng, tileLat]);
87
- var tileMaxXY = mapService.lngLatToContainer([tileMaxLng, tileMaxLat]);
88
- var pos = [(x - tileXY.x) / (tileMaxXY.x - tileXY.x), (y - tileXY.y) / (tileMaxXY.y - tileXY.y)];
89
- var tileWidth = tile.data.width || 1;
90
- var tileHeight = tile.data.height || 1;
91
- var data = (_tile$data = tile.data) === null || _tile$data === void 0 ? void 0 : _tile$data.data[Math.floor(pos[0] * tileWidth) + Math.floor(pos[1] * tileHeight)];
84
+ maxLat = _bbox$4 === void 0 ? -10 : _bbox$4;
85
+
86
+ var tileXY = mapService.lngLatToContainer([minLng, minLat]);
87
+ var tileMaxXY = mapService.lngLatToContainer([maxLng, maxLat]);
88
+ var tilePixelWidth = tileMaxXY.x - tileXY.x;
89
+ var tilePixelHeight = tileXY.y - tileMaxXY.y;
90
+ var pos = [(x - tileXY.x) / tilePixelWidth, (y - tileMaxXY.y) / tilePixelHeight];
91
+ var tileWidth = (tile === null || tile === void 0 ? void 0 : (_tile$data = tile.data) === null || _tile$data === void 0 ? void 0 : _tile$data.width) || 1;
92
+ var tileHeight = (tile === null || tile === void 0 ? void 0 : (_tile$data2 = tile.data) === null || _tile$data2 === void 0 ? void 0 : _tile$data2.height) || 1;
93
+ var indexX = Math.floor(pos[0] * tileWidth);
94
+ var indexY = Math.floor(pos[1] * tileHeight);
95
+ var index = Math.max(0, indexY - 1) * tileWidth + indexX;
96
+ var data = tile === null || tile === void 0 ? void 0 : (_tile$data3 = tile.data) === null || _tile$data3 === void 0 ? void 0 : _tile$data3.data[index];
92
97
  return data;
93
98
  }
94
99
  export function readPixel(x, y, rendererService) {