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,9 +11,10 @@ order: 1
```javascript
import { HeatMapLayer } from '@antv/l7';
```
````
## source
网格数据只支持点数据作为数据源,数据格式支持 csv、json、geojson.
#### 设置网格聚合参数
@ -26,24 +27,23 @@ import { HeatMapLayer } from '@antv/l7';
- method 聚合方法  count,max,min,sum,mean 5 个统计维度
```javascript
layer.source(data, {
parser: {
type: 'csv',
x: 'lng',
y: 'lat'
y: 'lat',
},
transforms: [
{
type: 'grid',
size: 15000,
field: 'v',
method:'sum'
}
]
method: 'sum',
},
],
});
```
## shape
网格热力图虽然是以标准四边形网格进行数据聚合,但是展示效果上可以设置为其形状,形状只支持常量
@ -56,9 +56,7 @@ layer.source(data, {
- hexagon
```javascript
layer.shape('circle');
```
### 3d
@ -70,7 +68,6 @@ layer.shape('circle');
```javascript
layer.shape('cylinder');
```
## size
@ -86,9 +83,9 @@ layer.shape('cylinder');
```javascript
layer.size(10); // 常量
layer.size('value', [10, 50]); // 根据value 字段映射大小
layer.size('value', (value)=>{}) // 回调函数设置高度
layer.size('value', (value) => {}); // 回调函数设置高度
```
### color
同 layer [color 方法](../layer/#color)
@ -100,13 +97,11 @@ layer.size('value', (value)=>{}) // 回调函数设置高度
- opacity 透明度 0 - 1.0
```javascript
layer.style({
coverage: 0.9,
angle: 0,
opacity: 1.0
opacity: 1.0,
});
```
## 完整实例代码
@ -117,25 +112,23 @@ const layer = new HeatmapLayer({})
parser: {
type: 'csv',
x: 'lng',
y: 'lat'
y: 'lat',
},
transforms: [
{
type: 'grid',
size: 20000,
field: 'v',
method: 'sum'
}
]
method: 'sum',
},
],
})
.shape('square')
.style({
coverage: 1,
angle: 0
angle: 0,
})
.color(
'count',
[
.color('count', [
'#0B0030',
'#100243',
'#100243',
@ -149,13 +142,8 @@ const layer = new HeatmapLayer({})
'#30C7C4',
'#6BD5A0',
'#A7ECB2',
'#D0F4CA'
]
);
'#D0F4CA',
]);
scene.addLayer(layer);
```

View File

@ -6,12 +6,13 @@ order: 1
将一组点数据按照等大小的正方形网格进行聚合,一个正方形网格代表网格内所有点的统计值。方格热力图特点以方格网布局。
## 使用
```javascript
import { HeatMapLayer } from '@antv/l7';
```
## source
网格数据只支持点数据作为数据源,数据格式支持 csv、json、geojson.
#### 设置网格聚合参数
@ -24,24 +25,23 @@ import { HeatMapLayer } from '@antv/l7';
- method 聚合方法  count,max,min,sum,mean 5 个统计维度
```javascript
layer.source(data, {
parser: {
type: 'csv',
x: 'lng',
y: 'lat'
y: 'lat',
},
transforms: [
{
type: 'grid',
size: 15000,
field: 'v',
method:'sum'
}
]
})
method: 'sum',
},
],
});
```
## shape
网格热力图虽然是以标准四边形网格进行数据聚合,但是展示效果上可以设置为其形状,形状只支持常量
@ -55,7 +55,6 @@ layer.source(data, {
```javascript
layer.shape('circle');
```
### 3d
@ -67,7 +66,6 @@ layer.shape('circle');
```javascript
layer.shape('cylinder');
```
## size
@ -83,9 +81,9 @@ layer.shape('cylinder');
```javascript
layer.size(10); // 常量
layer.size('value', [10, 50]); // 根据value 字段映射大小
layer.size('value', (value)=>{}) // 回调函数设置高度
layer.size('value', (value) => {}); // 回调函数设置高度
```
## color
同 layer color 方法
@ -97,14 +95,13 @@ layer.size('value', (value)=>{}) // 回调函数设置高度
- opacity 透明度 0 - 1.0
```javascript
layer.style({
coverage: 0.9,
angle: 0,
opacity: 1.0
})
opacity: 1.0,
});
```
## 完整实例代码
```javascript
@ -113,25 +110,23 @@ const layer = new HeatmapLayer({})
parser: {
type: 'csv',
x: 'lng',
y: 'lat'
y: 'lat',
},
transforms: [
{
type: 'grid',
size: 20000,
field: 'v',
method: 'sum'
}
]
method: 'sum',
},
],
})
.shape('square')
.style({
coverage: 1,
angle: 0
angle: 0,
})
.color(
'count',
[
.color('count', [
'#0B0030',
'#100243',
'#100243',
@ -145,10 +140,8 @@ const layer = new HeatmapLayer({})
'#30C7C4',
'#6BD5A0',
'#A7ECB2',
'#D0F4CA'
]
);
'#D0F4CA',
]);
scene.addLayer(layer);
```

View File

@ -2,13 +2,17 @@
title: Hexagon HeatMap
order: 1
---
将一组点数据按照等大小的六边形网格进行聚合,一个六边形网格代表网格内所有点的统计值。蜂窝热力图特点以六边形热力图网格布局
## 使用
```javascript
import { HeatMapLayer } from '@antv/l7';
```
## source
网格数据只支持点数据作为数据源,数据格式支持 csv、json、geojson.
#### 设置网格聚合参数
@ -21,24 +25,23 @@ import { HeatMapLayer } from '@antv/l7';
- method 聚合方法  count,max,min,sum,mean 5 个统计维度
```javascript
layer.source(data, {
parser: {
type: 'csv',
x: 'lng',
y: 'lat'
y: 'lat',
},
transforms: [
{
type: 'hexagon',
size: 15000,
field: 'v',
method:'sum'
}
]
})
method: 'sum',
},
],
});
```
## shape
网格热力图虽然是以标准四边形网格进行数据聚合,但是展示效果上可以设置为其形状,形状只支持常量
@ -52,7 +55,6 @@ layer.source(data, {
```javascript
layer.shape('circle');
```
### 3d
@ -64,7 +66,6 @@ layer.shape('circle');
```javascript
layer.shape('cylinder');
```
## size
@ -80,9 +81,9 @@ layer.shape('cylinder');
```javascript
layer.size(10); // 常量
layer.size('value', [10, 50]); // 根据value 字段映射大小
layer.size('value', (value)=>{}) // 回调函数设置高度
layer.size('value', (value) => {}); // 回调函数设置高度
```
## color
同 layer color 方法
@ -94,20 +95,17 @@ layer.size('value', (value)=>{}) // 回调函数设置高度
- opacity 透明度 0 - 1.0
```javascript
layer.style({
coverage: 0.9,
angle: 0,
opacity: 1.0
opacity: 1.0,
});
```
### 完整代码
```javascript
const layer =
new HeatmapLayer({
const layer = new HeatmapLayer({
zIndex: 2,
})
.souce(data, {
@ -131,5 +129,3 @@ const layer =
coverage: 0.8,
});
```

View File

@ -9,7 +9,6 @@ order: 1
```javascript
import { HeatMapLayer } from '@antv/l7';
```
## source
@ -26,24 +25,23 @@ import { HeatMapLayer } from '@antv/l7';
- method 聚合方法 count,max,min,sum,mean 5 个统计维度
```javascript
layer.source(data, {
parser: {
type: 'csv',
x: 'lng',
y: 'lat'
y: 'lat',
},
transforms: [
{
type: 'hexagon',
size: 15000,
field: 'v',
method:'sum'
}
]
})
method: 'sum',
},
],
});
```
## shape
网格热力图虽然是以标准四边形网格进行数据聚合,但是展示效果上可以设置为其形状,形状只支持常量
@ -57,7 +55,6 @@ layer.source(data, {
```javascript
layer.shape('circle');
```
### 3d
@ -69,7 +66,6 @@ layer.shape('circle');
```javascript
layer.shape('cylinder');
```
## size
@ -85,9 +81,9 @@ layer.shape('cylinder');
```javascript
layer.size(10); // 常量
layer.size('value', [10, 50]); // 根据value 字段映射大小
layer.size('value', (value)=>{}) // 回调函数设置高度
layer.size('value', (value) => {}); // 回调函数设置高度
```
## color
同 layer color 方法
@ -102,15 +98,14 @@ layer.size('value', (value)=>{}) // 回调函数设置高度
layer.style({
coverage: 0.9,
angle: 0,
opacity: 1.0
opacity: 1.0,
});
```
### 完整代码
```javascript
const layer =
new HeatmapLayer({
const layer = new HeatmapLayer({
zIndex: 2,
})
.souce(data, {
@ -134,5 +129,3 @@ const layer =
coverage: 0.8,
});
```

