Merge branch 'master' of github.com:antvis/L7

This commit is contained in:
thinkinggis 2020-08-21 08:32:42 +08:00
commit acc86524d6
41 changed files with 875 additions and 883 deletions

View File

@ -1,4 +1,4 @@
```
````
---
title: GridHeatMapLayer
order: 1
@ -11,10 +11,11 @@ order: 1
```javascript
import { HeatMapLayer } from '@antv/l7';
```
````
## source
网格数据只支持点数据作为数据源数据格式支持csv、json、geojson.
网格数据只支持点数据作为数据源,数据格式支持 csv、json、geojson.
#### 设置网格聚合参数
@ -23,27 +24,26 @@ import { HeatMapLayer } from '@antv/l7';
- type  数据聚合类型 grid
- size  网格半径 单位 米
- field  聚合字段
- method 聚合方法  count,max,min,sum,mean 5个统计维度
- method 聚合方法  count,max,min,sum,mean 5 个统计维度
```javascript
layer.source(data, {
parser: {
type: 'csv',
x: 'lng',
y: 'lat'
},
transforms:[
{
type: 'grid',
size: 15000,
field:'v',
method:'sum'
}
]
});
parser: {
type: 'csv',
x: 'lng',
y: 'lat',
},
transforms: [
{
type: 'grid',
size: 15000,
field: 'v',
method: 'sum',
},
],
});
```
## shape
网格热力图虽然是以标准四边形网格进行数据聚合,但是展示效果上可以设置为其形状,形状只支持常量
@ -53,12 +53,10 @@ layer.source(data, {
- circle,
- triangle
- square
- hexagon
- hexagon
```javascript
layer.shape('circle');
```
### 3d
@ -70,92 +68,82 @@ layer.shape('circle');
```javascript
layer.shape('cylinder');
```
## size
### 2D shape
### 2D shape
不需要设置size方法
不需要设置 size 方法
### 3D 图形
### 3D 图形
size 表示高度, 支持常量和数据映射
size 表示高度, 支持常量和数据映射
```javascript
layer.size(10);// 常量
layer.size('value', [10,50]);// 根据value 字段映射大小
layer.size('value', (value)=>{}) // 回调函数设置高度
layer.size(10); // 常量
layer.size('value', [10, 50]); // 根据value 字段映射大小
layer.size('value', (value) => {}); // 回调函数设置高度
```
### color
同layer [color方法](../layer/#color)
layer [color 方法](../layer/#color)
### style
- coverage 网格覆盖度 0 - 1
- angle 网格旋转角度 0 - 360
- opacity 透明度 0 - 1.0
- coverage 网格覆盖度 0 - 1
- angle 网格旋转角度 0 - 360
- opacity 透明度 0 - 1.0
```javascript
layer.style({
coverage: 0.9,
angle: 0,
opacity: 1.0
});
layer.style({
coverage: 0.9,
angle: 0,
opacity: 1.0,
});
```
## 完整实例代码
```javascript
const layer = new HeatmapLayer({})
.source(data, {
parser: {
type: 'csv',
x: 'lng',
y: 'lat'
},
transforms: [
{
type: 'grid',
size: 20000,
field: 'v',
method: 'sum'
}
]
})
.shape('square')
.style({
coverage: 1,
angle: 0
})
.color(
'count',
[
'#0B0030',
'#100243',
'#100243',
'#1B048B',
'#051FB7',
'#0350C1',
'#0350C1',
'#0072C4',
'#0796D3',
'#2BA9DF',
'#30C7C4',
'#6BD5A0',
'#A7ECB2',
'#D0F4CA'
]
);
.source(data, {
parser: {
type: 'csv',
x: 'lng',
y: 'lat',
},
transforms: [
{
type: 'grid',
size: 20000,
field: 'v',
method: 'sum',
},
],
})
.shape('square')
.style({
coverage: 1,
angle: 0,
})
.color('count', [
'#0B0030',
'#100243',
'#100243',
'#1B048B',
'#051FB7',
'#0350C1',
'#0350C1',
'#0072C4',
'#0796D3',
'#2BA9DF',
'#30C7C4',
'#6BD5A0',
'#A7ECB2',
'#D0F4CA',
]);
scene.addLayer(layer);
scene.addLayer(layer);
```

View File

@ -6,13 +6,14 @@ order: 1
将一组点数据按照等大小的正方形网格进行聚合,一个正方形网格代表网格内所有点的统计值。方格热力图特点以方格网布局。
## 使用
```javascript
import { HeatMapLayer } from '@antv/l7';
```
## source
网格数据只支持点数据作为数据源数据格式支持csv、json、geojson.
网格数据只支持点数据作为数据源,数据格式支持 csv、json、geojson.
#### 设置网格聚合参数
@ -21,27 +22,26 @@ import { HeatMapLayer } from '@antv/l7';
- type  数据聚合类型 grid
- size  网格半径 单位 米
- field  聚合字段
- method 聚合方法  count,max,min,sum,mean 5个统计维度
- method 聚合方法  count,max,min,sum,mean 5 个统计维度
```javascript
layer.source(data, {
parser: {
type: 'csv',
x: 'lng',
y: 'lat'
},
transforms:[
{
type: 'grid',
size: 15000,
field:'v',
method:'sum'
}
]
})
parser: {
type: 'csv',
x: 'lng',
y: 'lat',
},
transforms: [
{
type: 'grid',
size: 15000,
field: 'v',
method: 'sum',
},
],
});
```
## shape
网格热力图虽然是以标准四边形网格进行数据聚合,但是展示效果上可以设置为其形状,形状只支持常量
@ -51,11 +51,10 @@ layer.source(data, {
- circle,
- triangle
- square
- heaxgon
- heaxgon
```javascript
layer.shape('circle');
```
### 3d
@ -67,88 +66,82 @@ layer.shape('circle');
```javascript
layer.shape('cylinder');
```
## size
### 2D shape
### 2D shape
不需要设置size方法
不需要设置 size 方法
### 3D 图形
### 3D 图形
size 表示高度, 支持常量和数据映射
size 表示高度, 支持常量和数据映射
```javascript
layer.size(10);// 常量
layer.size('value', [10,50]);// 根据value 字段映射大小
layer.size('value', (value)=>{}) // 回调函数设置高度
layer.size(10); // 常量
layer.size('value', [10, 50]); // 根据value 字段映射大小
layer.size('value', (value) => {}); // 回调函数设置高度
```
## color
同layer color方法
## color
同 layer color 方法
## style
- coverage 网格覆盖度 0 - 1
- angle 网格旋转角度 0 - 360
- opacity 透明度 0 - 1.0
- coverage 网格覆盖度 0 - 1
- angle 网格旋转角度 0 - 360
- opacity 透明度 0 - 1.0
```javascript
layer.style({
coverage: 0.9,
angle: 0,
opacity: 1.0
})
layer.style({
coverage: 0.9,
angle: 0,
opacity: 1.0,
});
```
## 完整实例代码
```javascript
const layer = new HeatmapLayer({})
.source(data, {
parser: {
type: 'csv',
x: 'lng',
y: 'lat'
},
transforms: [
{
type: 'grid',
size: 20000,
field: 'v',
method: 'sum'
}
]
})
.shape('square')
.style({
coverage: 1,
angle: 0
})
.color(
'count',
[
'#0B0030',
'#100243',
'#100243',
'#1B048B',
'#051FB7',
'#0350C1',
'#0350C1',
'#0072C4',
'#0796D3',
'#2BA9DF',
'#30C7C4',
'#6BD5A0',
'#A7ECB2',
'#D0F4CA'
]
);
.source(data, {
parser: {
type: 'csv',
x: 'lng',
y: 'lat',
},
transforms: [
{
type: 'grid',
size: 20000,
field: 'v',
method: 'sum',
},
],
})
.shape('square')
.style({
coverage: 1,
angle: 0,
})
.color('count', [
'#0B0030',
'#100243',
'#100243',
'#1B048B',
'#051FB7',
'#0350C1',
'#0350C1',
'#0072C4',
'#0796D3',
'#2BA9DF',
'#30C7C4',
'#6BD5A0',
'#A7ECB2',
'#D0F4CA',
]);
scene.addLayer(layer);
scene.addLayer(layer);
```

View File

@ -2,43 +2,46 @@
title: Hexagon HeatMap
order: 1
---
将一组点数据按照等大小的六边形网格进行聚合,一个六边形网格代表网格内所有点的统计值。蜂窝热力图特点以六边形热力图网格布局
## 使用
```javascript
import { HeatMapLayer } from '@antv/l7';
```
## source
网格数据只支持点数据作为数据源数据格式支持csv、json、geojson.
网格数据只支持点数据作为数据源,数据格式支持 csv、json、geojson.
#### 设置网格聚合参数
布局方法 通过 source 的 tansforms 属性配置
- type  数据聚合类型 hexagon
- type  数据聚合类型 hexagon
- size  网格半径 单位 米
- field  聚合字段
- method 聚合方法  count,max,min,sum,mean 5个统计维度
- method 聚合方法  count,max,min,sum,mean 5 个统计维度
```javascript
layer.source(data, {
parser: {
type: 'csv',
x: 'lng',
y: 'lat'
},
transforms:[
{
type: 'hexagon',
size: 15000,
field:'v',
method:'sum'
}
]
})
parser: {
type: 'csv',
x: 'lng',
y: 'lat',
},
transforms: [
{
type: 'hexagon',
size: 15000,
field: 'v',
method: 'sum',
},
],
});
```
## shape
网格热力图虽然是以标准四边形网格进行数据聚合,但是展示效果上可以设置为其形状,形状只支持常量
@ -48,11 +51,10 @@ layer.source(data, {
- circle,
- triangle
- square
- heaxgon
- heaxgon
```javascript
layer.shape('circle');
```
### 3d
@ -64,52 +66,48 @@ layer.shape('circle');
```javascript
layer.shape('cylinder');
```
## size
### 2D shape
### 2D shape
不需要设置size方法
不需要设置 size 方法
### 3D 图形
### 3D 图形
size 表示高度, 支持常量和数据映射
size 表示高度, 支持常量和数据映射
```javascript
layer.size(10);// 常量
layer.size('value', [10,50]);// 根据value 字段映射大小
layer.size('value', (value)=>{}) // 回调函数设置高度
layer.size(10); // 常量
layer.size('value', [10, 50]); // 根据value 字段映射大小
layer.size('value', (value) => {}); // 回调函数设置高度
```
## color
同layer color方法
layer color 方法
## style
- coverage 网格覆盖度 0 - 1
- angle 网格旋转角度 0 - 360
- opacity 透明度 0 - 1.0
- coverage 网格覆盖度 0 - 1
- angle 网格旋转角度 0 - 360
- opacity 透明度 0 - 1.0
```javascript
layer.style({
coverage: 0.9,
angle: 0,
opacity: 1.0
});
layer.style({
coverage: 0.9,
angle: 0,
opacity: 1.0,
});
```
### 完整代码
```javascript
const layer =
new HeatmapLayer({
zIndex: 2,
})
const layer = new HeatmapLayer({
zIndex: 2,
})
.souce(data, {
parser: {
type: 'csv',
@ -131,5 +129,3 @@ const layer =
coverage: 0.8,
});
```

View File

@ -9,41 +9,39 @@ order: 1
```javascript
import { HeatMapLayer } from '@antv/l7';
```
## source
网格数据只支持点数据作为数据源数据格式支持csv、json、geojson.
网格数据只支持点数据作为数据源,数据格式支持 csv、json、geojson.
#### 设置网格聚合参数
布局方法 通过 source 的 tansforms 属性配置
- type  数据聚合类型 hexagon
- type  数据聚合类型 hexagon
- size  网格半径 单位 米
- field  聚合字段
- method 聚合方法 count,max,min,sum,mean 5个统计维度
- method 聚合方法 count,max,min,sum,mean 5 个统计维度
```javascript
layer.source(data, {
parser: {
type: 'csv',
x: 'lng',
y: 'lat'
},
transforms:[
{
type: 'hexagon',
size: 15000,
field:'v',
method:'sum'
}
]
})
parser: {
type: 'csv',
x: 'lng',
y: 'lat',
},
transforms: [
{
type: 'hexagon',
size: 15000,
field: 'v',
method: 'sum',
},
],
});
```
## shape
网格热力图虽然是以标准四边形网格进行数据聚合,但是展示效果上可以设置为其形状,形状只支持常量
@ -53,11 +51,10 @@ layer.source(data, {
- circle,
- triangle
- square
- heaxgon
- heaxgon
```javascript
layer.shape('circle');
```
### 3d
@ -69,50 +66,48 @@ layer.shape('circle');
```javascript
layer.shape('cylinder');
```
## size
### 2D shape
### 2D shape
不需要设置size方法
不需要设置 size 方法
### 3D 图形
### 3D 图形
size 表示高度, 支持常量和数据映射
size 表示高度, 支持常量和数据映射
```javascript
layer.size(10);// 常量
layer.size('value', [10,50]);// 根据value 字段映射大小
layer.size('value', (value)=>{}) // 回调函数设置高度
layer.size(10); // 常量
layer.size('value', [10, 50]); // 根据value 字段映射大小
layer.size('value', (value) => {}); // 回调函数设置高度
```
## color
同layer color方法
layer color 方法
## style
- coverage 网格覆盖度 0 - 1
- angle 网格旋转角度 0 - 360
- opacity 透明度 0 - 1.0
- coverage 网格覆盖度 0 - 1
- angle 网格旋转角度 0 - 360
- opacity 透明度 0 - 1.0
```javascript
layer.style({
coverage: 0.9,
angle: 0,
opacity: 1.0
});
layer.style({
coverage: 0.9,
angle: 0,
opacity: 1.0,
});
```
### 完整代码
```javascript
const layer =
new HeatmapLayer({
zIndex: 2,
})
const layer = new HeatmapLayer({
zIndex: 2,
})
.souce(data, {
parser: {
type: 'csv',
@ -134,5 +129,3 @@ const layer =
coverage: 0.8,
});
```

View File

@ -7,11 +7,11 @@ order: 1
```javascript
import { HeatMapLayer } from '@antv/l7';
```
## shape
常量 heatmap
常量 heatmap
```javascript
layer.shape('heatmap');
@ -23,47 +23,45 @@ layer.shape('heatmap');
- values: 数据映射区间 热力图显示 [0, 1] 效果最佳
```javascript
layer.size('weight', [0,1])
layer.size('weight', [0, 1]);
```
## color
heatmap 需要设置color 方法样式通过style 设置
heatmap 需要设置 color 方法,样式通过 style 设置
## style
- intensity    全局热力权重     推荐权重范围 1-5
- radius   热力半径,单位像素
- rampColors 色带参数
- colors  颜色数组
- positions 数据区间
⚠️ color, position 的长度要相同
⚠️ color, position 的长度要相同
## 完整代码
```javascript
heatmapLayer({
zIndex: 2,
})
.source(data)
.size('mag', [0, 1]) // weight映射通道
.style({
intensity: 3,
radius: 20,
rampColors: {
colors: [
'rgba(33,102,172,0.0)',
'rgb(103,169,207)',
'rgb(209,229,240)',
'rgb(253,219,199)',
'rgb(239,138,98)',
'rgb(178,24,43,1.0)',
],
positions: [0, 0.2, 0.4, 0.6, 0.8, 1.0],
},
});
.source(data)
.size('mag', [0, 1]) // weight映射通道
.style({
intensity: 3,
radius: 20,
rampColors: {
colors: [
'rgba(33,102,172,0.0)',
'rgb(103,169,207)',
'rgb(209,229,240)',
'rgb(253,219,199)',
'rgb(239,138,98)',
'rgb(178,24,43,1.0)',
],
positions: [0, 0.2, 0.4, 0.6, 0.8, 1.0],
},
});
```

View File

@ -7,11 +7,11 @@ order: 1
```javascript
import { HeatMapLayer } from '@antv/l7';
```
## shape
常量 heatmap
常量 heatmap
```javascript
layer.shape('heatmap');
@ -23,45 +23,43 @@ layer.shape('heatmap');
- values: 数据映射区间 热力图显示 [0, 1] 效果最佳
```javascript
layer.size('weight', [0,1])
layer.size('weight', [0, 1]);
```
## color
heatmap 需要设置color 方法样式通过style 设置
heatmap 需要设置 color 方法,样式通过 style 设置
## style
- intensity    全局热力权重     推荐权重范围 1-5
- radius   热力半径,单位像素
- rampColors 色带参数
- colors  颜色数组
- positions 数据区间
⚠️ color, position 的长度要相同
⚠️ color, position 的长度要相同
## 完整代码
```javascript
heatmapLayer()
.source(data)
.size('mag', [0, 1]) // weight映射通道
.style({
intensity: 3,
radius: 20,
rampColors: {
colors: [
'rgba(33,102,172,0.0)',
'rgb(103,169,207)',
'rgb(209,229,240)',
'rgb(253,219,199)',
'rgb(239,138,98)',
'rgb(178,24,43,1.0)',
],
positions: [0, 0.2, 0.4, 0.6, 0.8, 1.0],
},
});
.source(data)
.size('mag', [0, 1]) // weight映射通道
.style({
intensity: 3,
radius: 20,
rampColors: {
colors: [
'rgba(33,102,172,0.0)',
'rgb(103,169,207)',
'rgb(209,229,240)',
'rgb(253,219,199)',
'rgb(239,138,98)',
'rgb(178,24,43,1.0)',
],
positions: [0, 0.2, 0.4, 0.6, 0.8, 1.0],
},
});
```

View File

@ -2,23 +2,25 @@
title: ArcLayer
order: 1
---
将两个点的连线绘制成弧形,绘制的弧线可以是贝塞尔曲线,大圆航线,通常用来表示两种地理事物关系和联系,或者人口迁移,物流起点目的地等
## 使用
### 数据
绘制弧线只需提供起止点坐标即可
```javascript
source(data, {
parser: {
type: 'csv',
x: 'lng1',
y: 'lat1',
x1: 'lng2',
y1: 'lat2'
}
})
source(data, {
parser: {
type: 'csv',
x: 'lng1',
y: 'lat1',
x1: 'lng2',
y1: 'lat2',
},
});
```
### shape
@ -29,15 +31,13 @@ order: 1
- greatcircle 大圆航线,地图两个点的最近距离不是两个点连线,而是大圆航线
- arc3d 3d 弧线地图 3D 视角
### animate
#### 开启关闭动画
```javascript
layer.animate(true)
layer.animate(false)
layer.animate(true);
layer.animate(false);
```
#### 设置动画参数
@ -50,35 +50,34 @@ layer.animate(false)
layer.animate({
duration: 4,
interval: 0.2,
trailLength: 0.1
})
trailLength: 0.1,
});
```
##### 参数动画介绍
L7 目前动画参数为相对单位我们默认一条线段的长度为1
L7 目前动画参数为相对单位,我们默认一条线段的长度为 1
![L7 动画参数](https://gw.alipayobjects.com/mdn/rms_855bab/afts/img/A*IBBfSIkb51cAAAAAAAAAAABkARQnAQ)
如果 interval = 0.2,则一条轨迹将会分成5段如果 interval = 0.5 则为两段。
如果 interval = 0.2,则一条轨迹将会分成 5 段,如果 interval = 0.5 则为两段。
### 示例代码
```javascript
const layer = new LineLayer({})
.source(data, {
parser: {
type: 'csv',
x: 'lng1',
y: 'lat1',
x1: 'lng2',
y1: 'lat2'
}
})
.size(1)
.shape('arc')
.color('#8C1EB2')
.style({
opacity: 0.8,
});
.source(data, {
parser: {
type: 'csv',
x: 'lng1',
y: 'lat1',
x1: 'lng2',
y1: 'lat2',
},
})
.size(1)
.shape('arc')
.color('#8C1EB2')
.style({
opacity: 0.8,
});
```

View File

@ -2,24 +2,25 @@
title: 弧线图
order: 1
---
将两个点的连线绘制成弧形,绘制的弧线可以是贝塞尔曲线,大圆航线,通常用来表示两种地理事物关系和联系,或者人口迁移,物流起点目的地等
## 使用
### 数据
绘制弧线只需提供起止点坐标即可
```javascript
source(data, {
parser: {
type: 'csv',
x: 'lng1',
y: 'lat1',
x1: 'lng2',
y1: 'lat2'
}
})
source(data, {
parser: {
type: 'csv',
x: 'lng1',
y: 'lat1',
x1: 'lng2',
y1: 'lat2',
},
});
```
### shape
@ -35,8 +36,8 @@ order: 1
#### 开启关闭动画
```javascript
layer.animate(true)
layer.animate(false)
layer.animate(true);
layer.animate(false);
```
#### 设置动画参数
@ -49,38 +50,38 @@ layer.animate(false)
layer.animate({
duration: 4,
interval: 0.2,
trailLength: 0.1
})
trailLength: 0.1,
});
```
##### 参数动画介绍
L7 目前动画参数为相对单位我们默认一条线段的长度为1
L7 目前动画参数为相对单位,我们默认一条线段的长度为 1
![L7 动画参数](https://gw.alipayobjects.com/mdn/rms_855bab/afts/img/A*IBBfSIkb51cAAAAAAAAAAABkARQnAQ)
如果 interval = 0.2,则一条轨迹将会分成5段如果 interval = 0.5 则为两段。
如果 interval = 0.2,则一条轨迹将会分成 5 段,如果 interval = 0.5 则为两段。
### 示例代码
```javascript
const layer = new LineLayer({})
.source(data, {
parser: {
type: 'csv',
x: 'lng1',
y: 'lat1',
x1: 'lng2',
y1: 'lat2'
}
})
.size(1)
.shape('arc')
.color('#8C1EB2')
.style({
opacity: 0.8,
});
.source(data, {
parser: {
type: 'csv',
x: 'lng1',
y: 'lat1',
x1: 'lng2',
y1: 'lat2',
},
})
.size(1)
.shape('arc')
.color('#8C1EB2')
.style({
opacity: 0.8,
});
```
### demo 示例
[弧线demo](../../../../examples/gallery/basic#arcCircle)
[弧线 demo](../../../../examples/gallery/basic#arcCircle)

View File

@ -68,14 +68,15 @@ order: 0
lineLayer.size(1); // 线的宽度为 1
lineLayer.size([1, 2]); // 宽度为1高度2
```
### style
- lineType dash | solid 线类型实线和虚线
- dashArray 虚线配置项 ```[ 5, 5]```
- lineType dash | solid 线类型实线和虚线
- dashArray 虚线配置项 `[ 5, 5]`
```javascript
layer .style({
lineType: 'dash',
dashArray: [ 5, 5 ]
})
layer.style({
lineType: 'dash',
dashArray: [5, 5],
});
```

