@antv/l7-layers 2.8.23 → 2.8.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/core/BaseLayer.d.ts +4 -0
- package/es/core/BaseLayer.js +39 -0
- package/es/core/BaseLayer.js.map +1 -1
- package/es/core/LayerGroup.d.ts +8 -0
- package/es/core/LayerGroup.js +66 -0
- package/es/core/LayerGroup.js.map +1 -0
- package/es/core/interface.d.ts +7 -0
- package/es/core/interface.js.map +1 -1
- package/es/core/triangulation.d.ts +1 -0
- package/es/core/triangulation.js +1 -0
- package/es/core/triangulation.js.map +1 -1
- package/es/imagetile/index.d.ts +2 -2
- package/es/imagetile/index.js +4 -4
- package/es/imagetile/index.js.map +1 -1
- package/es/imagetile/models/imagetile.d.ts +2 -2
- package/es/imagetile/models/imagetile.js +1 -15
- package/es/imagetile/models/imagetile.js.map +1 -1
- package/es/imagetile/utils/Tile.d.ts +2 -2
- package/es/imagetile/utils/Tile.js +3 -12
- package/es/imagetile/utils/Tile.js.map +1 -1
- package/es/line/models/line.js +15 -6
- package/es/line/models/line.js.map +1 -1
- package/es/mask/models/fill.js +1 -1
- package/es/mask/models/fill.js.map +1 -1
- package/es/plugins/DataMappingPlugin.d.ts +1 -0
- package/es/plugins/DataMappingPlugin.js +30 -7
- package/es/plugins/DataMappingPlugin.js.map +1 -1
- package/es/point/models/fill.js +1 -1
- package/es/polygon/models/ocean.js +4 -4
- package/es/polygon/models/ocean.js.map +1 -1
- package/es/utils/extrude_polyline.d.ts +6 -0
- package/es/utils/extrude_polyline.js +29 -1
- package/es/utils/extrude_polyline.js.map +1 -1
- package/lib/core/BaseLayer.js +36 -0
- package/lib/core/BaseLayer.js.map +1 -1
- package/lib/core/LayerGroup.js +78 -0
- package/lib/core/LayerGroup.js.map +1 -0
- package/lib/core/interface.js.map +1 -1
- package/lib/core/triangulation.js +1 -0
- package/lib/core/triangulation.js.map +1 -1
- package/lib/imagetile/index.js +4 -4
- package/lib/imagetile/index.js.map +1 -1
- package/lib/imagetile/models/imagetile.js +1 -18
- package/lib/imagetile/models/imagetile.js.map +1 -1
- package/lib/imagetile/utils/Tile.js +3 -12
- package/lib/imagetile/utils/Tile.js.map +1 -1
- package/lib/line/models/line.js +15 -6
- package/lib/line/models/line.js.map +1 -1
- package/lib/mask/models/fill.js +1 -1
- package/lib/mask/models/fill.js.map +1 -1
- package/lib/plugins/DataMappingPlugin.js +29 -6
- package/lib/plugins/DataMappingPlugin.js.map +1 -1
- package/lib/point/models/fill.js +1 -1
- package/lib/polygon/models/ocean.js +4 -4
- package/lib/polygon/models/ocean.js.map +1 -1
- package/lib/utils/extrude_polyline.js +28 -1
- package/lib/utils/extrude_polyline.js.map +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/imagetile/index.ts"],"names":["ImageTileLayer","modelType","getModelType","layerModel","ImageTileModels","models","initModels","buildModels","properties","opacity","type","minimum","maximum","defaultConfig","imageTile","
|
|
1
|
+
{"version":3,"sources":["../../src/imagetile/index.ts"],"names":["ImageTileLayer","modelType","getModelType","layerModel","ImageTileModels","models","initModels","buildModels","properties","opacity","type","minimum","maximum","defaultConfig","imageTile","LayerGroup"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;;;;;IAIqBA,c;;;;;;;;;;;;;;;uFAGG,gB;;;;;;WACtB,uBAAqB;AACnB,UAAMC,SAAS,GAAG,KAAKC,YAAL,EAAlB;AACA,WAAKC,UAAL,GAAkB,IAAIC,eAAgBH,SAAhB,CAAJ,CAA+B,IAA/B,CAAlB;AACA,WAAKI,MAAL,GAAc,KAAKF,UAAL,CAAgBG,UAAhB,EAAd;AACD;;;WACD,yBAAuB;AACrB,WAAKD,MAAL,GAAc,KAAKF,UAAL,CAAgBI,WAAhB,EAAd;AACD;;;WACD,2BAA4B;AAC1B,aAAO;AACLC,QAAAA,UAAU,EAAE;AACVC,UAAAA,OAAO,EAAE;AACPC,YAAAA,IAAI,EAAE,QADC;AAEPC,YAAAA,OAAO,EAAE,CAFF;AAGPC,YAAAA,OAAO,EAAE;AAHF;AADC;AADP,OAAP;AASD;;;WACD,4BAA6B;AAC3B,UAAMF,IAAI,GAAG,KAAKR,YAAL,EAAb;AACA,UAAMW,aAAa,GAAG;AACpBC,QAAAA,SAAS,EAAE;AADS,OAAtB;AAGA,aAAOD,aAAa,CAACH,IAAD,CAApB;AACD;;;WAED,wBAA6C;AAC3C,aAAO,WAAP;AACD;;;EAjCyCK,oB","sourcesContent":["import LayerGroup from '../core/LayerGroup';\nimport ImageTileModels, { ImageTileModelType } from './models/index';\ninterface IImageLayerStyleOptions {\n opacity: number;\n}\nexport default class ImageTileLayer extends LayerGroup<\n IImageLayerStyleOptions\n> {\n public type: string = 'ImageTileLayer';\n public buildModels() {\n const modelType = this.getModelType();\n this.layerModel = new ImageTileModels[modelType](this);\n this.models = this.layerModel.initModels();\n }\n public rebuildModels() {\n this.models = this.layerModel.buildModels();\n }\n protected getConfigSchema() {\n return {\n properties: {\n opacity: {\n type: 'number',\n minimum: 0,\n maximum: 1,\n },\n },\n };\n }\n protected getDefaultConfig() {\n const type = this.getModelType();\n const defaultConfig = {\n imageTile: {},\n };\n return defaultConfig[type];\n }\n\n protected getModelType(): ImageTileModelType {\n return 'imageTile';\n }\n}\n"],"file":"index.js"}
|
|
@@ -23,21 +23,14 @@ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/ge
|
|
|
23
23
|
|
|
24
24
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
25
25
|
|
|
26
|
-
var _l7Core = require("@antv/l7-core");
|
|
27
|
-
|
|
28
26
|
var _BaseModel2 = _interopRequireDefault(require("../../core/BaseModel"));
|
|
29
27
|
|
|
30
|
-
var _triangulation = require("../../core/triangulation");
|
|
31
|
-
|
|
32
28
|
var _Tile = _interopRequireDefault(require("../utils/Tile"));
|
|
33
29
|
|
|
34
30
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
35
31
|
|
|
36
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; } }
|
|
37
33
|
|
|
38
|
-
var ImageTileFrag = "precision mediump float;\nvoid main() {\n gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);\n}\n";
|
|
39
|
-
var ImageTileVert = "precision highp float;\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\nattribute vec3 a_Position;\n#pragma include \"projection\"\nvoid main() {\n vec4 project_pos = project_position(vec4(a_Position, 1.0));\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n gl_Position = u_Mvp * (vec4(project_pos.xy,0., 1.0));\n } else {\n gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy,0., 1.0));\n }\n}\n";
|
|
40
|
-
|
|
41
34
|
var ImageTileModel = function (_BaseModel) {
|
|
42
35
|
(0, _inherits2.default)(ImageTileModel, _BaseModel);
|
|
43
36
|
|
|
@@ -128,17 +121,7 @@ var ImageTileModel = function (_BaseModel) {
|
|
|
128
121
|
});
|
|
129
122
|
}
|
|
130
123
|
|
|
131
|
-
return [
|
|
132
|
-
moduleName: 'ImageTileLayer',
|
|
133
|
-
vertexShader: ImageTileVert,
|
|
134
|
-
fragmentShader: ImageTileFrag,
|
|
135
|
-
triangulation: _triangulation.RasterImageTriangulation,
|
|
136
|
-
primitive: _l7Core.gl.TRIANGLES,
|
|
137
|
-
depth: {
|
|
138
|
-
enable: false
|
|
139
|
-
},
|
|
140
|
-
blend: this.getBlend()
|
|
141
|
-
})];
|
|
124
|
+
return [];
|
|
142
125
|
}
|
|
143
126
|
}, {
|
|
144
127
|
key: "clearModels",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/imagetile/models/imagetile.ts"],"names":["ImageTileModel","mapService","getBounds","WS","EN","NE","lng","lat","SW","tileLayer","calCurrentTiles","tileCenter","getCenter","currentZoom","getZoom","minSourceZoom","getMinZoom","minZoom","maxZoom","getMaxZoom","layer","zIndex","getLayerConfig","resolution","maxSourceZoom","source","getSource","data","tileurl","Tile","url","layerService","crstype","tile","on","e","timestamp","clearTimeout","setTimeout","
|
|
1
|
+
{"version":3,"sources":["../../../src/imagetile/models/imagetile.ts"],"names":["ImageTileModel","mapService","getBounds","WS","EN","NE","lng","lat","SW","tileLayer","calCurrentTiles","tileCenter","getCenter","currentZoom","getZoom","minSourceZoom","getMinZoom","minZoom","maxZoom","getMaxZoom","layer","zIndex","getLayerConfig","resolution","maxSourceZoom","source","getSource","data","tileurl","Tile","url","layerService","crstype","tile","on","e","timestamp","clearTimeout","setTimeout","removeTiles","initModels","BaseModel"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AACA;;;;;;IAOqBA,c;;;;;;;;;;;;;;;;;;;;;;WAGnB,wBAAqC;AACnC,aAAO,EAAP;AACD;;;WAGD,gBAAc;AACZ,kCAAiB,KAAKC,UAAL,CAAgBC,SAAhB,EAAjB;AAAA;AAAA,UAAOC,EAAP;AAAA,UAAWC,EAAX;;AACA,UAAMC,EAAE,GAAG;AAAEC,QAAAA,GAAG,EAAEF,EAAE,CAAC,CAAD,CAAT;AAAcG,QAAAA,GAAG,EAAEH,EAAE,CAAC,CAAD;AAArB,OAAX;AACA,UAAMI,EAAE,GAAG;AAAEF,QAAAA,GAAG,EAAEH,EAAE,CAAC,CAAD,CAAT;AAAcI,QAAAA,GAAG,EAAEJ,EAAE,CAAC,CAAD;AAArB,OAAX;AACA,WAAKM,SAAL,CAAeC,eAAf,CAA+B;AAC7BL,QAAAA,EAAE,EAAFA,EAD6B;AAE7BG,QAAAA,EAAE,EAAFA,EAF6B;AAG7BG,QAAAA,UAAU,EAAE,KAAKV,UAAL,CAAgBW,SAAhB,EAHiB;AAI7BC,QAAAA,WAAW,EAAE,KAAKZ,UAAL,CAAgBa,OAAhB,EAJgB;AAK7BC,QAAAA,aAAa,EAAE,KAAKd,UAAL,CAAgBe,UAAhB,EALc;AAM7BC,QAAAA,OAAO,EAAE,KAAKhB,UAAL,CAAgBe,UAAhB,EANoB;AAO7BE,QAAAA,OAAO,EAAE,KAAKjB,UAAL,CAAgBkB,UAAhB;AAPoB,OAA/B;AASD;;;WAED,sBAAoB;AAAA;;AAElB,WAAKC,KAAL,CAAWC,MAAX,GAAoB,CAAC,GAArB;;AACA,iBAGI,KAAKD,KAAL,CAAWE,cAAX,EAHJ;AAAA,iCACEC,UADF;AAAA,UACEA,UADF,gCACe,KADf;AAAA,oCAEEC,aAFF;AAAA,UAEEA,aAFF,mCAEkB,EAFlB;;AAIA,UAAMC,MAAM,GAAG,KAAKL,KAAL,CAAWM,SAAX,EAAf;;AAEA,UAAID,MAAM,CAACE,IAAP,CAAYC,OAAhB,EAAyB;AACvB,aAAKnB,SAAL,GAAiB,IAAIoB,aAAJ,CAAS;AACxBC,UAAAA,GAAG,EAAEL,MAAM,CAACE,IAAP,CAAYC,OADO;AAExBG,UAAAA,YAAY,EAAE,KAAKA,YAFK;AAGxBX,UAAAA,KAAK,EAAE,KAAKA,KAHY;AAIxBG,UAAAA,UAAU,EAAVA,UAJwB;AAKxBC,UAAAA,aAAa,EAAbA,aALwB;AAOxBQ,UAAAA,OAAO,EAAE;AAPe,SAAT,CAAjB;AAWA,aAAKC,IAAL;AAEA,aAAKhC,UAAL,CAAgBiC,EAAhB,CAAmB,WAAnB,EAAgC,UAACC,CAAD,EAAO;AACrC,cAAI,MAAI,CAACC,SAAT,EAAoB;AAClBC,YAAAA,YAAY,CAAC,MAAI,CAACD,SAAN,CAAZ;AACA,YAAA,MAAI,CAACA,SAAL,GAAiB,IAAjB;AACD;;AAED,UAAA,MAAI,CAACA,SAAL,GAAiBE,UAAU,CAAC,YAAM;AAEhC,gBAAI,MAAI,CAACrC,UAAL,CAAgBa,OAAhB,MAA6B,GAAjC,EAAsC;AACpC,cAAA,MAAI,CAACmB,IAAL;AACD;AACF,WAL0B,EAKxB,GALwB,CAA3B;AAMD,SAZD;AAaD;;AAED,aAAO,EAAP;AACD;;;WAED,uBAAqB;AACnB,WAAKxB,SAAL,CAAe8B,WAAf;AACD;;;WAED,uBAAqB;AACnB,aAAO,KAAKC,UAAL,EAAP;AACD;;;WAED,qCAAsC;AACpC;AACD;;;EA1EyCC,mB","sourcesContent":["import { gl, IModelUniform } from '@antv/l7-core';\nimport BaseModel from '../../core/BaseModel';\nimport Tile from '../utils/Tile';\n\ninterface IImageLayerStyleOptions {\n resolution: string;\n maxSourceZoom: number;\n}\n\nexport default class ImageTileModel extends BaseModel {\n public tileLayer: any;\n private timestamp: number | null;\n public getUninforms(): IModelUniform {\n return {};\n }\n\n // 瓦片方法\n public tile() {\n const [WS, EN] = this.mapService.getBounds();\n const NE = { lng: EN[0], lat: EN[1] };\n const SW = { lng: WS[0], lat: WS[1] };\n this.tileLayer.calCurrentTiles({\n NE,\n SW,\n tileCenter: this.mapService.getCenter(),\n currentZoom: this.mapService.getZoom(),\n minSourceZoom: this.mapService.getMinZoom(),\n minZoom: this.mapService.getMinZoom(),\n maxZoom: this.mapService.getMaxZoom(),\n });\n }\n\n public initModels() {\n // TODO: 瓦片组件默认在最下层\n this.layer.zIndex = -999;\n const {\n resolution = 'low',\n maxSourceZoom = 17,\n } = this.layer.getLayerConfig() as IImageLayerStyleOptions;\n const source = this.layer.getSource();\n // 当存在 url 的时候生效\n if (source.data.tileurl) {\n this.tileLayer = new Tile({\n url: source.data.tileurl,\n layerService: this.layerService,\n layer: this.layer,\n resolution,\n maxSourceZoom,\n // Tip: 当前为 default\n crstype: 'epsg3857',\n });\n\n // TODO: 首次加载的时候请求瓦片\n this.tile();\n\n this.mapService.on('mapchange', (e) => {\n if (this.timestamp) {\n clearTimeout(this.timestamp);\n this.timestamp = null;\n }\n // @ts-ignore 节流\n this.timestamp = setTimeout(() => {\n // TODO: 瓦片地图最大层级为 2\n if (this.mapService.getZoom() >= 2.0) {\n this.tile();\n }\n }, 500);\n });\n }\n\n return [];\n }\n\n public clearModels() {\n this.tileLayer.removeTiles();\n }\n\n public buildModels() {\n return this.initModels();\n }\n\n protected registerBuiltinAttributes() {\n return;\n }\n}\n"],"file":"imagetile.js"}
|
|
@@ -221,7 +221,7 @@ var Tile = function () {
|
|
|
221
221
|
t.current = true;
|
|
222
222
|
t.retain = true;
|
|
223
223
|
t.active = true;
|
|
224
|
-
this.layer.
|
|
224
|
+
this.layer.addChild(tile.imageLayer);
|
|
225
225
|
this.tileCache.setTile(tile, key);
|
|
226
226
|
this.pruneTiles();
|
|
227
227
|
this.layerService.updateLayerRenderList();
|
|
@@ -279,13 +279,7 @@ var Tile = function () {
|
|
|
279
279
|
}, {
|
|
280
280
|
key: "destroyTile",
|
|
281
281
|
value: function destroyTile(tile) {
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
if (layerIndex > -1) {
|
|
285
|
-
this.layer.layerChildren.splice(layerIndex, 1);
|
|
286
|
-
}
|
|
287
|
-
|
|
288
|
-
tile.imageLayer.destroy();
|
|
282
|
+
this.layer.removeChild(tile.imageLayer);
|
|
289
283
|
this.layerService.updateLayerRenderList();
|
|
290
284
|
this.layerService.renderLayers();
|
|
291
285
|
tile = null;
|
|
@@ -308,10 +302,7 @@ var Tile = function () {
|
|
|
308
302
|
}, {
|
|
309
303
|
key: "removeTiles",
|
|
310
304
|
value: function removeTiles() {
|
|
311
|
-
this.layer.
|
|
312
|
-
layer.destroy();
|
|
313
|
-
});
|
|
314
|
-
this.layer.layerChildren = [];
|
|
305
|
+
this.layer.clearChild();
|
|
315
306
|
this.layerService.updateLayerRenderList();
|
|
316
307
|
this.layerService.renderLayers();
|
|
317
308
|
this.tileList = {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/imagetile/utils/Tile.ts"],"names":["CacheLimit","Tile","props","layerService","layer","url","resolution","maxSourceZoom","crstype","currentCrs","GeoCoordinates","default","start","x","y","end","projection","crs","destroyTile","bind","tileCache","TileCache","updateTileList","removeTiles","oprions","NE","SW","tileCenter","currentZoom","minSourceZoom","minZoom","maxZoom","zoom","Math","floor","tileZoom","centerPoint","lngLatToPoint","lng","lat","centerXY","divideBy","pixelBounds","getPixelBounds","tileRange","pxBoundsToTileRange","margin","noPruneRange","Bounds","getBottomLeft","subtract","getTopRight","add","isFinite","min","max","Error","j","i","coords","tile","tileList","join","current","push","sort","a","b","tile1","tile2","d1","pow","d2","pruneTiles","forEach","key","requestTile","ceil","NEPoint","SWPoint","topHeight","bottomHeight","leftWidth","rightWidth","width","Object","keys","map","c","contains","Point","retain","active","split","v","Number","z","retainParent","retainChildren","removeOutTiles","t","getTile","container","sceneContainer","ImageTile","name","layerChildren","imageLayer","setTile","updateLayerRenderList","renderLayers","show","x2","y2","z2","loaded","layerIndex","indexOf","splice","destroy","hide","destory"],"mappings":"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","sourcesContent":["import { Bounds, GeoCoordinates, Point, toLngLat } from '@antv/geo-coord';\nimport {\n createLayerContainer,\n ILayer,\n ILayerService,\n ILngLat,\n} from '@antv/l7-core';\nimport { Container } from 'inversify';\n\nimport ImageTile from './ImageTile';\nimport TileCache from './tileCache';\n\n// Tip: 瓦片地图的存储上限\nconst CacheLimit = 30;\n\nexport default class Tile {\n public tileList: any = {};\n public tileCache: any;\n\n public updateTileList: any[];\n public tileZoom: number;\n public noPruneRange: any;\n public url: string;\n public resolution: number;\n public maxSourceZoom: number;\n public crstype: string;\n public currentCrs: any;\n\n public layerService: ILayerService;\n public layer: ILayer;\n constructor(props: any) {\n this.layerService = props.layerService;\n this.layer = props.layer;\n this.url = props.url;\n this.resolution = props.resolution === 'low' ? -1 : 0;\n this.maxSourceZoom = props.maxSourceZoom;\n this.crstype = props.crstype;\n\n this.currentCrs = new GeoCoordinates.default({\n start: { x: 0, y: 0 },\n end: { x: 0, y: 0 },\n projection: this.crstype,\n }).crs as any;\n\n this.destroyTile = this.destroyTile.bind(this);\n this.tileCache = new TileCache(CacheLimit, this.destroyTile);\n\n this.updateTileList = [];\n\n this.removeTiles = this.removeTiles.bind(this);\n }\n\n public calCurrentTiles(oprions: any) {\n const {\n NE,\n SW,\n tileCenter,\n currentZoom,\n minSourceZoom,\n minZoom,\n maxZoom,\n } = oprions;\n // TODO: 当前瓦片的层级要比地图底图的层级低\n if (currentZoom >= this.maxSourceZoom) {\n return;\n }\n const zoom = Math.floor(currentZoom) + this.resolution;\n\n this.tileZoom = zoom > this.maxSourceZoom ? this.maxSourceZoom : zoom;\n\n if (\n currentZoom < minZoom ||\n currentZoom >= maxZoom ||\n currentZoom < minSourceZoom\n ) {\n this.removeTiles();\n return;\n }\n\n this.updateTileList = [];\n\n // 计算瓦片中心\n const centerPoint = this.currentCrs.lngLatToPoint(\n toLngLat(tileCenter.lng, tileCenter.lat),\n this.tileZoom,\n );\n const centerXY = centerPoint.divideBy(256).floor();\n\n const pixelBounds = this.getPixelBounds(\n NE,\n SW,\n tileCenter,\n this.tileZoom,\n this.currentCrs,\n ); // 计算像素范围\n const tileRange = this.pxBoundsToTileRange(pixelBounds); // 计算瓦片范围\n\n const margin = 4;\n\n this.noPruneRange = new Bounds(\n tileRange.getBottomLeft().subtract([margin, -margin]),\n tileRange.getTopRight().add([margin, -margin]),\n );\n\n // T: isFinite(n: number) 用于检测 n 是否无穷大\n if (\n !(\n isFinite(tileRange.min.x) &&\n isFinite(tileRange.min.y) &&\n isFinite(tileRange.max.x) &&\n isFinite(tileRange.max.y)\n )\n ) {\n throw new Error('Attempted to load an infinite number of tiles');\n }\n\n // 根据视野判断新增的瓦片索引\n for (let j = tileRange.min.y; j <= tileRange.max.y; j++) {\n for (let i = tileRange.min.x; i <= tileRange.max.x; i++) {\n const coords = [i, j, this.tileZoom];\n const tile = this.tileList[coords.join('_')];\n if (tile) {\n tile.current = true;\n } else {\n this.tileList[coords.join('_')] = {\n current: true,\n coords,\n };\n this.updateTileList.push(coords);\n }\n }\n }\n\n // 瓦片列表排序\n this.updateTileList.sort((a: any, b: any) => {\n const tile1 = a;\n const tile2 = b;\n const d1 =\n Math.pow(tile1[0] * 1 - centerXY.x, 2) +\n Math.pow(tile1[1] * 1 - centerXY.y, 2);\n const d2 =\n Math.pow(tile2[0] * 1 - centerXY.x, 2) +\n Math.pow(tile2[1] * 1 - centerXY.y, 2);\n return d1 - d2;\n });\n\n this.pruneTiles();\n this.updateTileList.forEach((coords: any) => {\n const key = coords.join('_');\n if (this.tileList[key].current) {\n this.requestTile(key);\n }\n });\n }\n\n public pxBoundsToTileRange(pixelBounds: any) {\n return new Bounds(\n pixelBounds.min.divideBy(256).floor(),\n pixelBounds.max\n .divideBy(256)\n .ceil()\n .subtract([1, 1]),\n );\n }\n\n public getPixelBounds(\n NE: ILngLat,\n SW: ILngLat,\n tileCenter: ILngLat,\n tileZoom: number,\n crs: any,\n ) {\n const zoom = tileZoom;\n const NEPoint = crs.lngLatToPoint(toLngLat(NE.lng, NE.lat), zoom);\n const SWPoint = crs.lngLatToPoint(toLngLat(SW.lng, SW.lat), zoom);\n const centerPoint = crs.lngLatToPoint(\n toLngLat(tileCenter.lng, tileCenter.lat),\n zoom,\n );\n const topHeight = centerPoint.y - NEPoint.y;\n const bottomHeight = SWPoint.y - centerPoint.y;\n // 跨日界线的情况\n let leftWidth;\n let rightWidth;\n if (tileCenter.lng - NE.lng > 0 || tileCenter.lng - SW.lng < 0) {\n const width =\n ((Math.pow(2, zoom) * 256) / 360) * (180 - NE.lng) +\n ((Math.pow(2, zoom) * 256) / 360) * (SW.lng + 180);\n if (tileCenter.lng - NE.lng > 0) {\n // 日界线在右侧\n leftWidth =\n ((Math.pow(2, zoom) * 256) / 360) * (tileCenter.lng - NE.lng);\n rightWidth = width - leftWidth;\n } else {\n rightWidth =\n ((Math.pow(2, zoom) * 256) / 360) * (SW.lng - tileCenter.lng);\n leftWidth = width - rightWidth;\n }\n } else {\n // 不跨日界线\n leftWidth = ((Math.pow(2, zoom) * 256) / 360) * (tileCenter.lng - SW.lng);\n rightWidth =\n ((Math.pow(2, zoom) * 256) / 360) * (NE.lng - tileCenter.lng);\n }\n const pixelBounds = new Bounds(\n centerPoint.subtract(leftWidth, topHeight),\n centerPoint.add(rightWidth, bottomHeight),\n );\n return pixelBounds;\n }\n\n public pruneTiles() {\n Object.keys(this.tileList).map((key) => {\n const c = this.tileList[key].coords;\n // 如果不是同一个缩放层级,则将瓦片设为不显示\n if (\n c[2] !== this.tileZoom ||\n !this.noPruneRange.contains(new Point(c[0], c[1]))\n ) {\n this.tileList[key].current = false;\n }\n });\n\n Object.keys(this.tileList).map((key) => {\n const tile = this.tileList[key];\n tile.retain = tile.current;\n });\n\n Object.keys(this.tileList).map((key) => {\n const tile = this.tileList[key];\n if (tile.current && !tile.active) {\n const [x, y, z] = key.split('_').map((v) => Number(v));\n\n if (!this.retainParent(x, y, z, z - 5)) {\n this.retainChildren(x, y, z, z + 2);\n }\n }\n });\n\n this.removeOutTiles();\n }\n\n public requestTile(key: string) {\n const t = this.tileList[key];\n if (!t) {\n return;\n }\n let tile = this.tileCache.getTile(key);\n if (!tile) {\n const container = createLayerContainer(\n this.layer.sceneContainer as Container,\n );\n tile = new ImageTile(\n key,\n this.url,\n container,\n this.layer.sceneContainer as Container,\n );\n tile.name = key;\n\n t.current = true;\n t.retain = true;\n t.active = true;\n\n // 往 imageTileLayer 中添加子图层\n this.layer.layerChildren.push(tile.imageLayer);\n\n this.tileCache.setTile(tile, key);\n\n this.pruneTiles();\n this.layerService.updateLayerRenderList();\n this.layerService.renderLayers();\n } else {\n // Tip: show 方法就是将相应的瓦片图片添加到渲染队列\n tile.imageLayer.show();\n t.current = true;\n t.retain = true;\n t.active = true;\n\n this.pruneTiles();\n }\n }\n\n public retainParent(x: number, y: number, z: number, minZoom: number): any {\n const x2 = Math.floor(x / 2);\n const y2 = Math.floor(y / 2);\n const z2 = z - 1;\n const tile = this.tileList[[x2, y2, z2].join('_')];\n if (tile && tile.active) {\n tile.retain = true;\n return true;\n } else if (tile && tile.loaded) {\n tile.retain = true;\n }\n if (z2 > minZoom) {\n return this.retainParent(x2, y2, z2, minZoom);\n }\n return false;\n }\n\n public retainChildren(x: number, y: number, z: number, maxZoom: number) {\n for (let i = 2 * x; i < 2 * x + 2; i++) {\n for (let j = 2 * y; j < 2 * y + 2; j++) {\n const key = [i, j, z + 1].join('_');\n const tile = this.tileList[key];\n if (tile && tile.active) {\n tile.retain = true;\n continue;\n } else if (tile && tile.loaded) {\n tile.retain = true;\n }\n\n if (z + 1 < maxZoom) {\n this.retainChildren(i, j, z + 1, maxZoom);\n }\n }\n }\n }\n\n public destroyTile(tile: any) {\n const layerIndex = this.layer.layerChildren.indexOf(tile.imageLayer);\n if (layerIndex > -1) {\n this.layer.layerChildren.splice(layerIndex, 1);\n }\n\n tile.imageLayer.destroy();\n this.layerService.updateLayerRenderList();\n this.layerService.renderLayers();\n\n // 清除 tileCache 中的存储 相当于 tileCache.setTile(tile, null)\n tile = null;\n }\n\n public removeOutTiles() {\n for (const key in this.tileList) {\n if (!this.tileList[key].retain) {\n // Tip: 不需要显示的瓦片对象\n const tile = this.tileCache.getTile(key);\n // Tip: 若是网格对象存在\n if (tile) {\n // Tip: hide 方法就是将相应的瓦片图片从渲染队列中剔除\n tile.imageLayer.hide();\n }\n delete this.tileList[key];\n }\n }\n }\n\n public removeTiles() {\n this.layer.layerChildren.forEach((layer: any) => {\n layer.destroy();\n });\n\n this.layer.layerChildren = [];\n this.layerService.updateLayerRenderList();\n this.layerService.renderLayers();\n this.tileList = {};\n this.tileCache.destory();\n }\n}\n"],"file":"Tile.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/imagetile/utils/Tile.ts"],"names":["CacheLimit","Tile","props","layerService","layer","url","resolution","maxSourceZoom","crstype","currentCrs","GeoCoordinates","default","start","x","y","end","projection","crs","destroyTile","bind","tileCache","TileCache","updateTileList","removeTiles","oprions","NE","SW","tileCenter","currentZoom","minSourceZoom","minZoom","maxZoom","zoom","Math","floor","tileZoom","centerPoint","lngLatToPoint","lng","lat","centerXY","divideBy","pixelBounds","getPixelBounds","tileRange","pxBoundsToTileRange","margin","noPruneRange","Bounds","getBottomLeft","subtract","getTopRight","add","isFinite","min","max","Error","j","i","coords","tile","tileList","join","current","push","sort","a","b","tile1","tile2","d1","pow","d2","pruneTiles","forEach","key","requestTile","ceil","NEPoint","SWPoint","topHeight","bottomHeight","leftWidth","rightWidth","width","Object","keys","map","c","contains","Point","retain","active","split","v","Number","z","retainParent","retainChildren","removeOutTiles","t","getTile","container","sceneContainer","ImageTile","name","addChild","imageLayer","setTile","updateLayerRenderList","renderLayers","show","x2","y2","z2","loaded","removeChild","hide","clearChild","destory"],"mappings":"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","sourcesContent":["import { Bounds, GeoCoordinates, Point, toLngLat } from '@antv/geo-coord';\nimport {\n createLayerContainer,\n ILayer,\n ILayerGroup,\n ILayerService,\n ILngLat,\n} from '@antv/l7-core';\nimport { Container } from 'inversify';\n\nimport ImageTile from './ImageTile';\nimport TileCache from './tileCache';\n\n// Tip: 瓦片地图的存储上限\nconst CacheLimit = 30;\n\nexport default class Tile {\n public tileList: any = {};\n public tileCache: any;\n\n public updateTileList: any[];\n public tileZoom: number;\n public noPruneRange: any;\n public url: string;\n public resolution: number;\n public maxSourceZoom: number;\n public crstype: string;\n public currentCrs: any;\n\n public layerService: ILayerService;\n public layer: ILayerGroup;\n constructor(props: any) {\n this.layerService = props.layerService;\n this.layer = props.layer;\n this.url = props.url;\n this.resolution = props.resolution === 'low' ? -1 : 0;\n this.maxSourceZoom = props.maxSourceZoom;\n this.crstype = props.crstype;\n\n this.currentCrs = new GeoCoordinates.default({\n start: { x: 0, y: 0 },\n end: { x: 0, y: 0 },\n projection: this.crstype,\n }).crs as any;\n\n this.destroyTile = this.destroyTile.bind(this);\n this.tileCache = new TileCache(CacheLimit, this.destroyTile);\n\n this.updateTileList = [];\n\n this.removeTiles = this.removeTiles.bind(this);\n }\n\n public calCurrentTiles(oprions: any) {\n const {\n NE,\n SW,\n tileCenter,\n currentZoom,\n minSourceZoom,\n minZoom,\n maxZoom,\n } = oprions;\n // TODO: 当前瓦片的层级要比地图底图的层级低\n if (currentZoom >= this.maxSourceZoom) {\n return;\n }\n const zoom = Math.floor(currentZoom) + this.resolution;\n\n this.tileZoom = zoom > this.maxSourceZoom ? this.maxSourceZoom : zoom;\n\n if (\n currentZoom < minZoom ||\n currentZoom >= maxZoom ||\n currentZoom < minSourceZoom\n ) {\n this.removeTiles();\n return;\n }\n\n this.updateTileList = [];\n\n // 计算瓦片中心\n const centerPoint = this.currentCrs.lngLatToPoint(\n toLngLat(tileCenter.lng, tileCenter.lat),\n this.tileZoom,\n );\n const centerXY = centerPoint.divideBy(256).floor();\n\n const pixelBounds = this.getPixelBounds(\n NE,\n SW,\n tileCenter,\n this.tileZoom,\n this.currentCrs,\n ); // 计算像素范围\n const tileRange = this.pxBoundsToTileRange(pixelBounds); // 计算瓦片范围\n\n const margin = 4;\n\n this.noPruneRange = new Bounds(\n tileRange.getBottomLeft().subtract([margin, -margin]),\n tileRange.getTopRight().add([margin, -margin]),\n );\n\n // T: isFinite(n: number) 用于检测 n 是否无穷大\n if (\n !(\n isFinite(tileRange.min.x) &&\n isFinite(tileRange.min.y) &&\n isFinite(tileRange.max.x) &&\n isFinite(tileRange.max.y)\n )\n ) {\n throw new Error('Attempted to load an infinite number of tiles');\n }\n\n // 根据视野判断新增的瓦片索引\n for (let j = tileRange.min.y; j <= tileRange.max.y; j++) {\n for (let i = tileRange.min.x; i <= tileRange.max.x; i++) {\n const coords = [i, j, this.tileZoom];\n const tile = this.tileList[coords.join('_')];\n if (tile) {\n tile.current = true;\n } else {\n this.tileList[coords.join('_')] = {\n current: true,\n coords,\n };\n this.updateTileList.push(coords);\n }\n }\n }\n\n // 瓦片列表排序\n this.updateTileList.sort((a: any, b: any) => {\n const tile1 = a;\n const tile2 = b;\n const d1 =\n Math.pow(tile1[0] * 1 - centerXY.x, 2) +\n Math.pow(tile1[1] * 1 - centerXY.y, 2);\n const d2 =\n Math.pow(tile2[0] * 1 - centerXY.x, 2) +\n Math.pow(tile2[1] * 1 - centerXY.y, 2);\n return d1 - d2;\n });\n\n this.pruneTiles();\n this.updateTileList.forEach((coords: any) => {\n const key = coords.join('_');\n if (this.tileList[key].current) {\n this.requestTile(key);\n }\n });\n }\n\n public pxBoundsToTileRange(pixelBounds: any) {\n return new Bounds(\n pixelBounds.min.divideBy(256).floor(),\n pixelBounds.max\n .divideBy(256)\n .ceil()\n .subtract([1, 1]),\n );\n }\n\n public getPixelBounds(\n NE: ILngLat,\n SW: ILngLat,\n tileCenter: ILngLat,\n tileZoom: number,\n crs: any,\n ) {\n const zoom = tileZoom;\n const NEPoint = crs.lngLatToPoint(toLngLat(NE.lng, NE.lat), zoom);\n const SWPoint = crs.lngLatToPoint(toLngLat(SW.lng, SW.lat), zoom);\n const centerPoint = crs.lngLatToPoint(\n toLngLat(tileCenter.lng, tileCenter.lat),\n zoom,\n );\n const topHeight = centerPoint.y - NEPoint.y;\n const bottomHeight = SWPoint.y - centerPoint.y;\n // 跨日界线的情况\n let leftWidth;\n let rightWidth;\n if (tileCenter.lng - NE.lng > 0 || tileCenter.lng - SW.lng < 0) {\n const width =\n ((Math.pow(2, zoom) * 256) / 360) * (180 - NE.lng) +\n ((Math.pow(2, zoom) * 256) / 360) * (SW.lng + 180);\n if (tileCenter.lng - NE.lng > 0) {\n // 日界线在右侧\n leftWidth =\n ((Math.pow(2, zoom) * 256) / 360) * (tileCenter.lng - NE.lng);\n rightWidth = width - leftWidth;\n } else {\n rightWidth =\n ((Math.pow(2, zoom) * 256) / 360) * (SW.lng - tileCenter.lng);\n leftWidth = width - rightWidth;\n }\n } else {\n // 不跨日界线\n leftWidth = ((Math.pow(2, zoom) * 256) / 360) * (tileCenter.lng - SW.lng);\n rightWidth =\n ((Math.pow(2, zoom) * 256) / 360) * (NE.lng - tileCenter.lng);\n }\n const pixelBounds = new Bounds(\n centerPoint.subtract(leftWidth, topHeight),\n centerPoint.add(rightWidth, bottomHeight),\n );\n return pixelBounds;\n }\n\n public pruneTiles() {\n Object.keys(this.tileList).map((key) => {\n const c = this.tileList[key].coords;\n // 如果不是同一个缩放层级,则将瓦片设为不显示\n if (\n c[2] !== this.tileZoom ||\n !this.noPruneRange.contains(new Point(c[0], c[1]))\n ) {\n this.tileList[key].current = false;\n }\n });\n\n Object.keys(this.tileList).map((key) => {\n const tile = this.tileList[key];\n tile.retain = tile.current;\n });\n\n Object.keys(this.tileList).map((key) => {\n const tile = this.tileList[key];\n if (tile.current && !tile.active) {\n const [x, y, z] = key.split('_').map((v) => Number(v));\n\n if (!this.retainParent(x, y, z, z - 5)) {\n this.retainChildren(x, y, z, z + 2);\n }\n }\n });\n\n this.removeOutTiles();\n }\n\n public requestTile(key: string) {\n const t = this.tileList[key];\n if (!t) {\n return;\n }\n let tile = this.tileCache.getTile(key);\n if (!tile) {\n const container = createLayerContainer(\n this.layer.sceneContainer as Container,\n );\n tile = new ImageTile(\n key,\n this.url,\n container,\n this.layer.sceneContainer as Container,\n );\n tile.name = key;\n\n t.current = true;\n t.retain = true;\n t.active = true;\n\n // 往 imageTileLayer 中添加子图层\n this.layer.addChild(tile.imageLayer);\n\n this.tileCache.setTile(tile, key);\n\n this.pruneTiles();\n this.layerService.updateLayerRenderList();\n this.layerService.renderLayers();\n } else {\n // Tip: show 方法就是将相应的瓦片图片添加到渲染队列\n tile.imageLayer.show();\n t.current = true;\n t.retain = true;\n t.active = true;\n\n this.pruneTiles();\n }\n }\n\n public retainParent(x: number, y: number, z: number, minZoom: number): any {\n const x2 = Math.floor(x / 2);\n const y2 = Math.floor(y / 2);\n const z2 = z - 1;\n const tile = this.tileList[[x2, y2, z2].join('_')];\n if (tile && tile.active) {\n tile.retain = true;\n return true;\n } else if (tile && tile.loaded) {\n tile.retain = true;\n }\n if (z2 > minZoom) {\n return this.retainParent(x2, y2, z2, minZoom);\n }\n return false;\n }\n\n public retainChildren(x: number, y: number, z: number, maxZoom: number) {\n for (let i = 2 * x; i < 2 * x + 2; i++) {\n for (let j = 2 * y; j < 2 * y + 2; j++) {\n const key = [i, j, z + 1].join('_');\n const tile = this.tileList[key];\n if (tile && tile.active) {\n tile.retain = true;\n continue;\n } else if (tile && tile.loaded) {\n tile.retain = true;\n }\n\n if (z + 1 < maxZoom) {\n this.retainChildren(i, j, z + 1, maxZoom);\n }\n }\n }\n }\n\n public destroyTile(tile: any) {\n this.layer.removeChild(tile.imageLayer);\n this.layerService.updateLayerRenderList();\n this.layerService.renderLayers();\n\n // 清除 tileCache 中的存储 相当于 tileCache.setTile(tile, null)\n tile = null;\n }\n\n public removeOutTiles() {\n for (const key in this.tileList) {\n if (!this.tileList[key].retain) {\n // Tip: 不需要显示的瓦片对象\n const tile = this.tileCache.getTile(key);\n // Tip: 若是网格对象存在\n if (tile) {\n // Tip: hide 方法就是将相应的瓦片图片从渲染队列中剔除\n tile.imageLayer.hide();\n }\n delete this.tileList[key];\n }\n }\n }\n\n public removeTiles() {\n this.layer.clearChild();\n this.layerService.updateLayerRenderList();\n this.layerService.renderLayers();\n this.tileList = {};\n this.tileCache.destory();\n }\n}\n"],"file":"Tile.js"}
|
package/lib/line/models/line.js
CHANGED
|
@@ -38,7 +38,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
|
|
|
38
38
|
var line_dash_frag = "#define LineTypeSolid 0.0\nuniform float u_opacity : 1.0;\n\nvarying vec4 v_color;\n\n// dash\nvarying vec4 v_dash_array;\n\n#pragma include \"picking\"\n\nuniform float u_time;\nuniform vec4 u_aimate: [ 0, 2., 1.0, 0.2 ]; // \u63A7\u5236\u8FD0\u52A8\n\nvarying mat4 styleMappingMat;\n// [animate, duration, interval, trailLength],\nvoid main() {\n float opacity = styleMappingMat[0][0];\n float d_distance_ratio = styleMappingMat[3].r; // \u5F53\u524D\u70B9\u4F4D\u8DDD\u79BB\u5360\u7EBF\u603B\u957F\u7684\u6BD4\u4F8B\n gl_FragColor = v_color;\n gl_FragColor.a *= opacity; // \u5168\u5C40\u900F\u660E\u5EA6\n // dash line\n \n float flag = 0.;\n float dashLength = mod(d_distance_ratio, v_dash_array.x + v_dash_array.y + v_dash_array.z + v_dash_array.w);\n if(dashLength < v_dash_array.x || (dashLength > (v_dash_array.x + v_dash_array.y) && dashLength < v_dash_array.x + v_dash_array.y + v_dash_array.z)) {\n flag = 1.;\n }\n gl_FragColor.a *=flag;\n\n gl_FragColor = filterColor(gl_FragColor);\n}\n";
|
|
39
39
|
var line_dash_vert = "#define LineTypeSolid 0.0\n#define LineTypeDash 1.0\n#define Animate 0.0\n\nattribute float a_Miter;\nattribute vec4 a_Color;\nattribute vec2 a_Size;\nattribute vec3 a_Normal;\nattribute vec3 a_Position;\n\nattribute vec2 a_iconMapUV;\n\n// dash line\nattribute float a_Total_Distance;\nattribute float a_Distance;\n\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\nuniform vec4 u_dash_array: [10.0, 5., 0, 0];\n\nuniform float u_vertexScale: 1.0;\n\n#pragma include \"projection\"\n#pragma include \"picking\"\n\nvarying vec4 v_color;\nvarying vec4 v_dash_array;\n\nuniform float u_opacity: 1.0;\nvarying mat4 styleMappingMat; // \u7528\u4E8E\u5C06\u5728\u9876\u70B9\u7740\u8272\u5668\u4E2D\u8BA1\u7B97\u597D\u7684\u6837\u5F0F\u503C\u4F20\u9012\u7ED9\u7247\u5143\n\n#pragma include \"styleMapping\"\n#pragma include \"styleMappingCalOpacity\"\n\nvoid main() {\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n styleMappingMat = mat4(\n 0.0, 0.0, 0.0, 0.0, // opacity - strokeOpacity - strokeWidth - empty\n 0.0, 0.0, 0.0, 0.0, // strokeR - strokeG - strokeB - strokeA\n 0.0, 0.0, 0.0, 0.0, // offsets[0] - offsets[1]\n 0.0, 0.0, 0.0, 0.0 // distance_ratio/distance/pixelLen/texV\n );\n\n float rowCount = u_cellTypeLayout[0][0]; // \u5F53\u524D\u7684\u6570\u636E\u7EB9\u7406\u6709\u51E0\u884C\n float columnCount = u_cellTypeLayout[0][1]; // \u5F53\u770B\u5230\u6570\u636E\u7EB9\u7406\u6709\u51E0\u5217\n float columnWidth = 1.0/columnCount; // \u5217\u5BBD\n float rowHeight = 1.0/rowCount; // \u884C\u9AD8\n float cellCount = calCellCount(); // opacity - strokeOpacity - strokeWidth - stroke - offsets\n float id = a_vertexId; // \u7B2Cn\u4E2A\u9876\u70B9\n float cellCurrentRow = floor(id * cellCount / columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u884C\n float cellCurrentColumn = mod(id * cellCount, columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u5217\n \n // cell \u56FA\u5B9A\u987A\u5E8F opacity -> strokeOpacity -> strokeWidth -> stroke ... \n // \u6309\u987A\u5E8F\u4ECE cell \u4E2D\u53D6\u503C\u3001\u82E5\u6CA1\u6709\u5219\u81EA\u52A8\u5F80\u4E0B\u53D6\u503C\n float textureOffset = 0.0; // \u5728 cell \u4E2D\u53D6\u503C\u7684\u504F\u79FB\u91CF\n\n vec2 opacityAndOffset = calOpacityAndOffset(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset, columnWidth, rowHeight);\n styleMappingMat[0][0] = opacityAndOffset.r;\n textureOffset = opacityAndOffset.g;\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n\n v_dash_array = pow(2.0, 20.0 - u_Zoom) * u_dash_array / a_Total_Distance;\n v_color = a_Color;\n\n vec3 size = a_Miter * setPickingSize(a_Size.x) * reverse_offset_normal(a_Normal);\n vec2 offset = project_pixel(size.xy);\n\n // \u8BBE\u7F6E\u6570\u636E\u96C6\u7684\u53C2\u6570\n styleMappingMat[3][0] = a_Distance / a_Total_Distance; // \u5F53\u524D\u70B9\u4F4D\u8DDD\u79BB\u5360\u7EBF\u603B\u957F\u7684\u6BD4\u4F8B\n styleMappingMat[3][1] = a_Distance; // \u5F53\u524D\u9876\u70B9\u7684\u8DDD\u79BB\n\n vec4 project_pos = project_position(vec4(a_Position.xy, 0, 1.0));\n\n // gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy + offset, a_Size.y, 1.0));\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n gl_Position = u_Mvp * (vec4(project_pos.xy + offset, project_pixel(a_Size.y), 1.0));\n } else {\n float lineHeight = a_Size.y;\n \n // #define COORDINATE_SYSTEM_P20 5.0\n // #define COORDINATE_SYSTEM_P20_OFFSET 6.0\n // amap1.x\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20 || u_CoordinateSystem == COORDINATE_SYSTEM_P20_OFFSET) {\n // \u4FDD\u6301\u9AD8\u5EA6\u76F8\u5BF9\u4E0D\u53D8\n lineHeight *= pow(2.0, 20.0 - u_Zoom);\n }\n\n gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy + offset, lineHeight, 1.0));\n }\n\n setPickingColor(a_PickingColor);\n}\n";
|
|
40
40
|
var line_frag = "#define Animate 0.0\n#define LineTexture 1.0\nuniform float u_blur : 0.99;\nuniform float u_opacity : 1.0;\nuniform float u_textureBlend;\n\nuniform float u_borderWidth: 0.0;\nuniform vec4 u_borderColor;\nvarying vec4 v_color;\n\n// line texture\nuniform float u_line_texture;\nuniform sampler2D u_texture;\nuniform vec2 u_textSize;\n\nvarying vec2 v_iconMapUV;\n\n#pragma include \"picking\"\n\nuniform float u_time;\nuniform vec4 u_aimate: [ 0, 2., 1.0, 0.2 ]; // \u63A7\u5236\u8FD0\u52A8\n\nvarying mat4 styleMappingMat;\n// [animate, duration, interval, trailLength],\nvoid main() {\n float opacity = styleMappingMat[0][0];\n float animateSpeed = 0.0; // \u8FD0\u52A8\u901F\u5EA6\n float d_distance_ratio = styleMappingMat[3].r; // \u5F53\u524D\u70B9\u4F4D\u8DDD\u79BB\u5360\u7EBF\u603B\u957F\u7684\u6BD4\u4F8B\n gl_FragColor = v_color;\n // anti-alias\n // float blur = 1.0 - smoothstep(u_blur, 1., length(v_normal.xy));\n gl_FragColor.a *= opacity; // \u5168\u5C40\u900F\u660E\u5EA6\n if(u_aimate.x == Animate) {\n animateSpeed = u_time / u_aimate.y;\n float alpha =1.0 - fract( mod(1.0- d_distance_ratio, u_aimate.z)* (1.0/ u_aimate.z) + animateSpeed);\n alpha = (alpha + u_aimate.w -1.0) / u_aimate.w;\n alpha = smoothstep(0., 1., alpha);\n gl_FragColor.a *= alpha;\n }\n\n if(u_line_texture == LineTexture) { // while load texture\n float aDistance = styleMappingMat[3].g; // \u5F53\u524D\u9876\u70B9\u7684\u8DDD\u79BB\n float d_texPixelLen = styleMappingMat[3].b; // \u8D34\u56FE\u7684\u50CF\u7D20\u957F\u5EA6\uFF0C\u6839\u636E\u5730\u56FE\u5C42\u7EA7\u7F29\u653E\n float u = fract(mod(aDistance, d_texPixelLen)/d_texPixelLen - animateSpeed);\n float v = styleMappingMat[3].a; // \u7EBF\u56FE\u5C42\u8D34\u56FE\u90E8\u5206\u7684 v \u5750\u6807\u503C\n\n // v = max(smoothstep(0.95, 1.0, v), v);\n vec2 uv= v_iconMapUV / u_textSize + vec2(u, v) / u_textSize * 64.;\n \n // gl_FragColor = filterColor(gl_FragColor + texture2D(u_texture, vec2(u, v)));\n // gl_FragColor = filterColor(gl_FragColor + texture2D(u_texture, uv));\n vec4 pattern = texture2D(u_texture, uv);\n\n if(u_textureBlend == 0.0) { // normal\n pattern.a = 0.0;\n gl_FragColor += pattern;\n } else { // replace\n pattern.a *= opacity;\n if(gl_FragColor.a <= 0.0) {\n pattern.a = 0.0;\n }\n gl_FragColor = pattern;\n }\n } \n\n float v = styleMappingMat[3].a;\n float borderWidth = min(0.5, u_borderWidth);\n // \u7ED8\u5236 border\n if(borderWidth > 0.01) {\n float borderOuterWidth = borderWidth/2.0;\n\n if(v >= 1.0 - borderWidth || v <= borderWidth) {\n if(v > borderWidth) {\n float linear = smoothstep(0.0, 1.0, (v - (1.0 - borderWidth))/borderWidth);\n gl_FragColor.rgb = mix(gl_FragColor.rgb, u_borderColor.rgb, linear);\n } else if(v <= borderWidth) {\n float linear = smoothstep(0.0, 1.0, v/borderWidth);\n gl_FragColor.rgb = mix(u_borderColor.rgb, gl_FragColor.rgb, linear);\n }\n }\n\n if(v < borderOuterWidth) {\n gl_FragColor.a = mix(0.0, gl_FragColor.a, v/borderOuterWidth);\n } else if(v > 1.0 - borderOuterWidth) {\n gl_FragColor.a = mix(gl_FragColor.a, 0.0, (v - (1.0 - borderOuterWidth))/borderOuterWidth);\n }\n }\n\n gl_FragColor = filterColor(gl_FragColor);\n}\n";
|
|
41
|
-
var line_vert = "\n#define Animate 0.0\n\nattribute float a_Miter;\nattribute vec4 a_Color;\nattribute vec2 a_Size;\nattribute vec3 a_Normal;\nattribute vec3 a_Position;\n\nattribute vec2 a_iconMapUV;\n\n// dash line\nattribute float a_Total_Distance;\nattribute
|
|
41
|
+
var line_vert = "\n#define Animate 0.0\n\nattribute float a_Miter;\nattribute vec4 a_Color;\nattribute vec2 a_Size;\nattribute vec3 a_Normal;\nattribute vec3 a_Position;\n\nattribute vec2 a_iconMapUV;\n\n// dash line\nattribute float a_Total_Distance;\nattribute vec2 a_Distance;\n\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\nuniform vec4 u_aimate: [ 0, 2., 1.0, 0.2 ];\nuniform float u_icon_step: 100;\n\nuniform float u_heightfixed: 0.0;\nuniform float u_vertexScale: 1.0;\nuniform float u_raisingHeight: 0.0;\n\n#pragma include \"projection\"\n#pragma include \"picking\"\n\nvarying vec4 v_color;\n\n// texV \u7EBF\u56FE\u5C42 - \u8D34\u56FE\u90E8\u5206\u7684 v \u5750\u6807\uFF08\u7EBF\u7684\u5BBD\u5EA6\u65B9\u5411\uFF09\nvarying vec2 v_iconMapUV;\n\n\nuniform float u_linearColor: 0;\nuniform float u_arrow: 0.0;\nuniform float u_arrowHeight: 3.0;\nuniform float u_arrowWidth: 2.0;\n\nuniform float u_opacity: 1.0;\nvarying mat4 styleMappingMat; // \u7528\u4E8E\u5C06\u5728\u9876\u70B9\u7740\u8272\u5668\u4E2D\u8BA1\u7B97\u597D\u7684\u6837\u5F0F\u503C\u4F20\u9012\u7ED9\u7247\u5143\n\n#pragma include \"styleMapping\"\n#pragma include \"styleMappingCalOpacity\"\n\nvec2 calculateArrow(vec2 offset) {\n /*\n * \u5728\u652F\u6301\u7BAD\u5934\u7684\u65F6\u5019\uFF0C\u7B2C\u4E8C\u3001\u7B2C\u4E09\u7EC4\u9876\u70B9\u662F\u989D\u5916\u63D2\u5165\u7528\u4E8E\u6784\u5EFA\u9876\u70B9\u7684\n */\n float arrowFlag = -1.0;\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) {\n // \u9AD8\u5FB7 2.0 \u7684\u65CB\u8F6C\u89D2\u5EA6\u4E0D\u540C\n arrowFlag = 1.0;\n }\n float pi = arrowFlag * 3.1415926/2.;\n if(a_Miter < 0.) {\n // \u6839\u636E\u7EBF\u7684\u4E24\u4FA7\u504F\u79FB\u4E0D\u540C\u3001\u65CB\u8F6C\u7684\u65B9\u5411\u76F8\u53CD\n pi = -pi;\n }\n highp float angle_sin = sin(pi);\n highp float angle_cos = cos(pi);\n // \u8BA1\u7B97\u5782\u76F4\u4E0E\u7EBF\u65B9\u5411\u7684\u65CB\u8F6C\u77E9\u9635\n mat2 rotation_matrix = mat2(angle_cos, -1.0 * angle_sin, angle_sin, angle_cos);\n float arrowWidth = u_arrowWidth;\n float arrowHeight = u_arrowHeight;\n\n vec2 arrowOffset = vec2(0.0);\n /*\n * a_Distance.y \u7528\u4E8E\u6807\u8BB0\u5F53\u524D\u9876\u70B9\u5C5E\u4E8E\u54EA\u4E00\u7EC4\uFF08\u4E24\u4E2A\u9876\u70B9\u4E00\u7EC4\uFF0C\u6784\u6210\u7EBF\u7684\u5176\u5B9E\u662F\u77E9\u5F62\uFF0C\u6700\u7B80\u9700\u8981\u56DB\u4E2A\u9876\u70B9\u3001\u4E24\u7EC4\u9876\u70B9\u6784\u6210\uFF09\n */\n if(a_Distance.y == 0.0) {\n // \u7BAD\u5934\u5C16\u90E8\n offset = vec2(0.0);\n } else if(a_Distance.y == 1.0) {\n // \u7BAD\u5934\u4E24\u4FA7\n arrowOffset = rotation_matrix*(offset * arrowHeight);\n offset += arrowOffset; // \u6CBF\u7EBF\u504F\u79FB\n offset = offset * arrowWidth; // \u5782\u76F4\u7EBF\u5411\u5916\u504F\u79FB\uFF08\u662F\u6784\u5EFA\u7BAD\u5934\u4E24\u4FA7\u7684\u9876\u70B9\uFF09\n } else if(a_Distance.y == 2.0 || a_Distance.y == 3.0 || a_Distance.y == 4.0) {\n // \u504F\u79FB\u5176\u4F59\u7684\u70B9\u4F4D\uFF08\u5C06\u957F\u5EA6\u8BA9\u4F4D\u7ED9\u7BAD\u5934\uFF09\n arrowOffset = rotation_matrix*(offset * arrowHeight) * arrowWidth;\n offset += arrowOffset;// \u6CBF\u7EBF\u504F\u79FB\n }\n\n return offset;\n}\n\nvoid main() {\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n styleMappingMat = mat4(\n 0.0, 0.0, 0.0, 0.0, // opacity - strokeOpacity - strokeWidth - empty\n 0.0, 0.0, 0.0, 0.0, // strokeR - strokeG - strokeB - strokeA\n 0.0, 0.0, 0.0, 0.0, // offsets[0] - offsets[1]\n 0.0, 0.0, 0.0, 0.0 // distance_ratio/distance/pixelLen/texV\n );\n\n float rowCount = u_cellTypeLayout[0][0]; // \u5F53\u524D\u7684\u6570\u636E\u7EB9\u7406\u6709\u51E0\u884C\n float columnCount = u_cellTypeLayout[0][1]; // \u5F53\u770B\u5230\u6570\u636E\u7EB9\u7406\u6709\u51E0\u5217\n float columnWidth = 1.0/columnCount; // \u5217\u5BBD\n float rowHeight = 1.0/rowCount; // \u884C\u9AD8\n float cellCount = calCellCount(); // opacity - strokeOpacity - strokeWidth - stroke - offsets\n float id = a_vertexId; // \u7B2Cn\u4E2A\u9876\u70B9\n float cellCurrentRow = floor(id * cellCount / columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u884C\n float cellCurrentColumn = mod(id * cellCount, columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u5217\n \n // cell \u56FA\u5B9A\u987A\u5E8F opacity -> strokeOpacity -> strokeWidth -> stroke ... \n // \u6309\u987A\u5E8F\u4ECE cell \u4E2D\u53D6\u503C\u3001\u82E5\u6CA1\u6709\u5219\u81EA\u52A8\u5F80\u4E0B\u53D6\u503C\n float textureOffset = 0.0; // \u5728 cell \u4E2D\u53D6\u503C\u7684\u504F\u79FB\u91CF\n\n vec2 opacityAndOffset = calOpacityAndOffset(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset, columnWidth, rowHeight);\n styleMappingMat[0][0] = opacityAndOffset.r;\n textureOffset = opacityAndOffset.g;\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n\n float d_texPixelLen; // \u8D34\u56FE\u7684\u50CF\u7D20\u957F\u5EA6\uFF0C\u6839\u636E\u5730\u56FE\u5C42\u7EA7\u7F29\u653E\n\n v_iconMapUV = a_iconMapUV;\n d_texPixelLen = project_float_pixel(u_icon_step);\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) {\n d_texPixelLen *= 10.0;\n }\n\n v_color = a_Color;\n\n vec3 size = a_Miter * setPickingSize(a_Size.x) * reverse_offset_normal(a_Normal);\n\n vec2 offset = project_pixel(size.xy);\n \n if(u_arrow > 0.0) {\n // \u8BA1\u7B97\u7BAD\u5934\n offset = calculateArrow(offset);\n }\n\n float lineOffsetWidth = length(offset + offset * sign(a_Miter)); // \u7EBF\u6A2A\u5411\u504F\u79FB\u7684\u8DDD\u79BB\uFF08\u5411\u4E24\u4FA7\u504F\u79FB\u7684\u548C\uFF09\n float linePixelSize = project_pixel(a_Size.x) * 2.0; // \u5B9A\u70B9\u4F4D\u7F6E\u504F\u79FB\uFF0C\u6309\u5730\u56FE\u7B49\u7EA7\u7F29\u653E\u540E\u7684\u8DDD\u79BB \u5355\u4FA7 * 2\n float texV = lineOffsetWidth/linePixelSize; // \u7EBF\u56FE\u5C42\u8D34\u56FE\u90E8\u5206\u7684 v \u5750\u6807\u503C\n\n // \u8BBE\u7F6E\u6570\u636E\u96C6\u7684\u53C2\u6570\n styleMappingMat[3][0] = a_Distance.x / a_Total_Distance;; // \u5F53\u524D\u70B9\u4F4D\u8DDD\u79BB\u5360\u7EBF\u603B\u957F\u7684\u6BD4\u4F8B\n styleMappingMat[3][1] = a_Distance.x; // \u5F53\u524D\u9876\u70B9\u7684\u8DDD\u79BB\n styleMappingMat[3][2] = d_texPixelLen; // \u8D34\u56FE\u7684\u50CF\u7D20\u957F\u5EA6\uFF0C\u6839\u636E\u5730\u56FE\u5C42\u7EA7\u7F29\u653E\n styleMappingMat[3][3] = texV; // \u7EBF\u56FE\u5C42\u8D34\u56FE\u90E8\u5206\u7684 v \u5750\u6807\u503C\n\n vec4 project_pos = project_position(vec4(a_Position.xy, 0, 1.0));\n\n // gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy + offset, a_Size.y, 1.0));\n\n float h = float(a_Position.z) * u_vertexScale; // \u7EBF\u9876\u70B9\u7684\u9AD8\u5EA6 - \u517C\u5BB9\u4E0D\u5B58\u5728\u7B2C\u4E09\u4E2A\u6570\u503C\u7684\u60C5\u51B5 vertex height\n float lineHeight = a_Size.y; // size \u7B2C\u4E8C\u4E2A\u53C2\u6570\u4EE3\u8868\u7684\u9AD8\u5EA6 [linewidth, lineheight]\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n lineHeight *= 0.2; // \u4FDD\u6301\u548C amap/mapbox \u4E00\u81F4\u7684\u6548\u679C\n h *= 0.2;\n if(u_heightfixed < 1.0) {\n lineHeight = project_pixel(a_Size.y);\n }\n gl_Position = u_Mvp * (vec4(project_pos.xy + offset, lineHeight + h + u_raisingHeight, 1.0));\n } else {\n // mapbox - amap\n \n // \u517C\u5BB9 mapbox \u5728\u7EBF\u9AD8\u5EA6\u4E0A\u7684\u6548\u679C\u8868\u73B0\u57FA\u672C\u4E00\u81F4\n if(u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT || u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSET) {\n // mapbox\n // \u4FDD\u6301\u9AD8\u5EA6\u76F8\u5BF9\u4E0D\u53D8\n float mapboxZoomScale = 4.0/pow(2.0, 21.0 - u_Zoom);\n h *= mapboxZoomScale;\n h += u_raisingHeight * mapboxZoomScale;\n if(u_heightfixed > 0.0) {\n lineHeight *= mapboxZoomScale;\n }\n \n } else {\n // amap\n h += u_raisingHeight;\n // lineHeight \u9876\u70B9\u504F\u79FB\u9AD8\u5EA6\n if(u_heightfixed < 1.0) {\n lineHeight *= pow(2.0, 20.0 - u_Zoom);\n }\n }\n\n gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy + offset, lineHeight + h, 1.0));\n }\n\n setPickingColor(a_PickingColor);\n}\n";
|
|
42
42
|
var linear_line_frag = "#define LineTypeSolid 0.0\n#define LineTypeDash 1.0\n#define Animate 0.0\n#define LineTexture 1.0\nuniform float u_blur : 0.99;\nuniform float u_line_type: 0.0;\nuniform float u_opacity : 1.0;\n\nvarying vec4 v_color;\n\nuniform float u_linearColor: 0;\nuniform vec4 u_sourceColor;\nuniform vec4 u_targetColor;\n\n#pragma include \"picking\"\n\n\nvarying mat4 styleMappingMat;\n// [animate, duration, interval, trailLength],\nvoid main() {\n float opacity = styleMappingMat[0][0];\n float d_distance_ratio = styleMappingMat[3].r; // \u5F53\u524D\u70B9\u4F4D\u8DDD\u79BB\u5360\u7EBF\u603B\u957F\u7684\u6BD4\u4F8B\n\n if(u_linearColor == 1.0) { // \u4F7F\u7528\u6E10\u53D8\u989C\u8272\n gl_FragColor = mix(u_sourceColor, u_targetColor, d_distance_ratio);\n } else { // \u4F7F\u7528 color \u65B9\u6CD5\u4F20\u5165\u7684\u989C\u8272\n gl_FragColor = v_color;\n }\n\n gl_FragColor.a *= opacity; // \u5168\u5C40\u900F\u660E\u5EA6\n gl_FragColor = filterColor(gl_FragColor);\n}\n";
|
|
43
43
|
var lineStyleObj = {
|
|
44
44
|
solid: 0.0,
|
|
@@ -112,7 +112,13 @@ var LineModel = function (_BaseModel) {
|
|
|
112
112
|
_ref$raisingHeight = _ref.raisingHeight,
|
|
113
113
|
raisingHeight = _ref$raisingHeight === void 0 ? 0 : _ref$raisingHeight,
|
|
114
114
|
_ref$heightfixed = _ref.heightfixed,
|
|
115
|
-
heightfixed = _ref$heightfixed === void 0 ? false : _ref$heightfixed
|
|
115
|
+
heightfixed = _ref$heightfixed === void 0 ? false : _ref$heightfixed,
|
|
116
|
+
_ref$arrow = _ref.arrow,
|
|
117
|
+
arrow = _ref$arrow === void 0 ? {
|
|
118
|
+
enable: false,
|
|
119
|
+
arrowWidth: 2,
|
|
120
|
+
arrowHeight: 3
|
|
121
|
+
} : _ref$arrow;
|
|
116
122
|
|
|
117
123
|
if (dashArray.length === 2) {
|
|
118
124
|
dashArray.push(0, 0);
|
|
@@ -181,7 +187,10 @@ var LineModel = function (_BaseModel) {
|
|
|
181
187
|
u_targetColor: targetColorArr,
|
|
182
188
|
u_heightfixed: Number(heightfixed),
|
|
183
189
|
u_vertexScale: vertexHeightScale,
|
|
184
|
-
u_raisingHeight: Number(raisingHeight)
|
|
190
|
+
u_raisingHeight: Number(raisingHeight),
|
|
191
|
+
u_arrow: Number(arrow.enable),
|
|
192
|
+
u_arrowHeight: arrow.arrowHeight || 3,
|
|
193
|
+
u_arrowWidth: arrow.arrowWidth || 2
|
|
185
194
|
};
|
|
186
195
|
}
|
|
187
196
|
}, {
|
|
@@ -285,9 +294,9 @@ var LineModel = function (_BaseModel) {
|
|
|
285
294
|
data: [],
|
|
286
295
|
type: _l7Core.gl.FLOAT
|
|
287
296
|
},
|
|
288
|
-
size:
|
|
289
|
-
update: function update(feature, featureIdx, vertex, attributeIdx) {
|
|
290
|
-
return [vertex[3]];
|
|
297
|
+
size: 2,
|
|
298
|
+
update: function update(feature, featureIdx, vertex, attributeIdx, normal, vertexIndex) {
|
|
299
|
+
return vertexIndex === undefined ? [vertex[3], 10] : [vertex[3], vertexIndex];
|
|
291
300
|
}
|
|
292
301
|
}
|
|
293
302
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/line/models/line.ts"],"names":["lineStyleObj","solid","dash","LineModel","createTexture2D","rendererService","texture","update","data","iconService","getCanvas","layer","render","mag","gl","NEAREST","min","premultiplyAlpha","width","height","canvasHeight","getLayerConfig","opacity","sourceColor","targetColor","textureBlend","lineType","dashArray","lineTexture","iconStep","vertexHeightScale","borderWidth","borderColor","raisingHeight","heightfixed","length","push","getDirty","bind","useLinearColor","sourceColorArr","targetColorArr","dataTextureTest","dataTextureNeedUpdate","judgeStyleAttributes","encodeData","getEncodedData","calDataFrame","cellLength","cellProperties","rowCount","dataTexture","flipY","format","LUMINANCE","type","FLOAT","u_dataTexture","u_cellTypeLayout","getCellTypeLayout","u_opacity","u_textureBlend","u_line_type","u_dash_array","u_texture","u_line_texture","u_icon_step","u_textSize","u_borderWidth","u_borderColor","u_linearColor","u_sourceColor","u_targetColor","u_heightfixed","Number","u_vertexScale","u_raisingHeight","animateOption","u_aimate","animateOption2Array","u_time","getLayerAnimateTime","updateTexture","on","buildModels","destroy","off","mask","maskInside","depth","getShaders","frag","vert","buildLayerModel","moduleName","vertexShader","fragmentShader","triangulation","LineTriangulation","primitive","TRIANGLES","blend","getBlend","enable","stencil","line_dash_frag","line_dash_vert","linear_line_frag","line_vert","line_frag","styleAttributeService","registerStyleAttribute","name","AttributeType","Attribute","descriptor","buffer","usage","STATIC_DRAW","size","feature","featureIdx","vertex","attributeIdx","DYNAMIC_DRAW","Array","isArray","normal","iconMap","getIconMap","x","y","BaseModel"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IAnimateOption,\n IEncodeFeature,\n IImage,\n ILayerConfig,\n IModel,\n IModelUniform,\n ITexture2D,\n} from '@antv/l7-core';\n\nimport { getMask, rgb2arr } from '@antv/l7-utils';\nimport { isNumber } from 'lodash';\nimport BaseModel from '../../core/BaseModel';\nimport { ILineLayerStyleOptions, lineStyleType } from '../../core/interface';\nimport { LineTriangulation } from '../../core/triangulation';\n// dash line shader\nimport line_dash_frag from '../shaders/dash/line_dash_frag.glsl';\nimport line_dash_vert from '../shaders/dash/line_dash_vert.glsl';\n// basic line shader\nimport line_frag from '../shaders/line_frag.glsl';\nimport line_vert from '../shaders/line_vert.glsl';\n// other function shaders\nimport linear_line_frag from '../shaders/linear/line_linear_frag.glsl';\n\nconst lineStyleObj: { [key: string]: number } = {\n solid: 0.0,\n dash: 1.0,\n};\nexport default class LineModel extends BaseModel {\n protected texture: ITexture2D;\n public getUninforms(): IModelUniform {\n const {\n opacity,\n sourceColor,\n targetColor,\n textureBlend = 'normal',\n lineType = 'solid',\n dashArray = [10, 5, 0, 0],\n lineTexture = false,\n iconStep = 100,\n vertexHeightScale = 20.0,\n borderWidth = 0.0,\n borderColor = '#ccc',\n raisingHeight = 0,\n heightfixed = false,\n } = this.layer.getLayerConfig() as ILineLayerStyleOptions;\n if (dashArray.length === 2) {\n dashArray.push(0, 0);\n }\n\n if (this.rendererService.getDirty()) {\n this.texture.bind();\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.dataTextureTest && this.dataTextureNeedUpdate({ opacity })) {\n this.judgeStyleAttributes({ opacity });\n const encodeData = this.layer.getEncodedData();\n const { data, width, height } = this.calDataFrame(\n this.cellLength,\n encodeData,\n this.cellProperties,\n );\n this.rowCount = height; // 当前数据纹理有多少行\n\n this.dataTexture =\n this.cellLength > 0 && data.length > 0\n ? this.createTexture2D({\n flipY: true,\n data,\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width,\n height,\n })\n : this.createTexture2D({\n flipY: true,\n data: [1],\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width: 1,\n height: 1,\n });\n }\n\n return {\n u_dataTexture: this.dataTexture, // 数据纹理 - 有数据映射的时候纹理中带数据,若没有任何数据映射时纹理是 [1]\n u_cellTypeLayout: this.getCellTypeLayout(),\n // u_opacity: opacity === undefined ? 1 : opacity,\n u_opacity: isNumber(opacity) ? opacity : 1.0,\n u_textureBlend: textureBlend === 'normal' ? 0.0 : 1.0,\n u_line_type: lineStyleObj[lineType],\n u_dash_array: dashArray,\n\n // 纹理支持参数\n u_texture: this.texture, // 贴图\n u_line_texture: lineTexture ? 1.0 : 0.0, // 传入线的标识\n u_icon_step: iconStep,\n u_textSize: [1024, this.iconService.canvasHeight || 128],\n\n // line border 参数\n u_borderWidth: borderWidth,\n u_borderColor: rgb2arr(borderColor),\n\n // 渐变色支持参数\n u_linearColor: useLinearColor,\n u_sourceColor: sourceColorArr,\n u_targetColor: targetColorArr,\n\n // 是否固定高度\n u_heightfixed: Number(heightfixed),\n\n // 顶点高度 scale\n u_vertexScale: vertexHeightScale,\n u_raisingHeight: Number(raisingHeight),\n };\n }\n public getAnimateUniforms(): IModelUniform {\n const { animateOption } = this.layer.getLayerConfig() as ILayerConfig;\n return {\n u_aimate: this.animateOption2Array(animateOption as IAnimateOption),\n u_time: this.layer.getLayerAnimateTime(),\n };\n }\n\n public initModels(): IModel[] {\n this.updateTexture();\n this.iconService.on('imageUpdate', this.updateTexture);\n\n return this.buildModels();\n }\n\n public clearModels() {\n this.texture?.destroy();\n this.dataTexture?.destroy();\n this.iconService.off('imageUpdate', this.updateTexture);\n }\n\n public buildModels(): IModel[] {\n const {\n mask = false,\n maskInside = true,\n depth = false,\n } = this.layer.getLayerConfig() as ILineLayerStyleOptions;\n const { frag, vert, type } = this.getShaders();\n return [\n this.layer.buildLayerModel({\n moduleName: 'line_' + type,\n vertexShader: vert,\n fragmentShader: frag,\n triangulation: LineTriangulation,\n primitive: gl.TRIANGLES,\n blend: this.getBlend(),\n depth: { enable: depth },\n // depth: { enable: true },\n stencil: getMask(mask, maskInside),\n }),\n ];\n }\n\n /**\n * 根据参数获取不同的 shader 代码\n * @returns\n */\n public getShaders(): { frag: string; vert: string; type: string } {\n const {\n sourceColor,\n targetColor,\n lineType,\n } = this.layer.getLayerConfig() as ILineLayerStyleOptions;\n\n if (lineType === 'dash') {\n return {\n frag: line_dash_frag,\n vert: line_dash_vert,\n type: 'dash',\n };\n }\n\n if (sourceColor && targetColor) {\n // 分离 linear 功能\n return {\n frag: linear_line_frag,\n vert: line_vert,\n type: 'linear',\n };\n } else {\n return {\n frag: line_frag,\n vert: line_vert,\n type: 'normal',\n };\n }\n }\n\n protected registerBuiltinAttributes() {\n this.styleAttributeService.registerStyleAttribute({\n name: 'distance',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Distance',\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: 1,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n return [vertex[3]];\n },\n },\n });\n this.styleAttributeService.registerStyleAttribute({\n name: 'total_distance',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Total_Distance',\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: 1,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n return [vertex[5]];\n },\n },\n });\n\n this.styleAttributeService.registerStyleAttribute({\n name: 'size',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Size',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 2,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const { size = 1 } = feature;\n return Array.isArray(size) ? [size[0], size[1]] : [size as number, 0];\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 // @ts-ignore\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n normal: number[],\n ) => {\n return normal;\n },\n },\n });\n\n this.styleAttributeService.registerStyleAttribute({\n name: 'miter',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Miter',\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: 1,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n return [vertex[4]];\n },\n },\n });\n\n this.styleAttributeService.registerStyleAttribute({\n name: 'uv',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_iconMapUV',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 2,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const iconMap = this.iconService.getIconMap();\n const { texture } = feature;\n const { x, y } = iconMap[texture as string] || { x: 0, y: 0 };\n return [x, y];\n },\n },\n });\n }\n\n private updateTexture = () => {\n const { createTexture2D } = this.rendererService;\n if (this.texture) {\n this.texture.update({\n data: this.iconService.getCanvas(),\n });\n this.layer.render();\n return;\n }\n this.texture = createTexture2D({\n data: this.iconService.getCanvas(),\n mag: gl.NEAREST,\n min: gl.NEAREST,\n premultiplyAlpha: false,\n width: 1024,\n height: this.iconService.canvasHeight || 128,\n });\n };\n}\n"],"file":"line.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/line/models/line.ts"],"names":["lineStyleObj","solid","dash","LineModel","createTexture2D","rendererService","texture","update","data","iconService","getCanvas","layer","render","mag","gl","NEAREST","min","premultiplyAlpha","width","height","canvasHeight","getLayerConfig","opacity","sourceColor","targetColor","textureBlend","lineType","dashArray","lineTexture","iconStep","vertexHeightScale","borderWidth","borderColor","raisingHeight","heightfixed","arrow","enable","arrowWidth","arrowHeight","length","push","getDirty","bind","useLinearColor","sourceColorArr","targetColorArr","dataTextureTest","dataTextureNeedUpdate","judgeStyleAttributes","encodeData","getEncodedData","calDataFrame","cellLength","cellProperties","rowCount","dataTexture","flipY","format","LUMINANCE","type","FLOAT","u_dataTexture","u_cellTypeLayout","getCellTypeLayout","u_opacity","u_textureBlend","u_line_type","u_dash_array","u_texture","u_line_texture","u_icon_step","u_textSize","u_borderWidth","u_borderColor","u_linearColor","u_sourceColor","u_targetColor","u_heightfixed","Number","u_vertexScale","u_raisingHeight","u_arrow","u_arrowHeight","u_arrowWidth","animateOption","u_aimate","animateOption2Array","u_time","getLayerAnimateTime","updateTexture","on","buildModels","destroy","off","mask","maskInside","depth","getShaders","frag","vert","buildLayerModel","moduleName","vertexShader","fragmentShader","triangulation","LineTriangulation","primitive","TRIANGLES","blend","getBlend","stencil","line_dash_frag","line_dash_vert","linear_line_frag","line_vert","line_frag","styleAttributeService","registerStyleAttribute","name","AttributeType","Attribute","descriptor","buffer","usage","STATIC_DRAW","size","feature","featureIdx","vertex","attributeIdx","normal","vertexIndex","undefined","DYNAMIC_DRAW","Array","isArray","iconMap","getIconMap","x","y","BaseModel"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IAnimateOption,\n IEncodeFeature,\n IImage,\n ILayerConfig,\n IModel,\n IModelUniform,\n ITexture2D,\n} from '@antv/l7-core';\n\nimport { getMask, rgb2arr } from '@antv/l7-utils';\nimport { isNumber } from 'lodash';\nimport BaseModel from '../../core/BaseModel';\nimport { ILineLayerStyleOptions, lineStyleType } from '../../core/interface';\nimport { LineTriangulation } from '../../core/triangulation';\n// dash line shader\nimport line_dash_frag from '../shaders/dash/line_dash_frag.glsl';\nimport line_dash_vert from '../shaders/dash/line_dash_vert.glsl';\n// basic line shader\nimport line_frag from '../shaders/line_frag.glsl';\nimport line_vert from '../shaders/line_vert.glsl';\n// other function shaders\nimport linear_line_frag from '../shaders/linear/line_linear_frag.glsl';\n\nconst lineStyleObj: { [key: string]: number } = {\n solid: 0.0,\n dash: 1.0,\n};\nexport default class LineModel extends BaseModel {\n protected texture: ITexture2D;\n public getUninforms(): IModelUniform {\n const {\n opacity,\n sourceColor,\n targetColor,\n textureBlend = 'normal',\n lineType = 'solid',\n dashArray = [10, 5, 0, 0],\n lineTexture = false,\n iconStep = 100,\n vertexHeightScale = 20.0,\n borderWidth = 0.0,\n borderColor = '#ccc',\n raisingHeight = 0,\n heightfixed = false,\n arrow = {\n enable: false,\n arrowWidth: 2,\n arrowHeight: 3,\n },\n } = this.layer.getLayerConfig() as ILineLayerStyleOptions;\n if (dashArray.length === 2) {\n dashArray.push(0, 0);\n }\n\n if (this.rendererService.getDirty()) {\n this.texture.bind();\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.dataTextureTest && this.dataTextureNeedUpdate({ opacity })) {\n this.judgeStyleAttributes({ opacity });\n const encodeData = this.layer.getEncodedData();\n const { data, width, height } = this.calDataFrame(\n this.cellLength,\n encodeData,\n this.cellProperties,\n );\n this.rowCount = height; // 当前数据纹理有多少行\n\n this.dataTexture =\n this.cellLength > 0 && data.length > 0\n ? this.createTexture2D({\n flipY: true,\n data,\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width,\n height,\n })\n : this.createTexture2D({\n flipY: true,\n data: [1],\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width: 1,\n height: 1,\n });\n }\n\n return {\n u_dataTexture: this.dataTexture, // 数据纹理 - 有数据映射的时候纹理中带数据,若没有任何数据映射时纹理是 [1]\n u_cellTypeLayout: this.getCellTypeLayout(),\n // u_opacity: opacity === undefined ? 1 : opacity,\n u_opacity: isNumber(opacity) ? opacity : 1.0,\n u_textureBlend: textureBlend === 'normal' ? 0.0 : 1.0,\n u_line_type: lineStyleObj[lineType],\n u_dash_array: dashArray,\n\n // 纹理支持参数\n u_texture: this.texture, // 贴图\n u_line_texture: lineTexture ? 1.0 : 0.0, // 传入线的标识\n u_icon_step: iconStep,\n u_textSize: [1024, this.iconService.canvasHeight || 128],\n\n // line border 参数\n u_borderWidth: borderWidth,\n u_borderColor: rgb2arr(borderColor),\n\n // 渐变色支持参数\n u_linearColor: useLinearColor,\n u_sourceColor: sourceColorArr,\n u_targetColor: targetColorArr,\n\n // 是否固定高度\n u_heightfixed: Number(heightfixed),\n\n // 顶点高度 scale\n u_vertexScale: vertexHeightScale,\n u_raisingHeight: Number(raisingHeight),\n\n // arrow\n u_arrow: Number(arrow.enable),\n u_arrowHeight: arrow.arrowHeight || 3,\n u_arrowWidth: arrow.arrowWidth || 2,\n };\n }\n public getAnimateUniforms(): IModelUniform {\n const { animateOption } = this.layer.getLayerConfig() as ILayerConfig;\n return {\n u_aimate: this.animateOption2Array(animateOption as IAnimateOption),\n u_time: this.layer.getLayerAnimateTime(),\n };\n }\n\n public initModels(): IModel[] {\n this.updateTexture();\n this.iconService.on('imageUpdate', this.updateTexture);\n\n return this.buildModels();\n }\n\n public clearModels() {\n this.texture?.destroy();\n this.dataTexture?.destroy();\n this.iconService.off('imageUpdate', this.updateTexture);\n }\n\n public buildModels(): IModel[] {\n const {\n mask = false,\n maskInside = true,\n depth = false,\n } = this.layer.getLayerConfig() as ILineLayerStyleOptions;\n const { frag, vert, type } = this.getShaders();\n return [\n this.layer.buildLayerModel({\n moduleName: 'line_' + type,\n vertexShader: vert,\n fragmentShader: frag,\n triangulation: LineTriangulation,\n primitive: gl.TRIANGLES,\n blend: this.getBlend(),\n depth: { enable: depth },\n // depth: { enable: true },\n stencil: getMask(mask, maskInside),\n }),\n ];\n }\n\n /**\n * 根据参数获取不同的 shader 代码\n * @returns\n */\n public getShaders(): { frag: string; vert: string; type: string } {\n const {\n sourceColor,\n targetColor,\n lineType,\n } = this.layer.getLayerConfig() as ILineLayerStyleOptions;\n\n if (lineType === 'dash') {\n return {\n frag: line_dash_frag,\n vert: line_dash_vert,\n type: 'dash',\n };\n }\n\n if (sourceColor && targetColor) {\n // 分离 linear 功能\n return {\n frag: linear_line_frag,\n vert: line_vert,\n type: 'linear',\n };\n } else {\n return {\n frag: line_frag,\n vert: line_vert,\n type: 'normal',\n };\n }\n }\n\n protected registerBuiltinAttributes() {\n this.styleAttributeService.registerStyleAttribute({\n name: 'distance',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Distance',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.STATIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 2,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n normal: number[],\n vertexIndex?: number,\n ) => {\n return vertexIndex === undefined\n ? [vertex[3], 10]\n : [vertex[3], vertexIndex];\n },\n },\n });\n this.styleAttributeService.registerStyleAttribute({\n name: 'total_distance',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Total_Distance',\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: 1,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n return [vertex[5]];\n },\n },\n });\n\n this.styleAttributeService.registerStyleAttribute({\n name: 'size',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Size',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 2,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const { size = 1 } = feature;\n return Array.isArray(size) ? [size[0], size[1]] : [size as number, 0];\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 // @ts-ignore\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n normal: number[],\n ) => {\n return normal;\n },\n },\n });\n\n this.styleAttributeService.registerStyleAttribute({\n name: 'miter',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Miter',\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: 1,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n return [vertex[4]];\n },\n },\n });\n\n this.styleAttributeService.registerStyleAttribute({\n name: 'uv',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_iconMapUV',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 2,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const iconMap = this.iconService.getIconMap();\n const { texture } = feature;\n const { x, y } = iconMap[texture as string] || { x: 0, y: 0 };\n return [x, y];\n },\n },\n });\n }\n\n private updateTexture = () => {\n const { createTexture2D } = this.rendererService;\n if (this.texture) {\n this.texture.update({\n data: this.iconService.getCanvas(),\n });\n this.layer.render();\n return;\n }\n this.texture = createTexture2D({\n data: this.iconService.getCanvas(),\n mag: gl.NEAREST,\n min: gl.NEAREST,\n premultiplyAlpha: false,\n width: 1024,\n height: this.iconService.canvasHeight || 128,\n });\n };\n}\n"],"file":"line.js"}
|
package/lib/mask/models/fill.js
CHANGED
|
@@ -56,7 +56,6 @@ var MaskModel = function (_BaseModel) {
|
|
|
56
56
|
}, {
|
|
57
57
|
key: "initModels",
|
|
58
58
|
value: function initModels() {
|
|
59
|
-
this.layer.zIndex = -1000;
|
|
60
59
|
return this.buildModels();
|
|
61
60
|
}
|
|
62
61
|
}, {
|
|
@@ -93,6 +92,7 @@ var MaskModel = function (_BaseModel) {
|
|
|
93
92
|
var _this$dataTexture;
|
|
94
93
|
|
|
95
94
|
(_this$dataTexture = this.dataTexture) === null || _this$dataTexture === void 0 ? void 0 : _this$dataTexture.destroy();
|
|
95
|
+
this.layerService.clear();
|
|
96
96
|
}
|
|
97
97
|
}, {
|
|
98
98
|
key: "registerBuiltinAttributes",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/mask/models/fill.ts"],"names":["MaskModel","layer","getLayerConfig","opacity","u_opacity","
|
|
1
|
+
{"version":3,"sources":["../../../src/mask/models/fill.ts"],"names":["MaskModel","layer","getLayerConfig","opacity","u_opacity","buildModels","buildLayerModel","moduleName","vertexShader","mask_vert","fragmentShader","mask_frag","triangulation","polygonTriangulation","blend","getBlend","depth","enable","stencil","mask","func","cmp","gl","ALWAYS","ref","opFront","fail","REPLACE","zfail","zpass","dataTexture","destroy","layerService","clear","BaseModel"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AAEA;;AACA;;;;;;;;;IAMqBA,S;;;;;;;;;;;;WACnB,wBAAsB;AACpB,iBAAwB,KAAKC,KAAL,CAAWC,cAAX,EAAxB;AAAA,8BAAQC,OAAR;AAAA,UAAQA,OAAR,6BAAkB,CAAlB;;AACA,aAAO;AACLC,QAAAA,SAAS,EAAE,wBAASD,OAAT,IAAoBA,OAApB,GAA8B;AADpC,OAAP;AAGD;;;WAED,sBAA8B;AAC5B,aAAO,KAAKE,WAAL,EAAP;AACD;;;WAED,uBAA+B;AAC7B,aAAO,CACL,KAAKJ,KAAL,CAAWK,eAAX,CAA2B;AACzBC,QAAAA,UAAU,EAAE,MADa;AAEzBC,QAAAA,YAAY,EAAEC,SAFW;AAGzBC,QAAAA,cAAc,EAAEC,SAHS;AAIzBC,QAAAA,aAAa,EAAEC,mCAJU;AAKzBC,QAAAA,KAAK,EAAE,KAAKC,QAAL,EALkB;AAMzBC,QAAAA,KAAK,EAAE;AAAEC,UAAAA,MAAM,EAAE;AAAV,SANkB;AAQzBC,QAAAA,OAAO,EAAE;AACPD,UAAAA,MAAM,EAAE,IADD;AAEPE,UAAAA,IAAI,EAAE,IAFC;AAGPC,UAAAA,IAAI,EAAE;AACJC,YAAAA,GAAG,EAAEC,WAAGC,MADJ;AAEJC,YAAAA,GAAG,EAAE,CAFD;AAGJL,YAAAA,IAAI,EAAE;AAHF,WAHC;AAQPM,UAAAA,OAAO,EAAE;AACPC,YAAAA,IAAI,EAAEJ,WAAGK,OADF;AAEPC,YAAAA,KAAK,EAAEN,WAAGK,OAFH;AAGPE,YAAAA,KAAK,EAAEP,WAAGK;AAHH;AARF;AARgB,OAA3B,CADK,CAAP;AAyBD;;;WAED,uBAAqB;AAAA;;AACnB,gCAAKG,WAAL,wEAAkBC,OAAlB;AACA,WAAKC,YAAL,CAAkBC,KAAlB;AACD;;;WAED,qCAAsC;AACpC,aAAO,EAAP;AACD;;;EA/CoCC,mB","sourcesContent":["import { gl, IModel } from '@antv/l7-core';\nimport { isNumber } from 'lodash';\nimport BaseModel, { styleSingle } from '../../core/BaseModel';\nimport { polygonTriangulation } from '../../core/triangulation';\nimport mask_frag from '../shaders/mask_frag.glsl';\nimport mask_vert from '../shaders/mask_vert.glsl';\ninterface IMaskStyleOptions {\n opacity: styleSingle;\n}\nexport default class MaskModel extends BaseModel {\n public getUninforms() {\n const { opacity = 0 } = this.layer.getLayerConfig() as IMaskStyleOptions;\n return {\n u_opacity: isNumber(opacity) ? opacity : 0.0,\n };\n }\n\n public initModels(): IModel[] {\n return this.buildModels();\n }\n\n public buildModels(): IModel[] {\n return [\n this.layer.buildLayerModel({\n moduleName: 'mask',\n vertexShader: mask_vert,\n fragmentShader: mask_frag,\n triangulation: polygonTriangulation,\n blend: this.getBlend(),\n depth: { enable: false },\n\n stencil: {\n enable: true,\n mask: 0xff,\n func: {\n cmp: gl.ALWAYS,\n ref: 1,\n mask: 0xff,\n },\n opFront: {\n fail: gl.REPLACE,\n zfail: gl.REPLACE,\n zpass: gl.REPLACE,\n },\n },\n }),\n ];\n }\n\n public clearModels() {\n this.dataTexture?.destroy();\n this.layerService.clear();\n }\n\n protected registerBuiltinAttributes() {\n return '';\n }\n}\n"],"file":"fill.js"}
|
|
@@ -87,10 +87,10 @@ var DataMappingPlugin = (_dec = (0, _inversify.injectable)(), _dec2 = (0, _inver
|
|
|
87
87
|
|
|
88
88
|
if (attributesToRemapping.length) {
|
|
89
89
|
if (filter !== null && filter !== void 0 && filter.needRemapping) {
|
|
90
|
-
layer.setEncodedData(_this.mapping(attributes, filterData, undefined, bottomColor));
|
|
90
|
+
layer.setEncodedData(_this.mapping(attributes, filterData, undefined, bottomColor, layer));
|
|
91
91
|
filter.needRemapping = false;
|
|
92
92
|
} else {
|
|
93
|
-
layer.setEncodedData(_this.mapping(attributesToRemapping, filterData, layer.getEncodedData(), bottomColor));
|
|
93
|
+
layer.setEncodedData(_this.mapping(attributesToRemapping, filterData, layer.getEncodedData(), bottomColor, layer));
|
|
94
94
|
}
|
|
95
95
|
|
|
96
96
|
layer.emit('remapping', null);
|
|
@@ -115,14 +115,28 @@ var DataMappingPlugin = (_dec = (0, _inversify.injectable)(), _dec2 = (0, _inver
|
|
|
115
115
|
});
|
|
116
116
|
}
|
|
117
117
|
|
|
118
|
-
layer.setEncodedData(this.mapping(attributes, filterData, undefined, bottomColor));
|
|
118
|
+
layer.setEncodedData(this.mapping(attributes, filterData, undefined, bottomColor, layer));
|
|
119
119
|
layer.emit('dataUpdate', null);
|
|
120
120
|
}
|
|
121
|
+
}, {
|
|
122
|
+
key: "getArrowPoints",
|
|
123
|
+
value: function getArrowPoints(p1, p2) {
|
|
124
|
+
var dir = [p2[0] - p1[0], p2[1] - p1[1]];
|
|
125
|
+
var normalizeDir = (0, _l7Utils.normalize)(dir);
|
|
126
|
+
var arrowPoint = [p1[0] + normalizeDir[0] * 0.0001, p1[1] + normalizeDir[1] * 0.0001];
|
|
127
|
+
return arrowPoint;
|
|
128
|
+
}
|
|
121
129
|
}, {
|
|
122
130
|
key: "mapping",
|
|
123
|
-
value: function mapping(attributes, data, predata, minimumColor) {
|
|
131
|
+
value: function mapping(attributes, data, predata, minimumColor, layer) {
|
|
124
132
|
var _this3 = this;
|
|
125
133
|
|
|
134
|
+
var _ref3 = layer === null || layer === void 0 ? void 0 : layer.getLayerConfig(),
|
|
135
|
+
_ref3$arrow = _ref3.arrow,
|
|
136
|
+
arrow = _ref3$arrow === void 0 ? {
|
|
137
|
+
enable: false
|
|
138
|
+
} : _ref3$arrow;
|
|
139
|
+
|
|
126
140
|
var mappedData = data.map(function (record, i) {
|
|
127
141
|
var preRecord = predata ? predata[i] : {};
|
|
128
142
|
|
|
@@ -150,6 +164,15 @@ var DataMappingPlugin = (_dec = (0, _inversify.injectable)(), _dec2 = (0, _inver
|
|
|
150
164
|
encodeRecord.shape = _this3.fontService.getIconFontKey(encodeRecord[attribute.name]);
|
|
151
165
|
}
|
|
152
166
|
});
|
|
167
|
+
|
|
168
|
+
if (encodeRecord.shape === 'line' && arrow.enable) {
|
|
169
|
+
var coords = encodeRecord.coordinates;
|
|
170
|
+
|
|
171
|
+
var arrowPoint = _this3.getArrowPoints(coords[0], coords[1]);
|
|
172
|
+
|
|
173
|
+
encodeRecord.coordinates.splice(1, 0, arrowPoint, arrowPoint);
|
|
174
|
+
}
|
|
175
|
+
|
|
153
176
|
return encodeRecord;
|
|
154
177
|
});
|
|
155
178
|
this.adjustData2Amap2Coordinates(mappedData);
|
|
@@ -233,10 +256,10 @@ var DataMappingPlugin = (_dec = (0, _inversify.injectable)(), _dec2 = (0, _inver
|
|
|
233
256
|
|
|
234
257
|
var scalers = (attribute === null || attribute === void 0 ? void 0 : (_attribute$scale = attribute.scale) === null || _attribute$scale === void 0 ? void 0 : _attribute$scale.scalers) || [];
|
|
235
258
|
var params = [];
|
|
236
|
-
scalers.forEach(function (
|
|
259
|
+
scalers.forEach(function (_ref4) {
|
|
237
260
|
var _attribute$scale2;
|
|
238
261
|
|
|
239
|
-
var field =
|
|
262
|
+
var field = _ref4.field;
|
|
240
263
|
|
|
241
264
|
if (record.hasOwnProperty(field) || ((_attribute$scale2 = attribute.scale) === null || _attribute$scale2 === void 0 ? void 0 : _attribute$scale2.type) === 'variable') {
|
|
242
265
|
params.push(record[field]);
|