View File

@ -7,10 +7,10 @@ order: 1
```javascript
import { HeatMapLayer } from '@antv/l7';
```
## shape
常量 heatmap
```javascript
@ -23,10 +23,9 @@ layer.shape('heatmap');
- values: 数据映射区间 热力图显示 [0, 1] 效果最佳
```javascript
layer.size('weight', [0,1])
layer.size('weight', [0, 1]);
```
## color
heatmap 需要设置 color 方法,样式通过 style 设置
@ -36,6 +35,7 @@ layer.size('weight', [0,1])
- intensity    全局热力权重     推荐权重范围 1-5
- radius   热力半径,单位像素
- rampColors 色带参数
- colors  颜色数组
- positions 数据区间
@ -44,7 +44,6 @@ layer.size('weight', [0,1])
## 完整代码
```javascript
heatmapLayer({
zIndex: 2,
})
@ -65,5 +64,4 @@ heatmapLayer({
positions: [0, 0.2, 0.4, 0.6, 0.8, 1.0],
},
});
```

View File

@ -7,10 +7,10 @@ order: 1
```javascript
import { HeatMapLayer } from '@antv/l7';
```
## shape
常量 heatmap
```javascript
@ -23,10 +23,9 @@ layer.shape('heatmap');
- values: 数据映射区间 热力图显示 [0, 1] 效果最佳
```javascript
layer.size('weight', [0,1])
layer.size('weight', [0, 1]);
```
## color
heatmap 需要设置 color 方法,样式通过 style 设置
@ -36,6 +35,7 @@ layer.size('weight', [0,1])
- intensity    全局热力权重     推荐权重范围 1-5
- radius   热力半径,单位像素
- rampColors 色带参数
- colors  颜色数组
- positions 数据区间
@ -44,7 +44,6 @@ layer.size('weight', [0,1])
## 完整代码
```javascript
heatmapLayer()
.source(data)
.size('mag', [0, 1]) // weight映射通道
@ -63,5 +62,4 @@ heatmapLayer()
positions: [0, 0.2, 0.4, 0.6, 0.8, 1.0],
},
});
```