View File

@ -2,32 +2,37 @@
title: Path
order: 1
---
用一组首尾不闭合的点坐标对来定位的线图层,通常用来表示轨迹,线路,道路等
## 使用
### shape
shape 设置成line即可绘制路线图
- line
shape 设置成 line 即可绘制路线图
- line
### size
路径图线的size支持两个维度
路径图线的 size 支持两个维度
- width 宽度
- height 高度
```javascript
layer.size([2,10]) // 绘制宽度为2高度为10的路径
layer.size('height',[])
layer.size([2, 10]); // 绘制宽度为2高度为10的路径
layer.size('height', []);
```
### animate
#### 开启关闭动画
```javascript
layer.animate(true)
layer.animate(false)
layer.animate(true);
layer.animate(false);
```
#### 设置动画参数
@ -40,16 +45,13 @@ layer.animate(false)
layer.animate({
duration: 4,
interval: 0.2,
trailLength: 0.1
})
trailLength: 0.1,
});
```
##### 参数动画介绍
L7 目前动画参数为相对单位我们默认一条线段的长度为1
L7 目前动画参数为相对单位,我们默认一条线段的长度为 1
![L7 动画参数](https://gw.alipayobjects.com/mdn/rms_855bab/afts/img/A*IBBfSIkb51cAAAAAAAAAAABkARQnAQ)
如果 interval = 0.2,则一条轨迹将会分成5段如果 interval = 0.5 则为两段。
如果 interval = 0.2,则一条轨迹将会分成 5 段,如果 interval = 0.5 则为两段。

View File

@ -2,32 +2,37 @@
title: 路径图
order: 1
---
用一组首尾不闭合的点坐标对来定位的线图层,通常用来表示轨迹,线路,道路等
## 使用
### shape
shape 设置成line即可绘制路线图
- line
shape 设置成 line 即可绘制路线图
- line
### size
路径图线的size支持两个维度
路径图线的 size 支持两个维度
- width 宽度
- height 高度
```javascript
layer.size([2,10]) // 绘制宽度为2高度为10的路径
layer.size('height',[])
layer.size([2, 10]); // 绘制宽度为2高度为10的路径
layer.size('height', []);
```
### animate
#### 开启关闭动画
```javascript
layer.animate(true)
layer.animate(false)
layer.animate(true);
layer.animate(false);
```
#### 设置动画参数
@ -40,18 +45,13 @@ layer.animate(false)
layer.animate({
duration: 4,
interval: 0.2,
trailLength: 0.1
})
trailLength: 0.1,
});
```
##### 参数动画介绍
L7 目前动画参数为相对单位我们默认一条线段的长度为1
L7 目前动画参数为相对单位,我们默认一条线段的长度为 1
![L7 动画参数](https://gw.alipayobjects.com/mdn/rms_855bab/afts/img/A*IBBfSIkb51cAAAAAAAAAAABkARQnAQ)
如果 interval = 0.2,则一条轨迹将会分成5段如果 interval = 0.5 则为两段。
如果 interval = 0.2,则一条轨迹将会分成 5 段,如果 interval = 0.5 则为两段。

View File

@ -2,36 +2,35 @@
title: Bubble Map
order: 1
---
气泡图地理区域上方会显示不同大小的圆点,圆形面积与其在数据集中的数值会成正比。
## 使用
气泡图通过PointLayer对象实例化
气泡图通过 PointLayer 对象实例化,
```javascript
import { PointLayer } from '@antv/l7';
```
### shape
通常气泡图shape 设置为 **circle**
### shape
通常气泡图 shape 设置为 **circle**
### size
气泡图大小,需要指定数据映射字段
```javascript
const bubble =
new PointLayer()
.source(data)
.shape(circle)
.size('mag',[0, 25])
.color('red')
.style({
opacity: 0.3,
strokeWidth: 1
})
const bubble = new PointLayer()
.source(data)
.shape(circle)
.size('mag', [0, 25])
.color('red')
.style({
opacity: 0.3,
strokeWidth: 1,
});
```
### animate
@ -41,22 +40,19 @@ new PointLayer()
#### 开启关闭动画
```javascript
layer.animate(true)
layer.animate(false)
layer.animate(true);
layer.animate(false);
```
#### 水波配置项
- speed 水波速度
- rings 水波环数
## tips
目前style的配置项只支持全局设置不支持数据映射。
目前 style 的配置项只支持全局设置,不支持数据映射。
如果 opacity 设置为 0.3 则所有的气泡都是 0.3
style方法如果没有设置 stroke, 默认于气泡的填充色相同
style 方法如果没有设置 stroke, 默认于气泡的填充色相同

View File

@ -2,36 +2,35 @@
title: 气泡图
order: 1
---
气泡图地理区域上方会显示不同大小的圆点,圆形面积与其在数据集中的数值会成正比。
## 使用
气泡图通过PointLayer对象实例化
气泡图通过 PointLayer 对象实例化,
```javascript
import { PointLayer } from '@antv/l7';
```
### shape
通常气泡图shape 设置为 **circle**
### shape
通常气泡图 shape 设置为 **circle**
### size
气泡图大小,需要指定数据映射字段
```javascript
const bubble =
new PointLayer()
.source(data)
.shape(circle)
.size('mag',[0, 25])
.color('red')
.style({
opacity: 0.3,
strokeWidth: 1
})
const bubble = new PointLayer()
.source(data)
.shape(circle)
.size('mag', [0, 25])
.color('red')
.style({
opacity: 0.3,
strokeWidth: 1,
});
```
### animate
@ -41,22 +40,19 @@ new PointLayer()
#### 开启关闭动画
```javascript
layer.animate(true)
layer.animate(false)
layer.animate(true);
layer.animate(false);
```
#### 水波配置项
- speed 水波速度
- rings 水波环数
## tips
目前style的配置项只支持全局设置不支持数据映射。
目前 style 的配置项只支持全局设置,不支持数据映射。
如果 opacity 设置为 0.3 则所有的气泡都是 0.3
style方法如果没有设置 stroke, 默认于气泡的填充色相同
style 方法如果没有设置 stroke, 默认于气泡的填充色相同

View File

@ -2,8 +2,9 @@
title: Chart Map
order: 6
---
使用二维统计图表代替点状符号的一种特殊复合形式,复合图表地图中常用扩展图形还有柱状图、曲线图、玫瑰图等
通过自定义Marker 实现自定义图表
通过自定义 Marker 实现自定义图表
[demo示例](../../../../examples/point/chart)
[demo 示例](../../../../examples/point/chart)

View File

@ -2,8 +2,9 @@
title: 复合图表地图
order: 6
---
使用二维统计图表代替点状符号的一种特殊复合形式,复合图表地图中常用扩展图形还有柱状图、曲线图、玫瑰图等
通过自定义Marker 实现自定义图表
通过自定义 Marker 实现自定义图表
[demo示例](../../../../examples/point/chart)
[demo 示例](../../../../examples/point/chart)

View File

@ -2,72 +2,70 @@
title: Cluster Map
order: 5
---
## 使用
目前只有点数据支持聚类方法
数据聚合主要从数据层数据因此需要在Source方法配置 cluster 参数
数据聚合主要从数据层数据,因此需要在 Source 方法配置 cluster 参数
### Source
### Source
[source 文档](../../source/source)
### 配置项
- cluster **boolean** 是否聚合
- clusterOption 聚合配置项
- radius 聚合半径 **number** default 40
- minZoom: 最小聚合缩放等级 **number** default 0
- maxZoom: 最大聚合缩放等级 **number** default 16
数据聚合之后,源数据会增加 point_count属性在可视化渲染时可以根据 point_count 进行数据映射。
- cluster **boolean** 是否聚合
- clusterOption 聚合配置项
- radius 聚合半径 **number** default 40
- minZoom: 最小聚合缩放等级 **number** default 0
- maxZoom: 最大聚合缩放等级 **number** default 16
数据聚合之后,源数据会增加 point_count 属性,在可视化渲染时可以根据 point_count 进行数据映射。
#### 方法
**getClusters(zoom: number)**
获取指定缩放等级的聚合数据
- zoom 缩放等级
**getClustersLeaves(id: string)**
**getClusters(zoom: number)**
获取指定缩放等级的聚合数据
- zoom 缩放等级
**getClustersLeaves(id: string)**
根据id获取聚合节点的数据
- id 聚合数据id
- id 聚合数据 id
```javascript
layer.source(pointsData, {
cluster: true,
});
cluster: true,
});
// 设置配置项
layer.source(pointsData, {
cluster: true,
clusterOption:{
radius:40,
}
});
cluster: true,
clusterOption: {
radius: 40,
},
});
```
### 完整示例
```javascript
const pointLayer = new PointLayer({})
.source(pointsData, {
cluster: true,
})
.shape('circle')
.scale('point_count', {
type: 'quantile',
})
.size('point_count', [5, 10, 15, 20, 25])
.color('red')
.style({
opacity: 0.3,
strokeWidth: 1,
});
.source(pointsData, {
cluster: true,
})
.shape('circle')
.scale('point_count', {
type: 'quantile',
})
.size('point_count', [5, 10, 15, 20, 25])
.color('red')
.style({
opacity: 0.3,
strokeWidth: 1,
});
```

View File

@ -7,90 +7,86 @@ order: 5
目前只有点数据支持聚类方法
数据聚合主要从数据层数据因此需要在Source方法配置 cluster 参数
数据聚合主要从数据层数据,因此需要在 Source 方法配置 cluster 参数
### Source
### Source
[source 文档](../../source/source)
### 配置项
- cluster **boolean** 是否聚合
- clusterOption 聚合配置项
- radius 聚合半径 **number** default 40
- minZoom: 最小聚合缩放等级 **number** default 0
- maxZoom: 最大聚合缩放等级 **number** default 16
数据聚合之后,数据会增加 point_count属性在可视化渲染时可以根据 point_count进行数据映射。
- cluster **boolean** 是否聚合
- clusterOption 聚合配置项
- radius 聚合半径 **number** default 40
- minZoom: 最小聚合缩放等级 **number** default 0
- maxZoom: 最大聚合缩放等级 **number** default 16
数据聚合之后,数据会增加 point_count 属性,在可视化渲染时可以根据 point_count 进行数据映射。
#### 方法
**getClusters(zoom: number)**
获取指定缩放等级的聚合数据
- zoom 缩放等级
**getClustersLeaves(id: string)**
根据id获取聚合节点的数据每个聚合节点会有一个唯一ID
**getClusters(zoom: number)**
- id 聚合数据id
获取指定缩放等级的聚合数据
- zoom 缩放等级
**getClustersLeaves(id: string)**
根据 id 获取聚合节点的数据,每个聚合节点会有一个唯一 ID
- id 聚合数据 id
```javascript
layer.source(pointsData, {
cluster: true,
});
cluster: true,
});
// 设置配置项
layer.source(pointsData, {
cluster: true,
clusterOption:{
radius:40,
}
});
cluster: true,
clusterOption: {
radius: 40,
},
});
```
### 方法
获取聚合节点的原始数据,通过Source的 getClustersLeaves方法
获取聚合节点的原始数据,通过 Source 的 getClustersLeaves 方法
```javascript
const source = layer.getSource();
source.getClustersLeaves(id)
layer.on('click', (e) => {
console.log(source.getClustersLeaves(e.feature.cluster_id));
});
const source = layer.getSource();
source.getClustersLeaves(id);
layer.on('click', (e) => {
console.log(source.getClustersLeaves(e.feature.cluster_id));
});
```
### 完整示例
```javascript
const pointLayer = new PointLayer({})
.source(pointsData, {
cluster: true,
})
.shape('circle')
.scale('point_count', {
type: 'quantile',
})
.size('point_count', [5, 10, 15, 20, 25])
// .size(10)
.color('red')
.style({
opacity: 0.3,
strokeWidth: 1,
});
.source(pointsData, {
cluster: true,
})
.shape('circle')
.scale('point_count', {
type: 'quantile',
})
.size('point_count', [5, 10, 15, 20, 25])
// .size(10)
.color('red')
.style({
opacity: 0.3,
strokeWidth: 1,
});
```
[聚合图使用案例](../../../examples/point/cluster)
### FAQ
PointLayer的聚合图采用WebGL绘制不支持自定义具体聚合样式如果有自定义的需求可以使用MarkerLayer的聚合功能你可以通过Dom完全自定义样式。
[MarkerLayer聚合](../../component/markerLayer)
PointLayer 的聚合图采用 WebGL 绘制,不支持自定义具体聚合样式,如果有自定义的需求可以使用 MarkerLayer 的聚合功能,你可以通过 Dom 完全自定义样式。
[MarkerLayer 聚合](../../component/markerLayer)

View File

@ -2,32 +2,36 @@
title: 3D Column
order: 5
---
3D柱图地理区域上方会显示不同高度的柱体主题的高度与其在数据集中的数值会成正比。
3D 柱图地理区域上方会显示不同高度的柱体,主题的高度与其在数据集中的数值会成正比。
## 使用
3D柱图通过 PointLayer对象实例化将shape设置成不同的3Dshape
3D 柱图通过 PointLayer 对象实例化,将 shape 设置成不同的 3Dshape
### shape
3D Shape 支持
- cylinder
- cylinder
- triangleColumn
- hexagonColumn
- squareColumn
### size
3D柱图size 需要设置三个维度 [w, l, z]
- w 宽
- l 长
- z 高度
3D 柱图 size 需要设置三个维度 [w, l, z]
size设置成常量
- w 宽
- l 长
- z 高度
size 设置成常量
```
layer.size([2,2,3])
```
```
size 回调函数设置
```
@ -36,23 +40,20 @@ size 回调函数设置
})
```
```javascript
const column = new PointLayer({})
.source(data)
.shape('name', [
'cylinder',
'triangleColumn',
'hexagonColumn',
'squareColumn'
])
.size('unit_price', h => {
return [ 6, 6, h / 500 ];
})
.color('name', [ '#5B8FF9', '#70E3B5', '#FFD458', '#FF7C6A' ])
.style({
opacity: 1.0
});
.source(data)
.shape('name', [
'cylinder',
'triangleColumn',
'hexagonColumn',
'squareColumn',
])
.size('unit_price', (h) => {
return [6, 6, h / 500];
})
.color('name', ['#5B8FF9', '#70E3B5', '#FFD458', '#FF7C6A'])
.style({
opacity: 1.0,
});
```

View File

@ -2,32 +2,36 @@
title: 3D 柱图
order: 5
---
3D柱图地理区域上方会显示不同高度的柱体主题的高度与其在数据集中的数值会成正比。
3D 柱图地理区域上方会显示不同高度的柱体,主题的高度与其在数据集中的数值会成正比。
## 使用
3D柱图通过 PointLayer对象实例化将shape设置成不同的3Dshape
3D 柱图通过 PointLayer 对象实例化,将 shape 设置成不同的 3Dshape
### shape
3D Shape 支持
- cylinder
- cylinder
- triangleColumn
- hexagonColumn
- squareColumn
### size
3D柱图size 需要设置三个维度 [w, l, z]
- w 宽
- l 长
- z 高度
3D 柱图 size 需要设置三个维度 [w, l, z]
size设置成常量
- w 宽
- l 长
- z 高度
size 设置成常量
```
layer.size([2,2,3])
```
```
size 回调函数设置
```
@ -36,23 +40,20 @@ size 回调函数设置
})
```
```javascript
const column = new PointLayer({})
.source(data)
.shape('name', [
'cylinder',
'triangleColumn',
'hexagonColumn',
'squareColumn'
])
.size('unit_price', h => {
return [ 6, 6, h / 500 ];
})
.color('name', [ '#5B8FF9', '#70E3B5', '#FFD458', '#FF7C6A' ])
.style({
opacity: 1.0
});
.source(data)
.shape('name', [
'cylinder',
'triangleColumn',
'hexagonColumn',
'squareColumn',
])
.size('unit_price', (h) => {
return [6, 6, h / 500];
})
.color('name', ['#5B8FF9', '#70E3B5', '#FFD458', '#FF7C6A'])
.style({
opacity: 1.0,
});
```

