@mesh3d/cesium-vectortile-gl 0.4.4 → 0.4.6
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/.gitattributes +11 -0
- package/.gitconfig +3 -0
- package/.husky/pre-commit +1 -0
- package/.prettierignore +5 -0
- package/.vscode/settings.json +25 -0
- package/LICENSE.md +203 -203
- package/README.md +202 -167
- package/Source/Cesium.d.ts +2692 -2691
- package/Source/VectorTileLOD.js +720 -532
- package/Source/VectorTileRenderList.js +70 -70
- package/Source/VectorTileset.js +473 -447
- package/Source/layers/BackgroundRenderLayer.js +91 -89
- package/Source/layers/FillRenderLayer.js +18 -18
- package/Source/layers/IRenderLayer.js +160 -152
- package/Source/layers/LineRenderLayer.js +104 -94
- package/Source/layers/SymbolRenderLayer.js +30 -31
- package/Source/layers/index.js +23 -16
- package/Source/layers/registerRenderLayer.js +24 -24
- package/Source/layers/visualizers/FillLayerVisualizer.js +542 -426
- package/Source/layers/visualizers/ILayerVisualizer.js +90 -94
- package/Source/layers/visualizers/LineLayerVisualizer.js +702 -571
- package/Source/layers/visualizers/SymbolLayerVisualizer.js +514 -244
- package/Source/sources/GeoJSONSource.js +53 -46
- package/Source/sources/ISource.js +39 -39
- package/Source/sources/VectorSource.js +94 -52
- package/Source/sources/granularitySettings.js +23 -20
- package/Source/sources/index.js +6 -11
- package/Source/sources/registerSource.js +17 -19
- package/Source/style/StyleLayer.js +43 -43
- package/Source/style/StyleLayerProperties.js +44 -43
- package/Source/style/index.js +2 -2
- package/Source/symbol/SymbolPlacements.js +117 -88
- package/Source/workers/VectorTileWorker.js +41 -0
- package/Source/workers/ellipsoid.js +47 -0
- package/Source/workers/processTileTask.js +329 -0
- package/Source/workers/styleEvaluator.js +168 -0
- package/benchmark.html +148 -0
- package/dist/cvt-gl-worker.js +9274 -0
- package/dist/cvt-gl-worker.js.map +1 -0
- package/dist/cvt-gl.js +2570 -2001
- package/dist/cvt-gl.js.map +1 -1
- package/dist/cvt-gl.min.js +3 -3
- package/dist/cvt-gl.min.js.map +1 -1
- package/eslint.config.mjs +58 -0
- package/index.js +9 -6
- package/mlt.html +26 -25
- package/package.json +64 -41
- package/prettier.config.mjs +30 -0
- package/vite.config.mjs +43 -0
- package/vite.worker.config.mjs +31 -0
- package/worker.html +26 -0
|
@@ -1,94 +1,104 @@
|
|
|
1
|
-
import * as MVT from '@mapbox/vector-tile'
|
|
2
|
-
import { StyleLayer } from '../style/StyleLayer'
|
|
3
|
-
import { VectorTileset } from '../VectorTileset'
|
|
4
|
-
import { IRenderLayer } from './IRenderLayer'
|
|
5
|
-
import { registerRenderLayer } from './registerRenderLayer'
|
|
6
|
-
import { VectorTileLOD } from '../VectorTileLOD'
|
|
7
|
-
import { LineLayerVisualizer } from './visualizers/LineLayerVisualizer'
|
|
8
|
-
|
|
9
|
-
export class LineRenderLayer extends IRenderLayer {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
1
|
+
import * as MVT from '@mapbox/vector-tile'
|
|
2
|
+
import { StyleLayer } from '../style/StyleLayer'
|
|
3
|
+
import { VectorTileset } from '../VectorTileset'
|
|
4
|
+
import { IRenderLayer } from './IRenderLayer'
|
|
5
|
+
import { registerRenderLayer } from './registerRenderLayer'
|
|
6
|
+
import { VectorTileLOD } from '../VectorTileLOD'
|
|
7
|
+
import { LineLayerVisualizer } from './visualizers/LineLayerVisualizer'
|
|
8
|
+
|
|
9
|
+
export class LineRenderLayer extends IRenderLayer {
|
|
10
|
+
/**
|
|
11
|
+
* @param {MVT.VectorTileFeature[]} sourceFeatures
|
|
12
|
+
* @param {StyleLayer} styleLayer
|
|
13
|
+
* @param {VectorTileLOD} tile
|
|
14
|
+
*/
|
|
15
|
+
constructor(sourceFeatures, styleLayer, tile) {
|
|
16
|
+
super(sourceFeatures, styleLayer, tile)
|
|
17
|
+
this.primitive = null
|
|
18
|
+
this.dasharray = []
|
|
19
|
+
this.dashLength = 0
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
createPrimitve(frameState, tileset) {
|
|
23
|
+
const primitive = new Cesium.PolylineCollection()
|
|
24
|
+
const sourceFeatures = this.sourceFeatures
|
|
25
|
+
const style = this.style
|
|
26
|
+
const tile = this.tile
|
|
27
|
+
|
|
28
|
+
function addPolyline(coordinates, lineWidth, lineColor) {
|
|
29
|
+
if (coordinates.length < 2) return
|
|
30
|
+
|
|
31
|
+
const positions = coordinates.map(coord =>
|
|
32
|
+
Cesium.Cartesian3.fromDegrees(coord[0], coord[1])
|
|
33
|
+
)
|
|
34
|
+
primitive.add({
|
|
35
|
+
positions,
|
|
36
|
+
width: lineWidth,
|
|
37
|
+
material: Cesium.Material.fromType('Color', {
|
|
38
|
+
color: style.convertColor(lineColor)
|
|
39
|
+
})
|
|
40
|
+
})
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
for (const sourceFeature of sourceFeatures) {
|
|
44
|
+
const feature = sourceFeature.toGeoJSON(tile.x, tile.y, tile.z)
|
|
45
|
+
if (!feature.geometry) continue
|
|
46
|
+
|
|
47
|
+
//读取图层样式属性
|
|
48
|
+
const lineWidth = style.paint.getDataValue(
|
|
49
|
+
'line-width',
|
|
50
|
+
tile.z,
|
|
51
|
+
sourceFeature
|
|
52
|
+
)
|
|
53
|
+
const lineColor = style.paint.getDataValue(
|
|
54
|
+
'line-color',
|
|
55
|
+
tile.z,
|
|
56
|
+
sourceFeature
|
|
57
|
+
)
|
|
58
|
+
|
|
59
|
+
const geometryType = feature.geometry.type
|
|
60
|
+
const coordinates = feature.geometry.coordinates
|
|
61
|
+
if (geometryType == 'LineString') {
|
|
62
|
+
addPolyline(coordinates, lineWidth, lineColor)
|
|
63
|
+
} else if (
|
|
64
|
+
geometryType == 'MultiLineString' ||
|
|
65
|
+
geometryType == 'Polygon'
|
|
66
|
+
) {
|
|
67
|
+
for (const ring of coordinates) {
|
|
68
|
+
addPolyline(ring, lineWidth, lineColor)
|
|
69
|
+
}
|
|
70
|
+
} else if (geometryType == 'MultiPolygon') {
|
|
71
|
+
for (const polygon of coordinates) {
|
|
72
|
+
for (const ring of polygon) {
|
|
73
|
+
addPolyline(ring, lineWidth, lineColor)
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
} else {
|
|
77
|
+
console.log('暂不支持几何类型:' + geometryType)
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
this.primitive = primitive
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* @param {Cesium.FrameState} frameState
|
|
86
|
+
* @param {VectorTileset} tileset
|
|
87
|
+
*/
|
|
88
|
+
update(frameState, tileset) {
|
|
89
|
+
// if (!this.primitive) {
|
|
90
|
+
// this.createPrimitve(frameState, tileset)
|
|
91
|
+
// }
|
|
92
|
+
// if (this.primitive && this.primitive.length) {
|
|
93
|
+
// this.primitive.update(frameState)
|
|
94
|
+
// }
|
|
95
|
+
super.update(frameState, tileset)
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
destroy() {
|
|
99
|
+
this.primitive = this.primitive && this.primitive.destroy()
|
|
100
|
+
super.destroy()
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
registerRenderLayer('line', LineRenderLayer, LineLayerVisualizer)
|
|
@@ -1,31 +1,30 @@
|
|
|
1
|
-
import * as MVT from '@mapbox/vector-tile'
|
|
2
|
-
import { StyleLayer } from '../style/StyleLayer'
|
|
3
|
-
import { VectorTileLOD } from '../VectorTileLOD'
|
|
4
|
-
import { IRenderLayer } from './IRenderLayer'
|
|
5
|
-
import { SymbolLayerVisualizer } from './visualizers/SymbolLayerVisualizer'
|
|
6
|
-
import { registerRenderLayer } from './registerRenderLayer'
|
|
7
|
-
|
|
8
|
-
export class SymbolRenderLayer extends IRenderLayer {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
registerRenderLayer('symbol', SymbolRenderLayer, SymbolLayerVisualizer)
|
|
1
|
+
import * as MVT from '@mapbox/vector-tile'
|
|
2
|
+
import { StyleLayer } from '../style/StyleLayer'
|
|
3
|
+
import { VectorTileLOD } from '../VectorTileLOD'
|
|
4
|
+
import { IRenderLayer } from './IRenderLayer'
|
|
5
|
+
import { SymbolLayerVisualizer } from './visualizers/SymbolLayerVisualizer'
|
|
6
|
+
import { registerRenderLayer } from './registerRenderLayer'
|
|
7
|
+
|
|
8
|
+
export class SymbolRenderLayer extends IRenderLayer {
|
|
9
|
+
/**
|
|
10
|
+
* @param {MVT.VectorTileFeature[]} sourceFeatures
|
|
11
|
+
* @param {StyleLayer} style
|
|
12
|
+
* @param {VectorTileLOD} tile
|
|
13
|
+
*/
|
|
14
|
+
constructor(sourceFeatures, styleLayer, tile) {
|
|
15
|
+
super(sourceFeatures, styleLayer, tile)
|
|
16
|
+
this.labels = []
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* @param {Cesium.FrameState} frameState
|
|
21
|
+
* @param {VectorTileset} tileset
|
|
22
|
+
*/
|
|
23
|
+
update(frameState, tileset) {
|
|
24
|
+
//TODO:动态更新符号样式
|
|
25
|
+
|
|
26
|
+
super.update(frameState, tileset)
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
registerRenderLayer('symbol', SymbolRenderLayer, SymbolLayerVisualizer)
|
package/Source/layers/index.js
CHANGED
|
@@ -1,16 +1,23 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
1
|
+
import {
|
|
2
|
+
RenderLayers,
|
|
3
|
+
LayerVisualizers,
|
|
4
|
+
registerRenderLayer
|
|
5
|
+
} from './registerRenderLayer'
|
|
6
|
+
import { ILayerVisualizer } from './visualizers/ILayerVisualizer'
|
|
7
|
+
import { IRenderLayer } from './IRenderLayer'
|
|
8
|
+
import { BackgroundRenderLayer } from './BackgroundRenderLayer'
|
|
9
|
+
import { FillRenderLayer } from './FillRenderLayer'
|
|
10
|
+
import { LineRenderLayer } from './LineRenderLayer'
|
|
11
|
+
import { SymbolRenderLayer } from './SymbolRenderLayer'
|
|
12
|
+
|
|
13
|
+
export {
|
|
14
|
+
RenderLayers,
|
|
15
|
+
LayerVisualizers,
|
|
16
|
+
registerRenderLayer,
|
|
17
|
+
IRenderLayer,
|
|
18
|
+
ILayerVisualizer,
|
|
19
|
+
BackgroundRenderLayer,
|
|
20
|
+
FillRenderLayer,
|
|
21
|
+
LineRenderLayer,
|
|
22
|
+
SymbolRenderLayer
|
|
23
|
+
}
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
import { ILayerVisualizer } from
|
|
2
|
-
import { IRenderLayer } from
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* @type {Record<string,typeof IRenderLayer>}
|
|
6
|
-
*/
|
|
7
|
-
const RenderLayers = {}
|
|
8
|
-
/**
|
|
9
|
-
* @type {Record<string,typeof ILayerVisualizer>}
|
|
10
|
-
*/
|
|
11
|
-
const LayerVisualizers = {}
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* 注册图层类型,设置渲染图层类和图层渲染器类(非必须)
|
|
15
|
-
* @param {"symbol" | "fill" | "line" | "circle" | "heatmap" | "fill-extrusion" | "raster" | "hillshade" | "color-relief" | "background"} type 图层类型
|
|
16
|
-
* @param {typeof IRenderLayer} renderLayerCls 渲染图层类,必须继承 IRenderLayer
|
|
17
|
-
* @param {typeof ILayerVisualizer} [layerVisualizerCls] 图层渲染器类,必须继承 ILayerVisualizer
|
|
18
|
-
*/
|
|
19
|
-
function registerRenderLayer(type, renderLayerCls, layerVisualizerCls) {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
export { RenderLayers, LayerVisualizers, registerRenderLayer }
|
|
1
|
+
import { ILayerVisualizer } from './visualizers/ILayerVisualizer'
|
|
2
|
+
import { IRenderLayer } from './IRenderLayer'
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @type {Record<string,typeof IRenderLayer>}
|
|
6
|
+
*/
|
|
7
|
+
const RenderLayers = {}
|
|
8
|
+
/**
|
|
9
|
+
* @type {Record<string,typeof ILayerVisualizer>}
|
|
10
|
+
*/
|
|
11
|
+
const LayerVisualizers = {}
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* 注册图层类型,设置渲染图层类和图层渲染器类(非必须)
|
|
15
|
+
* @param {"symbol" | "fill" | "line" | "circle" | "heatmap" | "fill-extrusion" | "raster" | "hillshade" | "color-relief" | "background"} type 图层类型
|
|
16
|
+
* @param {typeof IRenderLayer} renderLayerCls 渲染图层类,必须继承 IRenderLayer
|
|
17
|
+
* @param {typeof ILayerVisualizer} [layerVisualizerCls] 图层渲染器类,必须继承 ILayerVisualizer
|
|
18
|
+
*/
|
|
19
|
+
function registerRenderLayer(type, renderLayerCls, layerVisualizerCls) {
|
|
20
|
+
RenderLayers[type] = renderLayerCls
|
|
21
|
+
LayerVisualizers[type] = layerVisualizerCls
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export { RenderLayers, LayerVisualizers, registerRenderLayer }
|