View File

@ -2,11 +2,13 @@
title: ArcLayer
order: 1
---
将两个点的连线绘制成弧形,绘制的弧线可以是贝塞尔曲线,大圆航线,通常用来表示两种地理事物关系和联系,或者人口迁移,物流起点目的地等
## 使用
### 数据
绘制弧线只需提供起止点坐标即可
```javascript
@ -16,9 +18,9 @@ order: 1
x: 'lng1',
y: 'lat1',
x1: 'lng2',
y1: 'lat2'
}
})
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,18 +50,17 @@ layer.animate(false)
layer.animate({
duration: 4,
interval: 0.2,
trailLength: 0.1
})
trailLength: 0.1,
});
```
##### 参数动画介绍
L7 目前动画参数为相对单位,我们默认一条线段的长度为 1
![L7 动画参数](https://gw.alipayobjects.com/mdn/rms_855bab/afts/img/A*IBBfSIkb51cAAAAAAAAAAABkARQnAQ)
如果 interval = 0.2,则一条轨迹将会分成 5 段,如果 interval = 0.5 则为两段。
### 示例代码
```javascript
@ -72,8 +71,8 @@ const layer = new LineLayer({})
x: 'lng1',
y: 'lat1',
x1: 'lng2',
y1: 'lat2'
}
y1: 'lat2',
},
})
.size(1)
.shape('arc')

View File

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

View File

@ -2,32 +2,37 @@
title: Path
order: 1
---
用一组首尾不闭合的点坐标对来定位的线图层,通常用来表示轨迹,线路,道路等
## 使用
### shape
shape 设置成 line 即可绘制路线图
- line
### size
路径图线的 size 支持两个维度
- width 宽度
- height 高度
```javascript
layer.size([2,10]) // 绘制宽度为2高度为10的路径
layer.size([2, 10]); // 绘制宽度为2高度为10的路径
layer.size('height',[])
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 动画参数](https://gw.alipayobjects.com/mdn/rms_855bab/afts/img/A*IBBfSIkb51cAAAAAAAAAAABkARQnAQ)
如果 interval = 0.2,则一条轨迹将会分成 5 段,如果 interval = 0.5 则为两段。

View File

@ -2,32 +2,37 @@
title: 路径图
order: 1
---
用一组首尾不闭合的点坐标对来定位的线图层,通常用来表示轨迹,线路,道路等
## 使用
### shape
shape 设置成 line 即可绘制路线图
- line
### size
路径图线的 size 支持两个维度
- width 宽度
- height 高度
```javascript
layer.size([2,10]) // 绘制宽度为2高度为10的路径
layer.size([2, 10]); // 绘制宽度为2高度为10的路径
layer.size('height',[])
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 动画参数](https://gw.alipayobjects.com/mdn/rms_855bab/afts/img/A*IBBfSIkb51cAAAAAAAAAAABkARQnAQ)
如果 interval = 0.2,则一条轨迹将会分成 5 段,如果 interval = 0.5 则为两段。

View File

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

View File

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

View File

@ -2,6 +2,7 @@
title: Chart Map
order: 6
---
使用二维统计图表代替点状符号的一种特殊复合形式,复合图表地图中常用扩展图形还有柱状图、曲线图、玫瑰图等
通过自定义 Marker 实现自定义图表

View File

@ -2,6 +2,7 @@
title: 复合图表地图
order: 6
---
使用二维统计图表代替点状符号的一种特殊复合形式,复合图表地图中常用扩展图形还有柱状图、曲线图、玫瑰图等
通过自定义 Marker 实现自定义图表

View File

@ -2,6 +2,7 @@
title: Cluster Map
order: 5
---
## 使用
目前只有点数据支持聚类方法
@ -9,9 +10,11 @@ order: 5
数据聚合主要从数据层数据,因此需要在 Source 方法配置 cluster 参数
### Source
[source 文档](../../source/source)
### 配置项
- cluster **boolean** 是否聚合
- clusterOption 聚合配置项
- radius 聚合半径 **number** default 40
@ -34,11 +37,7 @@ order: 5
- id 聚合数据 id
```javascript
layer.source(pointsData, {
cluster: true,
});
@ -48,11 +47,10 @@ layer.source(pointsData, {
cluster: true,
clusterOption: {
radius: 40,
}
},
});
```
### 完整示例
```javascript