View File

@ -2,46 +2,46 @@
title: Dot Density
order: 3
---
亮度图又称点密度图,单位面积的内点的个数越多,亮度会越亮,亮度图一般用来表达海量点数据分布情况
## 使用
### shape
- dot 如果需要使用亮度图可以将shape设置为dot,或者不设置shape
### color
- dot 如果需要使用亮度图可以将 shape 设置为 dot,或者不设置 shape
- 无权重
如果数据没有权重可以将颜色设置为常量,渲染时会自动进行颜色叠加,点越多颜色越亮
- 有权重
如果数据有权重可以设置一组同一色相,不同亮度的色带,值越大亮度会越亮。
### color
- 无权重
如果数据没有权重可以将颜色设置为常量,渲染时会自动进行颜色叠加,点越多颜色越亮
- 有权重
如果数据有权重可以设置一组同一色相,不同亮度的色带,值越大亮度会越亮。
```javascript
const pointLayer = new PointLayer()
.source(data)
.size(2)
.shape('dot')
.color('h8', [
'#0A3663',
'#1558AC',
'#3771D9',
'#4D89E5',
'#64A5D3',
'#72BED6',
'#83CED6',
'#A6E1E0',
'#B8EFE2',
'#D7F9F0'
])
.style({
opacity: 1
});
.source(data)
.size(2)
.shape('dot')
.color('h8', [
'#0A3663',
'#1558AC',
'#3771D9',
'#4D89E5',
'#64A5D3',
'#72BED6',
'#83CED6',
'#A6E1E0',
'#B8EFE2',
'#D7F9F0',
])
.style({
opacity: 1,
});
scene.addLayer(pointLayer);
scene.addLayer(pointLayer);
```
## 相关demo
## 相关 demo
[城市亮度图](../../../../examples/point/dot)

