Skip to content

Commit b9b6d37

Browse files
committed
feat(DrawingManager): support events. (#321)
1 parent aa84b63 commit b9b6d37

4 files changed

Lines changed: 75 additions & 20 deletions

File tree

packages/drawing-manager/README.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,9 @@ const Example = () => {
4545
polylineOptions={styleOptions}
4646
polygonOptions={styleOptions}
4747
rectangleOptions={styleOptions}
48+
onCircleComplete={(overlay) => {
49+
console.log("overlay", overlay)
50+
}}
4851
/>
4952
</Map>
5053
</>
@@ -146,6 +149,17 @@ export default Demo;
146149
| scale | 工具栏的缩放比例,默认为1 | Number | - |
147150
| drawingModes | 工具栏上可以选择出现的绘制模式 | Array | - |
148151

152+
## 事件
153+
154+
| 参数 | 说明 | ----- |
155+
| ----- | ----- | ----- |
156+
onCircleComplete | 绘制圆完成后,派发的事件接口 | `(overlay: BMap.Circle) => void;` |
157+
onMarkerComplete | 绘制点完成后,派发的事件接口 | `(overlay: BMap.Marker) => void;` |
158+
onOverlayComplete | 鼠标绘制完成后,派发总事件的接口 | `(e: any) => void;` |
159+
onPolygonComplete | 绘制多边形完成后,派发的事件接口 | `(overlay: BMap.Polygon) => void;` |
160+
onPolylineComplete | 绘制线完成后,派发的事件接口 | `(overlay: BMap.Polyline) => void;` |
161+
onRectangleComplete | 绘制矩形完成后,派发的事件接口 | `(overlay: BMap.Polygon) => void;` |
162+
149163
### 官方文档
150164

151165
- demo: https://lbsyun.baidu.com/jsdemo.htm#f0_7

packages/drawing-manager/src/index.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,10 @@ import { MapChildProps } from '@uiw/react-baidu-map-map';
33
import { useDrawingManager } from './useDrawingManager';
44

55
export * from './useDrawingManager';
6-
export interface DrawingManagerProps extends BMap.DrawingManagerOptions, MapChildProps {}
6+
export interface DrawingManagerProps
7+
extends BMapLib.DrawingManagerOptions,
8+
BMapLib.DrawingManagerEvents,
9+
MapChildProps {}
710

811
export default React.forwardRef<DrawingManagerProps & { drawingManager?: BMapLib.DrawingManager }, DrawingManagerProps>(
912
(props, ref) => {

packages/drawing-manager/src/useDrawingManager.tsx

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { useState, useMemo } from 'react';
22
import { useMapContext } from '@uiw/react-baidu-map-map';
3-
import { requireScript, requireCss } from '@uiw/react-baidu-map-utils';
3+
import { requireScript, requireCss, useEventProperties } from '@uiw/react-baidu-map-utils';
44
import { DrawingManagerProps } from '.';
55

66
export interface UseDrawingManager extends DrawingManagerProps {}
@@ -35,7 +35,7 @@ export function useDrawingManager(props = {} as UseDrawingManager) {
3535
polylineOptions,
3636
polygonOptions,
3737
rectangleOptions,
38-
} as BMap.DrawingManagerOptions;
38+
} as BMapLib.DrawingManagerOptions;
3939

4040
useMemo(() => {
4141
// 如果第一次加载,会执行下面的
@@ -78,6 +78,15 @@ export function useDrawingManager(props = {} as UseDrawingManager) {
7878
// eslint-disable-next-line react-hooks/exhaustive-deps
7979
}, [map, loadMapLib, bMapLib, drawingManager]);
8080

81+
useEventProperties<BMapLib.DrawingManager, UseDrawingManager>(drawingManager!, props, [
82+
'CircleComplete',
83+
'MarkerComplete',
84+
'OverlayComplete',
85+
'PolygonComplete',
86+
'PolylineComplete',
87+
'RectangleComplete',
88+
]);
89+
8190
return {
8291
drawingManager,
8392
setDrawingManager,

packages/types/src/bmaplib.d.ts

Lines changed: 46 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,21 @@ declare global {
44
}
55
}
66

7-
declare namespace BMap {
7+
declare namespace BMapLib {
8+
type Callback = (...args: any[]) => void;
9+
10+
type Callback<T> = (e: any, overlay: T) => void;
11+
12+
/**
13+
* 弧线
14+
*/
15+
class CurveLine {
16+
constructor(points: BMap.Point[], opts?: CurveLineOptions);
17+
}
18+
interface CurveLineOptions extends BMap.PolylineOptions {}
19+
interface CurveLine extends BMap.Polyline {}
20+
interface CurveLineEvents extends BMap.PolylineEvents {}
21+
822
interface DrawingManagerOptions {
923
/**
1024
* 是否开启绘制模式
@@ -41,23 +55,38 @@ declare namespace BMap {
4155
scale?: number;
4256
drawingModes?: BMap.DrawingType[];
4357
}
44-
}
45-
46-
declare namespace BMapLib {
47-
type Callback = (...args: any[]) => void;
48-
49-
type Callback<T> = (e: any, overlay: T) => void;
50-
51-
/**
52-
* 弧线
53-
*/
54-
class CurveLine {
55-
constructor(points: BMap.Point[], opts?: CurveLineOptions);
58+
interface DrawingManagerEvents {
59+
/**
60+
* 绘制圆完成后,派发的事件接口
61+
* @param {BMap.Circle} overlay
62+
*/
63+
onCircleComplete?: (overlay: BMap.Circle) => void;
64+
/**
65+
* 绘制点完成后,派发的事件接口
66+
* @param {BMap.Marker} overlay
67+
*/
68+
onMarkerComplete?: (overlay: BMap.Marker) => void;
69+
/**
70+
* {Event Object} 鼠标绘制完成后,派发总事件的接口
71+
* @param e
72+
*/
73+
onOverlayComplete?: (e: any) => void;
74+
/**
75+
* 绘制多边形完成后,派发的事件接口
76+
* @param {BMap.Polygon} overlay
77+
*/
78+
onPolygonComplete?: (overlay: BMap.Polygon) => void;
79+
/**
80+
* 绘制线完成后,派发的事件接口
81+
* @param {BMap.Polyline} overlay
82+
*/
83+
onPolylineComplete?: (overlay: BMap.Polyline) => void;
84+
/**
85+
* 绘制矩形完成后,派发的事件接口
86+
* @param {BMap.Polygon} overlay
87+
*/
88+
onRectangleComplete?: (overlay: BMap.Polygon) => void;
5689
}
57-
interface CurveLineOptions extends BMap.PolylineOptions {}
58-
interface CurveLine extends BMap.Polyline {}
59-
interface CurveLineEvents extends BMap.PolylineEvents {}
60-
6190
/**
6291
* 鼠标绘制管理
6392
*/

0 commit comments

Comments
 (0)