View File

@ -10,9 +10,11 @@ order: 5
数据聚合主要从数据层数据,因此需要在 Source 方法配置 cluster 参数
### Source
[source 文档](../../source/source)
### 配置项
- cluster **boolean** 是否聚合
- clusterOption 聚合配置项
- radius 聚合半径 **number** default 40
@ -35,10 +37,7 @@ order: 5
- id 聚合数据 id
```javascript
layer.source(pointsData, {
cluster: true,
});
@ -48,18 +47,17 @@ layer.source(pointsData, {
cluster: true,
clusterOption: {
radius: 40,
}
},
});
```
### 方法
获取聚合节点的原始数据,通过 Source 的 getClustersLeaves 方法
```javascript
const source = layer.getSource();
source.getClustersLeaves(id)
source.getClustersLeaves(id);
layer.on('click', (e) => {
console.log(source.getClustersLeaves(e.feature.cluster_id));
});
@ -84,13 +82,11 @@ const pointLayer = new PointLayer({})
strokeWidth: 1,
});
```
[聚合图使用案例](../../../examples/point/cluster)
### FAQ
PointLayer 的聚合图采用 WebGL 绘制,不支持自定义具体聚合样式,如果有自定义的需求可以使用 MarkerLayer 的聚合功能,你可以通过 Dom 完全自定义样式。
[MarkerLayer 聚合](../../component/markerLayer)

View File