View File

@ -2,46 +2,46 @@
title: 亮度图
order: 3
---
亮度图又称点密度图,单位面积的内点的个数越多,亮度会越亮,亮度图一般用来表达海量点数据分布情况
## 使用
### shape
- dot 如果需要使用亮度图可以将shape设置为dot,或者不设置shape
### color
- dot 如果需要使用亮度图可以将 shape 设置为 dot,或者不设置 shape
- 无权重
如果数据没有权重可以将颜色设置为常量,渲染时会自动进行颜色叠加,点越多颜色越亮
- 有权重
如果数据有权重可以设置一组同一色相,不同亮度的色带,值越大亮度会越亮。
### color
- 无权重
如果数据没有权重可以将颜色设置为常量,渲染时会自动进行颜色叠加,点越多颜色越亮
- 有权重
如果数据有权重可以设置一组同一色相,不同亮度的色带,值越大亮度会越亮。
```javascript
const pointLayer = new PointLayer()
.source(data)
.size(2)
.shape('dot')
.color('h8', [
'#0A3663',
'#1558AC',
'#3771D9',
'#4D89E5',
'#64A5D3',
'#72BED6',
'#83CED6',
'#A6E1E0',
'#B8EFE2',
'#D7F9F0'
])
.style({
opacity: 1
});
.source(data)
.size(2)
.shape('dot')
.color('h8', [
'#0A3663',
'#1558AC',
'#3771D9',
'#4D89E5',
'#64A5D3',
'#72BED6',
'#83CED6',
'#A6E1E0',
'#B8EFE2',
'#D7F9F0',
])
.style({
opacity: 1,
});
scene.addLayer(pointLayer);
scene.addLayer(pointLayer);
```
## 相关demo
## 相关 demo
[城市亮度图](../../../../examples/point/dot)

