mirror of https://gitee.com/antv-l7/antv-l7
106 lines
2.6 KiB
Markdown
106 lines
2.6 KiB
Markdown
|
---
|
|||
|
title: 填充图
|
|||
|
order: 0
|
|||
|
---
|
|||
|
<embed src="@/docs/common/style.md"></embed>
|
|||
|
|
|||
|
几何体图层在地图上最简单的表现就是填充图,即使用指定的颜色填充指定区域。
|
|||
|
|
|||
|
<div>
|
|||
|
<div style="width:60%;float:left; margin: 10px;">
|
|||
|
<img width="80%" alt="案例" src='https://gw.alipayobjects.com/mdn/rms_816329/afts/img/A*4Kp4Qp00kq4AAAAAAAAAAAAAARQnAQ'>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
|
|||
|
### 实现
|
|||
|
|
|||
|
下面我们来介绍如何绘制一个简单的填充图。
|
|||
|
|
|||
|
- 你可以在 `L7` 官网上找到[在线案例](/examples/polygon/fill#usa)
|
|||
|
|
|||
|
```javascript
|
|||
|
import { Scene, PolygonLayer, LineLayer, Popup } from '@antv/l7';
|
|||
|
import { GaodeMap } from '@antv/l7-maps';
|
|||
|
|
|||
|
const scene = new Scene({
|
|||
|
id: 'map',
|
|||
|
map: new GaodeMap({
|
|||
|
style: 'light',
|
|||
|
center: [ -96, 37.8 ],
|
|||
|
zoom: 3
|
|||
|
})
|
|||
|
});
|
|||
|
scene.on('loaded', () => {
|
|||
|
fetch(
|
|||
|
'https://gw.alipayobjects.com/os/basement_prod/d36ad90e-3902-4742-b8a2-d93f7e5dafa2.json'
|
|||
|
)
|
|||
|
.then(res => res.json())
|
|||
|
.then(data => {
|
|||
|
const color = [ 'rgb(255,255,217)', 'rgb(237,248,177)', 'rgb(199,233,180)', 'rgb(127,205,187)', 'rgb(65,182,196)', 'rgb(29,145,192)', 'rgb(34,94,168)', 'rgb(12,44,132)' ];
|
|||
|
const layer = new PolygonLayer({})
|
|||
|
.source(data)
|
|||
|
.scale('density', {
|
|||
|
type: 'quantile'
|
|||
|
})
|
|||
|
.color(
|
|||
|
'density', color
|
|||
|
)
|
|||
|
.shape('fill')
|
|||
|
.active(true);
|
|||
|
const layer2 = new LineLayer({
|
|||
|
zIndex: 2
|
|||
|
})
|
|||
|
.source(data)
|
|||
|
.color('#fff')
|
|||
|
.active(true)
|
|||
|
.size(1)
|
|||
|
.style({
|
|||
|
lineType: 'dash',
|
|||
|
dashArray: [ 2, 2 ],
|
|||
|
});
|
|||
|
scene.addLayer(layer);
|
|||
|
scene.addLayer(layer2);
|
|||
|
});
|
|||
|
});
|
|||
|
|
|||
|
```
|
|||
|
|
|||
|
### source
|
|||
|
|
|||
|
几何体图层推荐使用标准的 `GeoJSON` 数据。
|
|||
|
|
|||
|
### shape
|
|||
|
|
|||
|
绘制填充图,shape 为 `fill` 常量,不支持数据映射
|
|||
|
|
|||
|
```javascript
|
|||
|
layer.shape('fill');
|
|||
|
```
|
|||
|
|
|||
|
### size
|
|||
|
|
|||
|
填充图不需要设置 `size`;
|
|||
|
|
|||
|
### style
|
|||
|
|
|||
|
- `opacityLinear` 设置几何填充图的径向渐变。
|
|||
|
|
|||
|
```javascript
|
|||
|
style({
|
|||
|
opacityLinear: {
|
|||
|
enable: true, // true - false
|
|||
|
dir: 'in', // in - out
|
|||
|
},
|
|||
|
});
|
|||
|
```
|
|||
|
|
|||
|
[径向渐变 in](/examples/polygon/fill#china_linear_in)
|
|||
|
|
|||
|
<img width="60%" style="display: block;margin: 0 auto;" alt="面图层填充图" src="https://gw.alipayobjects.com/mdn/rms_816329/afts/img/A*XjT5T4cT_CYAAAAAAAAAAAAAARQnAQ">
|
|||
|
|
|||
|
[径向渐变 out](/examples/polygon/fill#china_linear_out)
|
|||
|
|
|||
|
<img width="60%" style="display: block;margin: 0 auto;" alt="面图层填充图" src="https://gw.alipayobjects.com/mdn/rms_816329/afts/img/A*Ob62Q7JDpZ4AAAAAAAAAAAAAARQnAQ">
|
|||
|
|
|||
|
- `raisingHeight` 设置 `3D` 填充图的抬升高度。
|