vislite 1.12.0 → 1.12.1
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/AUTHORS.txt +6 -6
- package/CHANGELOG +408 -403
- package/LICENSE +20 -20
- package/README-en.md +245 -245
- package/README.md +245 -245
- package/bin/formatArgv.js +30 -30
- package/bin/help.js +17 -17
- package/bin/run +21 -21
- package/bin/skills.js +26 -26
- package/lib/BarLayout/index.es.js +348 -348
- package/lib/Buffer/index.es.js +34 -34
- package/lib/Canvas/index.es.js +804 -804
- package/lib/Cardinal/index.es.js +89 -89
- package/lib/Eoap/index.es.js +32 -32
- package/lib/Hermite/index.es.js +34 -34
- package/lib/MapCoordinate/index.es.js +199 -199
- package/lib/Matrix4/index.es.js +123 -123
- package/lib/Mercator/index.es.js +18 -18
- package/lib/PieLayout/index.es.js +115 -115
- package/lib/RawCanvas/index.es.js +736 -736
- package/lib/SVG/index.es.js +626 -626
- package/lib/Shader/index.es.js +34 -34
- package/lib/Texture/index.es.js +52 -52
- package/lib/TreeLayout/index.es.js +301 -301
- package/lib/animation/index.es.js +2 -2
- package/lib/assemble/index.es.js +19 -19
- package/lib/getLoopColors/index.es.js +34 -34
- package/lib/getWebGLContext/index.es.js +61 -61
- package/lib/index.umd.js +2797 -2797
- package/lib/index.umd.min.js +1 -1
- package/lib/initOption/index.es.js +5 -5
- package/lib/mergeOption/index.es.js +34 -34
- package/lib/move/index.es.js +6 -6
- package/lib/rotate/index.es.js +6 -6
- package/lib/ruler/index.es.js +136 -136
- package/lib/scale/index.es.js +5 -5
- package/minialipay/ui-canvas/drawImage.js +35 -35
- package/minialipay/ui-canvas/index.acss +4 -4
- package/minialipay/ui-canvas/index.axml +3 -3
- package/minialipay/ui-canvas/index.d.ts +1 -1
- package/minialipay/ui-canvas/index.js +100 -100
- package/minialipay/ui-canvas/index.json +6 -6
- package/miniprogram/ui-canvas/drawImage.js +35 -35
- package/miniprogram/ui-canvas/index.js +125 -125
- package/miniprogram/ui-canvas/index.json +4 -4
- package/miniprogram/ui-canvas/index.wxml +4 -4
- package/miniprogram/ui-canvas/index.wxss +5 -5
- package/package/BarLayout/index.ts +2 -2
- package/package/Buffer/index.ts +2 -2
- package/package/Canvas/index.ts +2 -2
- package/package/Cardinal/index.ts +2 -2
- package/package/Eoap/index.ts +2 -2
- package/package/Hermite/index.ts +2 -2
- package/package/MapCoordinate/index.ts +2 -2
- package/package/Matrix4/index.ts +2 -2
- package/package/Mercator/index.ts +2 -2
- package/package/PieLayout/index.ts +2 -2
- package/package/RawCanvas/index.ts +2 -2
- package/package/SVG/index.ts +2 -2
- package/package/Shader/index.ts +2 -2
- package/package/Texture/index.ts +2 -2
- package/package/TreeLayout/index.ts +2 -2
- package/package/animation/index.ts +5 -5
- package/package/assemble/index.ts +2 -2
- package/package/getLoopColors/index.ts +2 -2
- package/package/getWebGLContext/index.ts +40 -40
- package/package/index.ts +84 -84
- package/package/initOption/index.ts +2 -2
- package/package/mergeOption/index.ts +2 -2
- package/package/move/index.ts +2 -2
- package/package/rotate/index.ts +2 -2
- package/package/ruler/index.ts +2 -2
- package/package/scale/index.ts +2 -2
- package/package/throttle/index.ts +2 -2
- package/package.json +79 -79
- package/skills/vislite-lib/BarLayout.md +117 -117
- package/skills/vislite-lib/Canvas.md +183 -183
- package/skills/vislite-lib/Interpolation.md +129 -129
- package/skills/vislite-lib/Matrix.md +174 -174
- package/skills/vislite-lib/PieLayout.md +131 -131
- package/skills/vislite-lib/Projections.md +158 -158
- package/skills/vislite-lib/SKILL.md +179 -179
- package/skills/vislite-lib/SVG.md +137 -137
- package/skills/vislite-lib/TreeLayout.md +176 -176
- package/skills/vislite-lib/Utilities.md +261 -261
- package/skills/vislite-lib/WebGL.md +106 -106
- package/skills/vislite-lib/minialipay/ui-canvas.md +95 -95
- package/skills/vislite-lib/miniprogram/ui-canvas.md +98 -98
- package/skills/vislite-lib/uniapp/ui-canvas.md +113 -113
- package/src/Canvas.ts +89 -89
- package/src/Eoap.ts +66 -66
- package/src/Matrix4/index.ts +84 -84
- package/src/Matrix4/move.ts +12 -12
- package/src/Matrix4/rotate.ts +15 -15
- package/src/Matrix4/scale.ts +11 -11
- package/src/Matrix4/transform.ts +64 -64
- package/src/Mercator.ts +27 -27
- package/src/SVG.ts +86 -86
- package/src/common/assemble.ts +30 -30
- package/src/common/canvas/arc.ts +51 -51
- package/src/common/canvas/config.ts +176 -176
- package/src/common/canvas/default.ts +64 -64
- package/src/common/canvas/gradient.ts +31 -31
- package/src/common/canvas/index.ts +189 -189
- package/src/common/canvas/painter.ts +475 -475
- package/src/common/canvas/texts.ts +18 -18
- package/src/common/map/getBoundary.ts +15 -15
- package/src/common/map/tool.ts +29 -29
- package/src/common/option.ts +31 -31
- package/src/common/setStyle.ts +5 -5
- package/src/common/svg/config.ts +213 -213
- package/src/common/svg/default.ts +29 -29
- package/src/common/svg/gradient.ts +53 -53
- package/src/common/svg/index.ts +420 -420
- package/src/common/svg/tool.ts +51 -51
- package/src/common/tree/index.ts +25 -25
- package/src/common/tree/toInnerTree.ts +61 -61
- package/src/common/tree/toPlainTree.ts +135 -135
- package/src/common/type.ts +26 -26
- package/src/common/webgl/buffer.ts +79 -79
- package/src/common/webgl/getWebGLContext.ts +45 -45
- package/src/common/webgl/shader.ts +75 -75
- package/src/common/webgl/texture.ts +98 -98
- package/src/coordinate/MapCoordinate.ts +80 -80
- package/src/getLoopColors.ts +42 -42
- package/src/interpolation/Cardinal.ts +110 -110
- package/src/interpolation/Hermite.ts +65 -65
- package/src/layout/BarLayout.ts +249 -249
- package/src/layout/PieLayout.ts +146 -146
- package/src/layout/TreeLayout.ts +200 -200
- package/src/move.ts +7 -7
- package/src/rotate.ts +7 -7
- package/src/ruler.ts +209 -209
- package/src/scale.ts +6 -6
- package/types/Bar.d.ts +91 -91
- package/types/BarConfig.d.ts +4 -4
- package/types/BarLayout.d.ts +48 -48
- package/types/BarOption.d.ts +31 -31
- package/types/Buffer.d.ts +30 -30
- package/types/Canvas.d.ts +379 -379
- package/types/CanvasConfig.d.ts +61 -61
- package/types/CanvasOption.d.ts +13 -13
- package/types/CanvasOpts.d.ts +9 -9
- package/types/Cardinal.d.ts +20 -20
- package/types/Gradient.d.ts +20 -20
- package/types/Hermite.d.ts +25 -25
- package/types/Map.d.ts +9 -9
- package/types/MapConfig.d.ts +27 -27
- package/types/MapCoordinate.d.ts +22 -22
- package/types/Matrix4.d.ts +79 -79
- package/types/Pie.d.ts +73 -73
- package/types/PieConfig.d.ts +26 -26
- package/types/PieLayout.d.ts +40 -40
- package/types/PieOption.d.ts +21 -21
- package/types/SVG.d.ts +282 -282
- package/types/SVGConfig.d.ts +54 -54
- package/types/Shader.d.ts +22 -22
- package/types/Texture.d.ts +22 -22
- package/types/Tree.d.ts +74 -74
- package/types/TreeConfig.d.ts +52 -52
- package/types/TreeLayout.d.ts +71 -71
- package/types/TreeOption.d.ts +48 -48
- package/types/animation.d.ts +26 -26
- package/types/assemble.d.ts +14 -14
- package/types/getLoopColors.d.ts +13 -13
- package/types/getWebGLContext.d.ts +7 -7
- package/types/index.d.ts +220 -220
- package/types/module.d.ts +110 -110
- package/types/move.d.ts +15 -15
- package/types/option.d.ts +12 -12
- package/types/painterConfig.d.ts +14 -14
- package/types/rotate.d.ts +15 -15
- package/types/ruler.d.ts +24 -24
- package/types/scale.d.ts +15 -15
- package/types/throttle.d.ts +6 -6
- package/types/ui-canvas.d.ts +4 -4
- package/types/uni-canvas.d.ts +3 -3
- package/uni-app/drawImage.js +19 -19
- package/uni-app/ui-canvas.vue +295 -295
|
@@ -1,132 +1,132 @@
|
|
|
1
|
-
# PieLayout 饼图布局
|
|
2
|
-
|
|
3
|
-
PieLayout 用于绘制饼图/环形图,支持交互和动画。
|
|
4
|
-
|
|
5
|
-
## 引入
|
|
6
|
-
|
|
7
|
-
```js
|
|
8
|
-
import { PieLayout } from 'vislite';
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
## 初始化
|
|
12
|
-
|
|
13
|
-
```js
|
|
14
|
-
var pieLayout = new PieLayout(config);
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
### config 配置
|
|
18
|
-
|
|
19
|
-
```js
|
|
20
|
-
{
|
|
21
|
-
// 获取名称
|
|
22
|
-
name: function(pieData, initPie) {
|
|
23
|
-
return pieData.name;
|
|
24
|
-
},
|
|
25
|
-
|
|
26
|
-
// 获取值
|
|
27
|
-
value: function(pieData, initPie) {
|
|
28
|
-
return pieData.value;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
## setOption 设置布局行为
|
|
34
|
-
|
|
35
|
-
```js
|
|
36
|
-
pieLayout.setOption({
|
|
37
|
-
cx: 200, // 圆心x坐标
|
|
38
|
-
cy: 200, // 圆心y坐标
|
|
39
|
-
radius: [50, 100], // 半径:[内半径, 外半径]
|
|
40
|
-
duration: 200 // 动画时长(ms)
|
|
41
|
-
});
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
## use 坐标计算
|
|
45
|
-
|
|
46
|
-
```js
|
|
47
|
-
var pie = pieLayout.use(initPie, hoverIndex);
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
### 返回值 pie 结构
|
|
51
|
-
|
|
52
|
-
```js
|
|
53
|
-
{
|
|
54
|
-
count: 数据项数量,
|
|
55
|
-
cx: 圆心x,
|
|
56
|
-
cy: 圆心y,
|
|
57
|
-
radius: [内半径, 外半径],
|
|
58
|
-
hoverIndex: 当前悬浮项索引,
|
|
59
|
-
node: [
|
|
60
|
-
{
|
|
61
|
-
value: 数值,
|
|
62
|
-
name: 名称,
|
|
63
|
-
beginDeg: 开始弧度,
|
|
64
|
-
deg: 跨越弧度,
|
|
65
|
-
isHover: 是否悬浮,
|
|
66
|
-
radius: [当前内半径, 当前外半径],
|
|
67
|
-
label: {
|
|
68
|
-
line: [[x1,y1], [x2,y2], [x3,y3]], // 标签线
|
|
69
|
-
position: [x, y], // 标签位置
|
|
70
|
-
align: 'left' | 'right' // 对齐方式
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
]
|
|
74
|
-
}
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
## bind 绑定渲染
|
|
78
|
-
|
|
79
|
-
```js
|
|
80
|
-
pieLayout.bind(initPie, function(pie) {
|
|
81
|
-
// 绘制饼图
|
|
82
|
-
for (var i = 0; i < pie.count; i++) {
|
|
83
|
-
var node = pie.node[i];
|
|
84
|
-
// 绘制扇形...
|
|
85
|
-
}
|
|
86
|
-
});
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
## 交互方法
|
|
90
|
-
|
|
91
|
-
```js
|
|
92
|
-
// 设置悬浮项
|
|
93
|
-
pieLayout.setHover(index);
|
|
94
|
-
|
|
95
|
-
// 更新布局
|
|
96
|
-
pieLayout.doUpdate();
|
|
97
|
-
|
|
98
|
-
// 解绑
|
|
99
|
-
pieLayout.unbind();
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
## 使用示例
|
|
103
|
-
|
|
104
|
-
```js
|
|
105
|
-
var pieLayout = new PieLayout();
|
|
106
|
-
|
|
107
|
-
pieLayout.setOption({
|
|
108
|
-
cx: 200,
|
|
109
|
-
cy: 200,
|
|
110
|
-
radius: [30, 100],
|
|
111
|
-
duration: 300
|
|
112
|
-
});
|
|
113
|
-
|
|
114
|
-
var data = [
|
|
115
|
-
{ name: 'HTML', value: 30 },
|
|
116
|
-
{ name: 'CSS', value: 20 },
|
|
117
|
-
{ name: 'JavaScript', value: 50 }
|
|
118
|
-
];
|
|
119
|
-
|
|
120
|
-
var pie = pieLayout.use(data);
|
|
121
|
-
|
|
122
|
-
// 绘制饼图
|
|
123
|
-
for (var i = 0; i < pie.count; i++) {
|
|
124
|
-
var node = pie.node[i];
|
|
125
|
-
var colors = ['red', 'green', 'blue'];
|
|
126
|
-
|
|
127
|
-
painter.config({
|
|
128
|
-
fillStyle: colors[i]
|
|
129
|
-
}).fillArc(pie.cx, pie.cy, node.radius[0], node.radius[1],
|
|
130
|
-
node.beginDeg, node.deg);
|
|
131
|
-
}
|
|
1
|
+
# PieLayout 饼图布局
|
|
2
|
+
|
|
3
|
+
PieLayout 用于绘制饼图/环形图,支持交互和动画。
|
|
4
|
+
|
|
5
|
+
## 引入
|
|
6
|
+
|
|
7
|
+
```js
|
|
8
|
+
import { PieLayout } from 'vislite';
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 初始化
|
|
12
|
+
|
|
13
|
+
```js
|
|
14
|
+
var pieLayout = new PieLayout(config);
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
### config 配置
|
|
18
|
+
|
|
19
|
+
```js
|
|
20
|
+
{
|
|
21
|
+
// 获取名称
|
|
22
|
+
name: function(pieData, initPie) {
|
|
23
|
+
return pieData.name;
|
|
24
|
+
},
|
|
25
|
+
|
|
26
|
+
// 获取值
|
|
27
|
+
value: function(pieData, initPie) {
|
|
28
|
+
return pieData.value;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## setOption 设置布局行为
|
|
34
|
+
|
|
35
|
+
```js
|
|
36
|
+
pieLayout.setOption({
|
|
37
|
+
cx: 200, // 圆心x坐标
|
|
38
|
+
cy: 200, // 圆心y坐标
|
|
39
|
+
radius: [50, 100], // 半径:[内半径, 外半径]
|
|
40
|
+
duration: 200 // 动画时长(ms)
|
|
41
|
+
});
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## use 坐标计算
|
|
45
|
+
|
|
46
|
+
```js
|
|
47
|
+
var pie = pieLayout.use(initPie, hoverIndex);
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### 返回值 pie 结构
|
|
51
|
+
|
|
52
|
+
```js
|
|
53
|
+
{
|
|
54
|
+
count: 数据项数量,
|
|
55
|
+
cx: 圆心x,
|
|
56
|
+
cy: 圆心y,
|
|
57
|
+
radius: [内半径, 外半径],
|
|
58
|
+
hoverIndex: 当前悬浮项索引,
|
|
59
|
+
node: [
|
|
60
|
+
{
|
|
61
|
+
value: 数值,
|
|
62
|
+
name: 名称,
|
|
63
|
+
beginDeg: 开始弧度,
|
|
64
|
+
deg: 跨越弧度,
|
|
65
|
+
isHover: 是否悬浮,
|
|
66
|
+
radius: [当前内半径, 当前外半径],
|
|
67
|
+
label: {
|
|
68
|
+
line: [[x1,y1], [x2,y2], [x3,y3]], // 标签线
|
|
69
|
+
position: [x, y], // 标签位置
|
|
70
|
+
align: 'left' | 'right' // 对齐方式
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
]
|
|
74
|
+
}
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## bind 绑定渲染
|
|
78
|
+
|
|
79
|
+
```js
|
|
80
|
+
pieLayout.bind(initPie, function(pie) {
|
|
81
|
+
// 绘制饼图
|
|
82
|
+
for (var i = 0; i < pie.count; i++) {
|
|
83
|
+
var node = pie.node[i];
|
|
84
|
+
// 绘制扇形...
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## 交互方法
|
|
90
|
+
|
|
91
|
+
```js
|
|
92
|
+
// 设置悬浮项
|
|
93
|
+
pieLayout.setHover(index);
|
|
94
|
+
|
|
95
|
+
// 更新布局
|
|
96
|
+
pieLayout.doUpdate();
|
|
97
|
+
|
|
98
|
+
// 解绑
|
|
99
|
+
pieLayout.unbind();
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## 使用示例
|
|
103
|
+
|
|
104
|
+
```js
|
|
105
|
+
var pieLayout = new PieLayout();
|
|
106
|
+
|
|
107
|
+
pieLayout.setOption({
|
|
108
|
+
cx: 200,
|
|
109
|
+
cy: 200,
|
|
110
|
+
radius: [30, 100],
|
|
111
|
+
duration: 300
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
var data = [
|
|
115
|
+
{ name: 'HTML', value: 30 },
|
|
116
|
+
{ name: 'CSS', value: 20 },
|
|
117
|
+
{ name: 'JavaScript', value: 50 }
|
|
118
|
+
];
|
|
119
|
+
|
|
120
|
+
var pie = pieLayout.use(data);
|
|
121
|
+
|
|
122
|
+
// 绘制饼图
|
|
123
|
+
for (var i = 0; i < pie.count; i++) {
|
|
124
|
+
var node = pie.node[i];
|
|
125
|
+
var colors = ['red', 'green', 'blue'];
|
|
126
|
+
|
|
127
|
+
painter.config({
|
|
128
|
+
fillStyle: colors[i]
|
|
129
|
+
}).fillArc(pie.cx, pie.cy, node.radius[0], node.radius[1],
|
|
130
|
+
node.beginDeg, node.deg);
|
|
131
|
+
}
|
|
132
132
|
```
|
|
@@ -1,159 +1,159 @@
|
|
|
1
|
-
# 坐标投影 API
|
|
2
|
-
|
|
3
|
-
VISLite 提供多种地图坐标投影算法,用于地图可视化开发。
|
|
4
|
-
|
|
5
|
-
## Mercator 墨卡托投影
|
|
6
|
-
|
|
7
|
-
墨卡托投影是航海和航空中常用的投影方式。
|
|
8
|
-
|
|
9
|
-
### 引入
|
|
10
|
-
|
|
11
|
-
```js
|
|
12
|
-
import { Mercator } from 'vislite';
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
### 初始化
|
|
16
|
-
|
|
17
|
-
```js
|
|
18
|
-
var mercator = new Mercator(scale, center);
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
### 参数说明
|
|
22
|
-
|
|
23
|
-
- **scale**: 缩放比例,默认7
|
|
24
|
-
- **center**: 投影中心经纬度 `[经度, 纬度]`,默认 `[107, 36]`(中国中心附近)
|
|
25
|
-
|
|
26
|
-
### 使用方法
|
|
27
|
-
|
|
28
|
-
```js
|
|
29
|
-
var mercator = new Mercator(7, [107, 36]);
|
|
30
|
-
|
|
31
|
-
// 将经纬度转换为平面坐标
|
|
32
|
-
var [x, y, z] = mercator.use(经度, 纬度);
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
### 使用示例
|
|
36
|
-
|
|
37
|
-
```js
|
|
38
|
-
var mercator = new Mercator(7, [116.4, 39.2]); // 北京
|
|
39
|
-
|
|
40
|
-
// 北京的经纬度
|
|
41
|
-
var [x, y] = mercator.use(116.4, 39.2);
|
|
42
|
-
console.log(x, y); // 输出平面坐标
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
---
|
|
46
|
-
|
|
47
|
-
## Eoap 等角斜方位投影
|
|
48
|
-
|
|
49
|
-
等角斜方位投影是一种适合显示以某点为中心区域的投影方式。
|
|
50
|
-
|
|
51
|
-
### 引入
|
|
52
|
-
|
|
53
|
-
```js
|
|
54
|
-
import { Eoap } from 'vislite';
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
### 初始化
|
|
58
|
-
|
|
59
|
-
```js
|
|
60
|
-
var eoap = new Eoap(scale, center);
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
### 参数说明
|
|
64
|
-
|
|
65
|
-
- **scale**: 缩放比例,默认7
|
|
66
|
-
- **center**: 投影中心经纬度 `[经度, 纬度]`,默认 `[107, 36]`
|
|
67
|
-
|
|
68
|
-
### 使用方法
|
|
69
|
-
|
|
70
|
-
```js
|
|
71
|
-
var eoap = new Eoap(7, [116.4, 39.2]);
|
|
72
|
-
|
|
73
|
-
// 将经纬度转换为平面坐标
|
|
74
|
-
var [x, y, z] = eoap.use(经度, 纬度);
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
### 特点
|
|
78
|
-
|
|
79
|
-
- 以投影中心为原点,周围的区域变形较小
|
|
80
|
-
- 适合绘制局部地图(如某个国家或城市)
|
|
81
|
-
- 保持了角度的正确性
|
|
82
|
-
|
|
83
|
-
---
|
|
84
|
-
|
|
85
|
-
## MapCoordinate 地图坐标系
|
|
86
|
-
|
|
87
|
-
MapCoordinate 用于处理地图坐标转换和边界计算。
|
|
88
|
-
|
|
89
|
-
### 引入
|
|
90
|
-
|
|
91
|
-
```js
|
|
92
|
-
import { MapCoordinate } from 'vislite';
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
### 初始化
|
|
96
|
-
|
|
97
|
-
```js
|
|
98
|
-
var mapCoord = new MapCoordinate(projection, option);
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
### 参数说明
|
|
102
|
-
|
|
103
|
-
- **projection**: 投影对象(Mercator 或 Eoap)
|
|
104
|
-
- **option**: 配置项
|
|
105
|
-
- `width`, `height`: 画布尺寸
|
|
106
|
-
- `x`, `y`: 偏移量
|
|
107
|
-
|
|
108
|
-
### 主要功能
|
|
109
|
-
|
|
110
|
-
```js
|
|
111
|
-
// 经纬度转屏幕坐标
|
|
112
|
-
mapCoord.lonlatToScreen(lon, lat);
|
|
113
|
-
|
|
114
|
-
// 屏幕坐标转经纬度
|
|
115
|
-
mapCoord.screenToLonlat(x, y);
|
|
116
|
-
|
|
117
|
-
// 获取地图边界
|
|
118
|
-
mapCoord.getBoundary();
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
### 使用示例
|
|
122
|
-
|
|
123
|
-
```js
|
|
124
|
-
var mercator = new Mercator(7, [107, 36]);
|
|
125
|
-
var mapCoord = new MapCoordinate(mercator, {
|
|
126
|
-
width: 800,
|
|
127
|
-
height: 600
|
|
128
|
-
});
|
|
129
|
-
|
|
130
|
-
// 绘制地图
|
|
131
|
-
geoJson.features.forEach(feature => {
|
|
132
|
-
feature.geometry.coordinates.forEach(polygon => {
|
|
133
|
-
painter.beginPath();
|
|
134
|
-
polygon[0].forEach((point, i) => {
|
|
135
|
-
var [x, y] = mapCoord.lonlatToScreen(point[0], point[1]);
|
|
136
|
-
if (i === 0) painter.moveTo(x, y);
|
|
137
|
-
else painter.lineTo(x, y);
|
|
138
|
-
});
|
|
139
|
-
painter.closePath().fill();
|
|
140
|
-
});
|
|
141
|
-
});
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
---
|
|
145
|
-
|
|
146
|
-
## 投影对比
|
|
147
|
-
|
|
148
|
-
| 特性 | Mercator | Eoap |
|
|
149
|
-
|------|----------|------|
|
|
150
|
-
| 适用场景 | 全球航海图 | 局部区域图 |
|
|
151
|
-
| 中心点 | 固定赤道 | 可自定义 |
|
|
152
|
-
| 变形 | 高纬度变形大 | 中心区域变形小 |
|
|
153
|
-
| 角度 | 保持方向 | 保持角度 |
|
|
154
|
-
|
|
155
|
-
## 选择建议
|
|
156
|
-
|
|
157
|
-
- **全球地图或航海图**: 使用 Mercator
|
|
158
|
-
- **某个国家/城市的局部图**: 使用 Eoap
|
|
1
|
+
# 坐标投影 API
|
|
2
|
+
|
|
3
|
+
VISLite 提供多种地图坐标投影算法,用于地图可视化开发。
|
|
4
|
+
|
|
5
|
+
## Mercator 墨卡托投影
|
|
6
|
+
|
|
7
|
+
墨卡托投影是航海和航空中常用的投影方式。
|
|
8
|
+
|
|
9
|
+
### 引入
|
|
10
|
+
|
|
11
|
+
```js
|
|
12
|
+
import { Mercator } from 'vislite';
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
### 初始化
|
|
16
|
+
|
|
17
|
+
```js
|
|
18
|
+
var mercator = new Mercator(scale, center);
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
### 参数说明
|
|
22
|
+
|
|
23
|
+
- **scale**: 缩放比例,默认7
|
|
24
|
+
- **center**: 投影中心经纬度 `[经度, 纬度]`,默认 `[107, 36]`(中国中心附近)
|
|
25
|
+
|
|
26
|
+
### 使用方法
|
|
27
|
+
|
|
28
|
+
```js
|
|
29
|
+
var mercator = new Mercator(7, [107, 36]);
|
|
30
|
+
|
|
31
|
+
// 将经纬度转换为平面坐标
|
|
32
|
+
var [x, y, z] = mercator.use(经度, 纬度);
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### 使用示例
|
|
36
|
+
|
|
37
|
+
```js
|
|
38
|
+
var mercator = new Mercator(7, [116.4, 39.2]); // 北京
|
|
39
|
+
|
|
40
|
+
// 北京的经纬度
|
|
41
|
+
var [x, y] = mercator.use(116.4, 39.2);
|
|
42
|
+
console.log(x, y); // 输出平面坐标
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Eoap 等角斜方位投影
|
|
48
|
+
|
|
49
|
+
等角斜方位投影是一种适合显示以某点为中心区域的投影方式。
|
|
50
|
+
|
|
51
|
+
### 引入
|
|
52
|
+
|
|
53
|
+
```js
|
|
54
|
+
import { Eoap } from 'vislite';
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### 初始化
|
|
58
|
+
|
|
59
|
+
```js
|
|
60
|
+
var eoap = new Eoap(scale, center);
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### 参数说明
|
|
64
|
+
|
|
65
|
+
- **scale**: 缩放比例,默认7
|
|
66
|
+
- **center**: 投影中心经纬度 `[经度, 纬度]`,默认 `[107, 36]`
|
|
67
|
+
|
|
68
|
+
### 使用方法
|
|
69
|
+
|
|
70
|
+
```js
|
|
71
|
+
var eoap = new Eoap(7, [116.4, 39.2]);
|
|
72
|
+
|
|
73
|
+
// 将经纬度转换为平面坐标
|
|
74
|
+
var [x, y, z] = eoap.use(经度, 纬度);
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### 特点
|
|
78
|
+
|
|
79
|
+
- 以投影中心为原点,周围的区域变形较小
|
|
80
|
+
- 适合绘制局部地图(如某个国家或城市)
|
|
81
|
+
- 保持了角度的正确性
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## MapCoordinate 地图坐标系
|
|
86
|
+
|
|
87
|
+
MapCoordinate 用于处理地图坐标转换和边界计算。
|
|
88
|
+
|
|
89
|
+
### 引入
|
|
90
|
+
|
|
91
|
+
```js
|
|
92
|
+
import { MapCoordinate } from 'vislite';
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### 初始化
|
|
96
|
+
|
|
97
|
+
```js
|
|
98
|
+
var mapCoord = new MapCoordinate(projection, option);
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### 参数说明
|
|
102
|
+
|
|
103
|
+
- **projection**: 投影对象(Mercator 或 Eoap)
|
|
104
|
+
- **option**: 配置项
|
|
105
|
+
- `width`, `height`: 画布尺寸
|
|
106
|
+
- `x`, `y`: 偏移量
|
|
107
|
+
|
|
108
|
+
### 主要功能
|
|
109
|
+
|
|
110
|
+
```js
|
|
111
|
+
// 经纬度转屏幕坐标
|
|
112
|
+
mapCoord.lonlatToScreen(lon, lat);
|
|
113
|
+
|
|
114
|
+
// 屏幕坐标转经纬度
|
|
115
|
+
mapCoord.screenToLonlat(x, y);
|
|
116
|
+
|
|
117
|
+
// 获取地图边界
|
|
118
|
+
mapCoord.getBoundary();
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### 使用示例
|
|
122
|
+
|
|
123
|
+
```js
|
|
124
|
+
var mercator = new Mercator(7, [107, 36]);
|
|
125
|
+
var mapCoord = new MapCoordinate(mercator, {
|
|
126
|
+
width: 800,
|
|
127
|
+
height: 600
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
// 绘制地图
|
|
131
|
+
geoJson.features.forEach(feature => {
|
|
132
|
+
feature.geometry.coordinates.forEach(polygon => {
|
|
133
|
+
painter.beginPath();
|
|
134
|
+
polygon[0].forEach((point, i) => {
|
|
135
|
+
var [x, y] = mapCoord.lonlatToScreen(point[0], point[1]);
|
|
136
|
+
if (i === 0) painter.moveTo(x, y);
|
|
137
|
+
else painter.lineTo(x, y);
|
|
138
|
+
});
|
|
139
|
+
painter.closePath().fill();
|
|
140
|
+
});
|
|
141
|
+
});
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
## 投影对比
|
|
147
|
+
|
|
148
|
+
| 特性 | Mercator | Eoap |
|
|
149
|
+
|------|----------|------|
|
|
150
|
+
| 适用场景 | 全球航海图 | 局部区域图 |
|
|
151
|
+
| 中心点 | 固定赤道 | 可自定义 |
|
|
152
|
+
| 变形 | 高纬度变形大 | 中心区域变形小 |
|
|
153
|
+
| 角度 | 保持方向 | 保持角度 |
|
|
154
|
+
|
|
155
|
+
## 选择建议
|
|
156
|
+
|
|
157
|
+
- **全球地图或航海图**: 使用 Mercator
|
|
158
|
+
- **某个国家/城市的局部图**: 使用 Eoap
|
|
159
159
|
- **复杂地图交互**: 使用 MapCoordinate 配合投影
|