View File

@ -2,7 +2,8 @@
title: Custom Marker
order: 7
---
可自定义点符号通过自定义dom实现地图标注富文本、动态点状符号都可用于地图上信息的标记。
可自定义点符号,通过自定义 dom 实现地图标注,富文本、动态点状符号都可用于地图上信息的标记。
## 使用

View File

@ -2,7 +2,8 @@
title: 自定义 Marker
order: 7
---
可自定义点符号通过自定义dom实现地图标注富文本、动态点状符号都可用于地图上信息的标记。
可自定义点符号,通过自定义 dom 实现地图标注,富文本、动态点状符号都可用于地图上信息的标记。
## 使用

View File

@ -2,10 +2,12 @@
title: Scatter Map
order: 2
---
在地理区域上放置相等大小的圆点,用来表示地域上的空间布局或数据分布。
## 使用
散点图通过PointLayer对象实例化
散点图通过 PointLayer 对象实例化
### shape
@ -19,25 +21,24 @@ order: 2
- rhombus
- vesica
散点图shape 一般设置成常量
散点图 shape 一般设置成常量
### color
color 可以根据数据的差异设置成不同颜色,表示数据的不同分类。
### size
散点图一般等大小的图形,size 一般设置成常量
```javascript
const scatter =
new PointLayer()
.source(data)
.shape(circle)
.size(5)
.color('red')
.style({
opacity: 0.3,
strokeWidth: 1
})
const scatter = new PointLayer()
.source(data)
.shape(circle)
.size(5)
.color('red')
.style({
opacity: 0.3,
strokeWidth: 1,
});
```