@ -2,11 +2,13 @@
title: 3D Column
order: 5
---
3D 柱图地理区域上方会显示不同高度的柱体,主题的高度与其在数据集中的数值会成正比。
## 使用
3D 柱图通过 PointLayer 对象实例化,将 shape 设置成不同的 3Dshape
### shape
3D Shape 支持
@ -19,6 +21,7 @@ order: 5
### size
3D 柱图 size 需要设置三个维度 [w, l, z]
- w 宽
- l 长
- z 高度
@ -28,6 +31,7 @@ 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'
'squareColumn',
])
.size('unit_price', h => {
.size('unit_price', (h) => {
return [6, 6, h / 500];
})
.color('name', ['#5B8FF9', '#70E3B5', '#FFD458', '#FF7C6A'])
.style({
opacity: 1.0
opacity: 1.0,
});
```

View File

@ -2,11 +2,13 @@
title: 3D 柱图
order: 5
---
3D 柱图地理区域上方会显示不同高度的柱体,主题的高度与其在数据集中的数值会成正比。
## 使用
3D 柱图通过 PointLayer 对象实例化,将 shape 设置成不同的 3Dshape
### shape
3D Shape 支持
@ -19,6 +21,7 @@ order: 5
### size
3D 柱图 size 需要设置三个维度 [w, l, z]
- w 宽
- l 长
- z 高度
@ -28,6 +31,7 @@ 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'
'squareColumn',
])
.size('unit_price', h => {
.size('unit_price', (h) => {
return [6, 6, h / 500];
})
.color('name', ['#5B8FF9', '#70E3B5', '#FFD458', '#FF7C6A'])
.style({
opacity: 1.0
opacity: 1.0,
});
```

View File

@ -2,11 +2,13 @@
title: Dot Density
order: 3
---
亮度图又称点密度图,单位面积的内点的个数越多,亮度会越亮,亮度图一般用来表达海量点数据分布情况
## 使用
### shape
- dot 如果需要使用亮度图可以将 shape 设置为 dot,或者不设置 shape
### color
@ -16,9 +18,7 @@ order: 3
- 有权重
如果数据有权重可以设置一组同一色相,不同亮度的色带,值越大亮度会越亮。
```javascript
const pointLayer = new PointLayer()
.source(data)
.size(2)
@ -33,10 +33,10 @@ const pointLayer = new PointLayer()
'#83CED6',
'#A6E1E0',
'#B8EFE2',
'#D7F9F0'
'#D7F9F0',
])
.style({
opacity: 1
opacity: 1,
});
scene.addLayer(pointLayer);

View File

@ -2,11 +2,13 @@
title: 亮度图
order: 3
---
亮度图又称点密度图,单位面积的内点的个数越多,亮度会越亮,亮度图一般用来表达海量点数据分布情况
## 使用
### shape
- dot 如果需要使用亮度图可以将 shape 设置为 dot,或者不设置 shape
### color
@ -16,9 +18,7 @@ order: 3
- 有权重
如果数据有权重可以设置一组同一色相,不同亮度的色带,值越大亮度会越亮。
```javascript
const pointLayer = new PointLayer()
.source(data)
.size(2)
@ -33,10 +33,10 @@ const pointLayer = new PointLayer()
'#83CED6',
'#A6E1E0',
'#B8EFE2',
'#D7F9F0'
'#D7F9F0',
])
.style({
opacity: 1
opacity: 1,
});
scene.addLayer(pointLayer);

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -2,6 +2,7 @@
title: Label
order: 4
---
为图层添加文本标注
## 使用
@ -14,14 +15,15 @@ order: 4
- shapeType 'text'
```javascript
layer.shape('name','text')
layer.shape('name', 'text');
```
### color
同 layer
### size
同 layer
### style
@ -39,4 +41,5 @@ layer.shape('name','text')
- textAllowOverlap: `boolean` 是否允许文字遮盖
## 相关 demo
[文本标注](../../../../examples/point/text)

View File

@ -2,6 +2,7 @@
title: 文本标注
order: 4
---
为图层添加文本标注
## 使用
@ -14,34 +15,22 @@ order: 4
- shapeType 'text'
```javascript
layer.shape('name','text')
layer.shape('name', 'text');
```
### color
同 layer
### size
同 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';`
`'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`; 描边颜色
@ -53,4 +42,5 @@ layer.shape('name','text')
- textAllowOverlap: `boolean` 是否允许文字遮盖
## 相关 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 轴向上拉伸
- extrude 常量不支持数据映射
```javascript
@ -16,18 +21,22 @@ layer.shape('extrude');
```
### size
size 代表拉伸的高度,支持数据映射
```javascript
layer.size(10); // 高度设置成常量
layer.size('floor', [0, 2000]); // 根据floor字段进行数据映射默认为线
layer.size('floor', (floor) => { // 通过回调函数设置size
return floor * 2
})
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
### 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

@ -12,6 +12,7 @@ uniform mat4 u_ModelMatrix;
varying vec4 v_color;
#pragma include "projection"
#pragma include "project"
#pragma include "picking"
void main() {
@ -19,7 +20,8 @@ void main() {
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));
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 }];
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(testList, {
parser: {
type: 'json',
x: 'lng',
y: 'lat',
},
.source(data, {
transforms: [
{
type: 'grid',
size: 100,
field: 'lev',
size: 200,
field: 'h12',
method: 'sum',
},
],
})
.shape('circle')
.size('sum', [0, 600])
.shape('squareColumn')
.style({
coverage: 1,
angle: 0,
opacity: 1.0,
})
.color('count', ['#0B0030', '#6BD5A0'].reverse());
.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);
// marker
// @ts-ignore
const marker = new Marker().setLnglat(testPoint);
scene.addMarker(marker);
});
});
}

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 />);