2020-04-07 20:18:43 +08:00
|
|
|
|
---
|
2020-04-18 10:51:09 +08:00
|
|
|
|
title: Draw Component
|
2020-04-27 10:57:25 +08:00
|
|
|
|
order: 3
|
2020-04-07 20:18:43 +08:00
|
|
|
|
---
|
2020-04-08 14:06:02 +08:00
|
|
|
|
|
|
|
|
|
地图绘制组件,支持点、线、面, 圆、矩形、的绘制编辑。
|
|
|
|
|
|
|
|
|
|
# 使用
|
|
|
|
|
|
|
|
|
|
**using modules**
|
|
|
|
|
|
|
|
|
|
```javascript
|
|
|
|
|
import { DrawControl } from '@antv/l7-draw';
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
**CDN 版本引用**
|
|
|
|
|
|
|
|
|
|
```html
|
|
|
|
|
<head>
|
|
|
|
|
<! --引入最新版的L7-Draw -->
|
|
|
|
|
<script src="https://unpkg.com/@antv/l7-draw"></script>
|
|
|
|
|
</head>
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 参数
|
|
|
|
|
|
|
|
|
|
```javascript
|
|
|
|
|
const control = new DrawControl(scene, option);
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### scene
|
|
|
|
|
|
|
|
|
|
scene 对象
|
|
|
|
|
|
|
|
|
|
#### options
|
|
|
|
|
|
|
|
|
|
control 配置项
|
|
|
|
|
|
|
|
|
|
| name | Type | Default | Description |
|
|
|
|
|
| -------- | --------------------------------------------- | ---------- | ------------------------------- |
|
|
|
|
|
| position | `bottomright、topright、 bottomleft’ topleft` | `topright` | 组件位置 |
|
|
|
|
|
| layout | `horizontal、 vertical` | `vertical` | 组件布局 支持水平和垂直两种布局 |
|
2020-04-09 20:54:39 +08:00
|
|
|
|
| controls | `controlOptions` | | 设置 UI 组件添加哪些绘制工具 |
|
2020-04-08 14:06:02 +08:00
|
|
|
|
| style | | | 地图绘制样式 |
|
|
|
|
|
|
2020-04-09 20:54:39 +08:00
|
|
|
|
**controlOptions**
|
|
|
|
|
UI 组件配置项
|
|
|
|
|
|
|
|
|
|
- point `boolean | drawOption` 绘制点工具配置
|
|
|
|
|
- line `boolean | drawOption` 绘制线工具配置
|
|
|
|
|
- polygon `boolean | drawOption` 绘制面工具配置
|
|
|
|
|
- circle `boolean | drawOption` 绘制圆工具配置
|
|
|
|
|
- rect `boolean | drawOption` 绘制矩形工具配置
|
|
|
|
|
- delete `boolean | drawOption` 添加删除工具
|
|
|
|
|
|
|
|
|
|
默认配置
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
{
|
|
|
|
|
point: true,
|
|
|
|
|
line: true,
|
|
|
|
|
polygon: true,
|
|
|
|
|
rect: true,
|
|
|
|
|
circle: true,
|
|
|
|
|
delete: true
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
示例
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
{
|
|
|
|
|
point: false,
|
|
|
|
|
line: {
|
|
|
|
|
editEnable: false,
|
|
|
|
|
},
|
|
|
|
|
polygon: true,
|
|
|
|
|
rect: true,
|
|
|
|
|
circle: true,
|
|
|
|
|
delete: false
|
|
|
|
|
```
|
|
|
|
|
|
2020-04-08 14:06:02 +08:00
|
|
|
|
### 添加到地图
|
|
|
|
|
|
|
|
|
|
```javascript
|
|
|
|
|
scene.addControl(control);
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 从地图中移除
|
|
|
|
|
|
|
|
|
|
```javascript
|
|
|
|
|
scene.removeControl(control);
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Draw Type
|
|
|
|
|
|
|
|
|
|
可以不依赖 Draw UI 组件,独立的使用每一个 Draw
|
|
|
|
|
|
|
|
|
|
#### DrawCircle
|
|
|
|
|
|
|
|
|
|
绘制圆形
|
|
|
|
|
|
|
|
|
|
```javascript
|
|
|
|
|
import { DrawCircle } from '@antv/l7-draw';
|
|
|
|
|
const drawCircle = new DrawCircle(scene);
|
|
|
|
|
drawCircle.enable();
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### DrawRect
|
|
|
|
|
|
|
|
|
|
绘制四边形
|
|
|
|
|
|
|
|
|
|
```javascript
|
|
|
|
|
import { DrawRect } from '@antv/l7-draw';
|
|
|
|
|
const drawRect = new DrawRect(scene);
|
|
|
|
|
drawRect.enable();
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### DrawLine
|
|
|
|
|
|
|
|
|
|
绘制路径
|
|
|
|
|
|
|
|
|
|
```javascript
|
|
|
|
|
import { DrawLine } from '@antv/l7-draw';
|
|
|
|
|
const drawLine = new DrawLine(scene);
|
|
|
|
|
drawLine.enable();
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### DrawPoint
|
|
|
|
|
|
|
|
|
|
绘制点
|
|
|
|
|
|
|
|
|
|
```javascript
|
|
|
|
|
import { DrawPoint } from '@antv/l7-draw';
|
|
|
|
|
const drawPoint = new DrawPoint(scene);
|
|
|
|
|
drawPoint.enable();
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### DrawPolygon
|
|
|
|
|
|
|
|
|
|
绘制多边形
|
|
|
|
|
|
|
|
|
|
```javascript
|
|
|
|
|
import { DrawPolygon } from '@antv/l7-draw';
|
|
|
|
|
const drawPoint = new DrawPolygon(scene);
|
|
|
|
|
drawPoint.enable();
|
|
|
|
|
```
|
|
|
|
|
|
2020-04-09 20:54:39 +08:00
|
|
|
|
### 配置项 DrawOption
|
|
|
|
|
|
|
|
|
|
- editEnable boolean 是否允许编辑
|
|
|
|
|
- selectEnable boolean 是否允许选中
|
|
|
|
|
|
2020-04-08 14:06:02 +08:00
|
|
|
|
### 方法
|
|
|
|
|
|
|
|
|
|
#### enable
|
|
|
|
|
|
|
|
|
|
开始编辑,绘制完成之后会自动结束。
|
|
|
|
|
|
2020-04-26 23:42:25 +08:00
|
|
|
|
```javascript
|
2020-04-27 10:42:04 +08:00
|
|
|
|
draw.enable();
|
2020-04-26 23:42:25 +08:00
|
|
|
|
```
|
|
|
|
|
|
2020-04-08 14:06:02 +08:00
|
|
|
|
#### disable
|
|
|
|
|
|
|
|
|
|
结束编辑
|
|
|
|
|
|
2020-04-26 23:42:25 +08:00
|
|
|
|
```javascript
|
2020-04-27 10:42:04 +08:00
|
|
|
|
draw.enable();
|
2020-04-26 23:42:25 +08:00
|
|
|
|
```
|
|
|
|
|
|
2020-04-08 14:06:02 +08:00
|
|
|
|
### 事件
|
|
|
|
|
|
|
|
|
|
#### draw.create
|
|
|
|
|
|
|
|
|
|
绘制完成时触发该事件
|
|
|
|
|
|
|
|
|
|
#### draw.delete
|
|
|
|
|
|
|
|
|
|
图形删除时触发该事件
|
|
|
|
|
|
|
|
|
|
#### draw.update
|
|
|
|
|
|
|
|
|
|
图形更新时触发该事件,图形的平移,顶点的编辑
|
|
|
|
|
|
|
|
|
|
### style
|
|
|
|
|
|
|
|
|
|
- active 绘制过程中高亮颜色
|
|
|
|
|
- normal 正常显示状态
|
|
|
|
|
|
|
|
|
|
```javascript
|
2020-04-09 20:54:39 +08:00
|
|
|
|
const style = {
|
2020-04-08 14:06:02 +08:00
|
|
|
|
active: {
|
|
|
|
|
point: {
|
|
|
|
|
type: 'PointLayer',
|
|
|
|
|
shape: 'circle',
|
|
|
|
|
color: '#fbb03b',
|
|
|
|
|
size: 5,
|
|
|
|
|
style: {
|
|
|
|
|
stroke: '#fff',
|
|
|
|
|
strokeWidth: 2,
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
line: {
|
|
|
|
|
type: 'LineLayer',
|
|
|
|
|
shape: 'line',
|
|
|
|
|
color: '#fbb03b',
|
|
|
|
|
size: 1,
|
|
|
|
|
style: {
|
|
|
|
|
opacity: 1,
|
|
|
|
|
lineType: 'dash',
|
|
|
|
|
dashArray: [2, 2],
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
polygon: {
|
|
|
|
|
shape: 'fill',
|
|
|
|
|
color: '#fbb03b',
|
|
|
|
|
style: {
|
|
|
|
|
opacity: 0.1,
|
|
|
|
|
stroke: '#fbb03b',
|
|
|
|
|
strokeWidth: 1,
|
|
|
|
|
strokeOpacity: 1,
|
|
|
|
|
lineType: 'dash',
|
|
|
|
|
dashArray: [2, 2],
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
normal: {
|
|
|
|
|
polygon: {
|
|
|
|
|
type: 'PolygonLayer',
|
|
|
|
|
shape: 'fill',
|
|
|
|
|
color: '#3bb2d0',
|
|
|
|
|
style: {
|
|
|
|
|
opacity: 0.1,
|
|
|
|
|
stroke: '#3bb2d0',
|
|
|
|
|
strokeWidth: 1,
|
|
|
|
|
strokeOpacity: 1,
|
|
|
|
|
lineType: 'solid',
|
|
|
|
|
dashArray: [2, 2],
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
line: {
|
|
|
|
|
type: 'LineLayer',
|
|
|
|
|
shape: 'line',
|
|
|
|
|
size: 1,
|
|
|
|
|
color: '#3bb2d0',
|
|
|
|
|
style: {
|
|
|
|
|
opacity: 1,
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
point: {
|
|
|
|
|
type: 'PointLayer',
|
|
|
|
|
shape: 'circle',
|
|
|
|
|
color: '#3bb2d0',
|
|
|
|
|
size: 3,
|
|
|
|
|
style: {
|
|
|
|
|
stroke: '#fff',
|
|
|
|
|
strokeWidth: 2,
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
normal_point: {
|
|
|
|
|
type: 'PointLayer',
|
|
|
|
|
shape: 'circle',
|
|
|
|
|
color: '#3bb2d0',
|
|
|
|
|
size: 3,
|
|
|
|
|
style: {
|
|
|
|
|
stroke: '#fff',
|
|
|
|
|
strokeWidth: 2,
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
mid_point: {
|
|
|
|
|
point: {
|
|
|
|
|
type: 'PointLayer',
|
|
|
|
|
shape: 'circle',
|
|
|
|
|
color: '#fbb03b',
|
|
|
|
|
size: 3,
|
|
|
|
|
style: {},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
};
|
|
|
|
|
```
|