View File

@ -2,10 +2,12 @@
title: 散点图
order: 2
---
在地理区域上放置相等大小的圆点,用来表示地域上的空间布局或数据分布。
## 使用
散点图通过PointLayer对象实例化
散点图通过 PointLayer 对象实例化
### shape
@ -19,25 +21,24 @@ order: 2
- rhombus
- vesica
散点图shape 一般设置成常量
散点图 shape 一般设置成常量
### color
color 可以根据数据的差异设置成不同颜色,表示数据的不同分类。
### size
散点图一般等大小的图形,size 一般设置成常量
```javascript
const scatter =
new PointLayer()
.source(data)
.shape(circle)
.size(5)
.color('red')
.style({
opacity: 0.3,
strokeWidth: 1
})
const scatter = new PointLayer()
.source(data)
.shape(circle)
.size(5)
.color('red')
.style({
opacity: 0.3,
strokeWidth: 1,
});
```

View File

@ -2,44 +2,44 @@
title: Symbol Map
order: 4
---
在地理区域上放置不同图片作为符号,通常表示不同地理要素分布情况
## 使用
符号图 通过PointLayer对象实例化将shape设置成图片符号
符号图 通过 PointLayer 对象实例化,将 shape 设置成图片符号
### shape
通过scene addImage 方法
通过 scene addImage 方法
addImage()
参数:
- id 图片的id,
- url 图片的url
```javascript
scene.addImage(
'00',
'https://gw.alipayobjects.com/zos/basement_prod/604b5e7f-309e-40db-b95b-4fac746c5153.svg'
);
参数:
```
⚠️ 符号图的ID不能与点图层已有shape名称相同比如不能设置 circle
符号图需要把shape设置成图片的id同样符号图shape也支持数据映射
- id 图片的 id,
- url 图片的 url
```javascript
const scatter =
new PointLayer()
.source(data)
.shape('00')
.size(5)
.color('red')
.style({
opacity: 0.3,
strokeWidth: 1
})
scene.addImage(
'00',
'https://gw.alipayobjects.com/zos/basement_prod/604b5e7f-309e-40db-b95b-4fac746c5153.svg',
);
```
## 相关demo
⚠️ 符号图的 ID 不能与点图层已有 shape 名称相同,比如不能设置 circle
符号图需要把 shape 设置成图片的 id同样符号图 shape 也支持数据映射
```javascript
const scatter = new PointLayer()
.source(data)
.shape('00')
.size(5)
.color('red')
.style({
opacity: 0.3,
strokeWidth: 1,
});
```
## 相关 demo

View File

@ -2,44 +2,44 @@
title: 符号图
order: 4
---
在地理区域上放置不同图片作为符号,通常表示不同地理要素分布情况
## 使用
符号图 通过PointLayer对象实例化将shape设置成图片符号
符号图 通过 PointLayer 对象实例化,将 shape 设置成图片符号
### shape
通过scene addImage 方法
通过 scene addImage 方法
addImage()
参数:
- id 图片的id,
- url 图片的url
```javascript
scene.addImage(
'00',
'https://gw.alipayobjects.com/zos/basement_prod/604b5e7f-309e-40db-b95b-4fac746c5153.svg'
);
参数:
```
⚠️ 符号图的ID不能与点图层已有shape名称相同比如不能设置 circle
符号图需要把shape设置成图片的id同样符号图shape也支持数据映射
- id 图片的 id,
- url 图片的 url
```javascript
const scatter =
new PointLayer()
.source(data)
.shape('00')
.size(5)
.color('red')
.style({
opacity: 0.3,
strokeWidth: 1
})
scene.addImage(
'00',
'https://gw.alipayobjects.com/zos/basement_prod/604b5e7f-309e-40db-b95b-4fac746c5153.svg',
);
```
## 相关demo
⚠️ 符号图的 ID 不能与点图层已有 shape 名称相同,比如不能设置 circle
符号图需要把 shape 设置成图片的 id同样符号图 shape 也支持数据映射
```javascript
const scatter = new PointLayer()
.source(data)
.shape('00')
.size(5)
.color('red')
.style({
opacity: 0.3,
strokeWidth: 1,
});
```
## 相关 demo

View File

@ -2,6 +2,7 @@
title: Label
order: 4
---
为图层添加文本标注
## 使用
@ -14,29 +15,31 @@ order: 4
- shapeType 'text'
```javascript
layer.shape('name','text')
layer.shape('name', 'text');
```
### color
同layer
同 layer
### size
同layer
同 layer
### style
- opacity `number`
- textAnchor `string` 文本相对锚点的位置 center|left|right|top|bottom|top-left
- spacing: `number` 文本包围盒 padding [水平,垂直],影响碰撞检测结果,避免相邻文本靠的太近
- padding: `[number, number]` 文本相对锚点的偏移量 [x, y]
- opacity `number`
- textAnchor `string` 文本相对锚点的位置 center|left|right|top|bottom|top-left
- spacing: `number` 文本包围盒 padding [水平,垂直],影响碰撞检测结果,避免相邻文本靠的太近
- padding: `[number, number]` 文本相对锚点的偏移量 [x, y]
- stroke: `string`; 描边颜色
- strokeWidth `number` 描边宽度
- strokeOpacity `number` 描边透明度
- fontWeight `string` 字体粗细
- fontFamily `string` 字号
- textOffset `[number, number]` 文本偏移量
- textOffset `[number, number]` 文本偏移量
- textAllowOverlap: `boolean` 是否允许文字遮盖
## 相关demo
## 相关 demo
[文本标注](../../../../examples/point/text)

View File

@ -2,6 +2,7 @@
title: 文本标注
order: 4
---
为图层添加文本标注
## 使用
@ -14,43 +15,32 @@ order: 4
- shapeType 'text'
```javascript
layer.shape('name','text')
layer.shape('name', 'text');
```
### color
同layer
同 layer
### size
同layer
同 layer
### style
- opacity `number`
- textAnchor `string` 文本相对锚点的位置
`'right'
| 'top-right'
| 'left'
| 'bottom-right'
| 'left'
| 'top-left'
| 'bottom-left'
| 'bottom'
| 'bottom-right'
| 'bottom-left'
| 'top'
| 'top-right'
| 'top-left'
| 'center';`
- spacing: `number` 文本包围盒 padding [水平,垂直],影响碰撞检测结果,避免相邻文本靠的太近
- padding: `[number, number]` 文本相对锚点的偏移量 [x, y]
- opacity `number`
- textAnchor `string` 文本相对锚点的位置
`'right' | 'top-right' | 'left' | 'bottom-right' | 'left' | 'top-left' | 'bottom-left' | 'bottom' | 'bottom-right' | 'bottom-left' | 'top' | 'top-right' | 'top-left' | 'center';`
- spacing: `number` 文本包围盒 padding [水平,垂直],影响碰撞检测结果,避免相邻文本靠的太近
- padding: `[number, number]` 文本相对锚点的偏移量 [x, y]
- stroke: `string`; 描边颜色
- strokeWidth `number` 描边宽度
- strokeOpacity `number` 描边透明度
- fontWeight `string` 字体粗细
- fontFamily `string` 字号
- textOffset `[number, number]` 文本偏移量
- textOffset `[number, number]` 文本偏移量
- textAllowOverlap: `boolean` 是否允许文字遮盖
## 相关demo
## 相关 demo
[文本标注](../../../../examples/point/text)

View File

@ -2,13 +2,18 @@
title: 3D填充图
order: 1
---
## 使用
```javascript
import { PolygonLayer } from '@antv/l7'
import { PolygonLayer } from '@antv/l7';
const layer = new PolygonLayer();
```
### shape
3D Polygon 将多边形沿Z轴向上拉伸
3D Polygon 将多边形沿 Z 轴向上拉伸
- extrude 常量不支持数据映射
```javascript
@ -16,18 +21,22 @@ layer.shape('extrude');
```
### size
size代表拉伸的高度支持数据映射
size 代表拉伸的高度,支持数据映射
```javascript
layer.size(10);// 高度设置成常量
layer.size('floor', [0,2000]); // 根据floor字段进行数据映射默认为线
layer.size('floor', (floor) => { // 通过回调函数设置size
return floor * 2
})
layer.size(10); // 高度设置成常量
layer.size('floor', [0, 2000]); // 根据floor字段进行数据映射默认为线
layer.size('floor', (floor) => {
// 通过回调函数设置size
return floor * 2;
});
```
### color
同 [layer#color](../layer/#color)
### style
同 [layer#style](../layer/#style)
同 [layer#style](../layer/#style)

View File

@ -2,23 +2,30 @@
title: 填充图
order: 1
---
## 使用
```javascript
import { PolygonLayer } from '@antv/l7'
import { PolygonLayer } from '@antv/l7';
const layer = new PolygonLayer();
```
### shape
绘制填充图shape为```fill``` 常量不支持数据映射
绘制填充图shape 为`fill` 常量不支持数据映射
```javascript
layer.shape('fill');
```
### size
填充图无size不需要设置size
填充图无 size 不需要设置 size
### color
同 [layer#color](../layer/#color)
### style
同 [layer#style](../layer/#style)
同 [layer#style](../layer/#style)

View File

@ -2,13 +2,13 @@
title: PolygonLayer
order: 0
---
绘制 2D 多边形以及沿 Z 轴拉伸后的 3D 图形。
## 使用
```javascript
import { PolygonLayer } from '@antv/l7';
```
## shape

View File

@ -2,6 +2,7 @@
title: PolygonLayer
order: 0
---
绘制 2D 多边形以及沿 Z 轴拉伸后的 3D 图形。
## 使用
@ -19,11 +20,9 @@ import { PolygonLayer } from '@antv/l7';
- extrude 对填充图 3D 拉伸 不支持数据映射
```javascript
PolyonLayer.shape('fill');
PolyonLayer.shape('line').size(1); // size 表示线宽度
PolyonLayer.shape('extrude').size(10); // size 表示高度
```
其他方法,事件,同基类 [Layer](/zh/docs/api/layer/layer)

View File

@ -88,13 +88,26 @@ export default class DrawCircle extends DrawFeature {
lat: newStartPoint[1],
lng: newStartPoint[0],
};
const newEndPoint = movePoint(
[this.endPoint.lng, this.endPoint.lat],
delta,
);
const endPointObj = {
lat: newEndPoint[1],
lng: newEndPoint[0],
};
newFeature[0].properties = {
...newFeature[0].properties,
startPoint: this.startPoint,
endPoint: endPointObj,
pointFeatures: newPointFeture,
};
this.centerLayer.setData([this.startPoint]);
this.setCurrentFeature(newFeature[0]);
const changeFeature = {
...newFeature[0],
};
this.emit(DrawEvent.CHANGE, changeFeature);
}
protected createFeature(id: string = '0'): Feature {
@ -121,6 +134,7 @@ export default class DrawCircle extends DrawFeature {
this.drawVertexLayer.updateData(
featureCollection(properties.pointFeatures),
);
this.emit(DrawEvent.CHANGE, featureCollection([newFeature]).features[0]);
}
protected showOtherLayer() {

View File

@ -4,6 +4,7 @@ export enum DrawEvent {
Move = 'draw.move',
Edit = 'draw.edit',
UPDATE = 'draw.update',
CHANGE = 'draw.change',
SELECTION_CHANGE = 'draw.selectionchange',
MODE_CHANGE = 'draw.modechange',
ACTIONABLE = 'draw.actionable',

View File

@ -1,26 +1,28 @@
precision highp float;
// 多边形顶点坐标
attribute vec3 a_Position;
// 多边形经纬度坐标
attribute vec3 a_Pos;
attribute float a_Size;
attribute vec4 a_Color;
uniform vec2 u_radius;
uniform float u_coverage: 0.9;
uniform float u_angle: 0;
uniform mat4 u_ModelMatrix;
varying vec4 v_color;
#pragma include "projection"
#pragma include "picking"
void main() {
v_color = a_Color;
mat2 rotationMatrix = mat2(cos(u_angle), sin(u_angle), -sin(u_angle), cos(u_angle));
vec2 offset = a_Position.xy * u_radius * rotationMatrix * u_coverage ;
vec4 project_pos = project_position(vec4(a_Pos.xy + offset, 0, 1.0));
gl_Position = project_common_position_to_clipspace(project_pos);
setPickingColor(a_PickingColor);
}
precision highp float;
// 多边形顶点坐标
attribute vec3 a_Position;
// 多边形经纬度坐标
attribute vec3 a_Pos;
attribute float a_Size;
attribute vec4 a_Color;
uniform vec2 u_radius;
uniform float u_coverage: 0.9;
uniform float u_angle: 0;
uniform mat4 u_ModelMatrix;
varying vec4 v_color;
#pragma include "projection"
#pragma include "project"
#pragma include "picking"
void main() {
v_color = a_Color;
mat2 rotationMatrix = mat2(cos(u_angle), sin(u_angle), -sin(u_angle), cos(u_angle));
vec2 offset = a_Position.xy * u_radius * rotationMatrix * u_coverage ;
vec2 lnglat = unProjectFlat(a_Pos.xy + offset);
vec4 project_pos = project_position(vec4(lnglat, 0, 1.0));
gl_Position = project_common_position_to_clipspace(project_pos);
setPickingColor(a_PickingColor);
}

View File

@ -2,7 +2,7 @@
*
*/
import { IParserData, ITransform } from '@antv/l7-core';
import { Satistics } from '@antv/l7-utils';
import { aProjectFlat, Satistics } from '@antv/l7-utils';
interface IGridHash {
[key: string]: any;
@ -16,12 +16,13 @@ const R_EARTH = 6378000;
export function aggregatorToGrid(data: IParserData, option: ITransform) {
const dataArray = data.dataArray;
const { size = 10 } = option;
const pixlSize = ((size / (2 * Math.PI * R_EARTH)) * (256 << 20)) / 2;
const { gridHash, gridOffset } = _pointsGridHash(dataArray, size);
const layerData = _getGridLayerDataFromGridHash(gridHash, gridOffset, option);
return {
yOffset: gridOffset.yOffset / 2,
xOffset: gridOffset.xOffset / 2,
radius: gridOffset.xOffset,
yOffset: pixlSize,
xOffset: pixlSize,
radius: pixlSize,
type: 'grid',
dataArray: layerData,
};
@ -40,7 +41,6 @@ function _pointsGridHash(dataArray: any[], size: number) {
}
}
const centerLat = (latMin + latMax) / 2;
// const centerLat = 34.54083;
const gridOffset = _calculateGridLatLonOffset(size, centerLat);
if (gridOffset.xOffset <= 0 || gridOffset.yOffset <= 0) {
return { gridHash: {}, gridOffset };
@ -95,10 +95,10 @@ function _getGridLayerDataFromGridHash(
}
Object.assign(item, {
_id: i,
coordinates: [
coordinates: aProjectFlat([
-180 + gridOffset.xOffset * (lonIdx + 0.5),
-90 + gridOffset.yOffset * (latIdx + 0.5),
],
]),
rawData: gridHash[key].points,
count: gridHash[key].count,
});

View File

@ -48,6 +48,7 @@ storiesOf('图层', module)
.add('热力图3D', () => <HeatMapDemo3D />)
.add('热力图2', () => <HeatMap3D_2 />)
.add('网格热力图', () => <HexagonLayerDemo />)
.add('网格热力图2', () => <GridTest />)
.add('栅格', () => <RasterLayerDemo />)
.add('图片', () => <ImageLayerDemo />)
.add('网格测试', () => <GridTest />)

View File

@ -14,48 +14,53 @@ export default class HexagonLayerDemo extends React.Component {
}
}
public async componentDidMount() {
const testPoint: [number, number] = [113.868222, 22.506306];
const scene = new Scene({
id: 'map',
map: new GaodeMap({
center: testPoint,
pitch: 0,
zoom: 17,
token: '8e2254ff173dbf7ff5029e9c9df20bc3',
pitch: 56.499,
center: [114.07737552216226, 22.542656745583486],
rotation: 39.19,
zoom: 12.47985,
}),
});
scene.on('loaded', () => {
// 网格热力图
const testList = [{ lng: testPoint[0], lat: testPoint[1], lev: 1 }];
const layer = new HeatmapLayer({})
.source(testList, {
parser: {
type: 'json',
x: 'lng',
y: 'lat',
},
transforms: [
{
type: 'grid',
size: 100,
field: 'lev',
method: 'sum',
},
],
})
.shape('circle')
.style({
coverage: 1,
})
.color('count', ['#0B0030', '#6BD5A0'].reverse());
scene.addLayer(layer);
// marker
// @ts-ignore
const marker = new Marker().setLnglat(testPoint);
scene.addMarker(marker);
fetch(
'https://gw.alipayobjects.com/os/basement_prod/513add53-dcb2-4295-8860-9e7aa5236699.json',
)
.then((res) => res.json())
.then((data) => {
const layer = new HeatmapLayer({})
.source(data, {
transforms: [
{
type: 'grid',
size: 200,
field: 'h12',
method: 'sum',
},
],
})
.size('sum', [0, 600])
.shape('squareColumn')
.style({
coverage: 1,
angle: 0,
opacity: 1.0,
})
.color(
'sum',
[
'rgba(0,18,255,1)',
'rgba(0,144,255,0.9)',
'rgba(0,222,254,0.8)',
'rgba(22,226,159,0.6)',
].reverse(),
);
scene.addLayer(layer);
});
});
}

View File

@ -65,11 +65,10 @@ export default class HexagonLayerDemo extends React.Component {
].reverse(),
)
.style({
coverage: 0.9,
coverage: 1,
angle: 0,
});
scene.addLayer(pointLayer);
console.log(pointLayer.getSource());
this.scene = scene;
});
});

View File

@ -3,5 +3,4 @@ import * as React from 'react';
import Map from './components/Map';
// @ts-ignore
storiesOf('自定义地图', module)
.add('地图', () => <Map />)
storiesOf('自定义地图', module).add('地图', () => <Map />);