Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 1x 1x 1x 2x 2x | import { useState, useMemo } from 'react'; import { useMapContext } from '@uiw/react-baidu-map-map'; import { requireScript, requireCss, useEventProperties } from '@uiw/react-baidu-map-utils'; import { DrawingManagerProps } from '.'; export interface UseDrawingManager extends DrawingManagerProps {} export function useDrawingManager(props = {} as UseDrawingManager) { const { isOpen, drawingMode, enableDrawingTool, enableCalculate, drawingToolOptions, markerOptions, circleOptions, polylineOptions, polygonOptions, rectangleOptions, } = props; const { map } = useMapContext(); const [drawingManager, setDrawingManager] = useState<BMapLib.DrawingManager>(); const libSDK = window.BMapLib; const [bMapLib, setBMapLib] = useState<typeof BMapLib>(libSDK); const [loadMapLib, setLoadBMapLib] = useState(false || !!libSDK); const opts = { isOpen, drawingMode, enableDrawingTool, enableCalculate, drawingToolOptions, markerOptions, circleOptions, polylineOptions, polygonOptions, rectangleOptions, } as BMapLib.DrawingManagerOptions; useMemo(() => { // 如果第一次加载,会执行下面的 Iif (map && bMapLib && !drawingManager) { if (bMapLib.DrawingManager) { const instance = new BMapLib.DrawingManager(map, opts); setDrawingManager(instance); } } // 如果 bMapLib 已经加载过,会执行下面的 Iif (map && bMapLib && !bMapLib.DrawingManager) { requireCss('//api.map.baidu.com/library/DrawingManager/1.4/src/DrawingManager_min.css').then(() => {}); requireScript('//api.map.baidu.com/library/DrawingManager/1.4/src/DrawingManager_min.js') .then(() => { if (window.BMapLib) { const newMapLib = Object.assign(window.BMapLib, bMapLib); setBMapLib(newMapLib); const instance = new BMapLib.DrawingManager(map, opts); setDrawingManager(instance); } }) .catch(() => {}); } // 如果第一次加载,会执行下面的 if (!bMapLib && !loadMapLib) { setLoadBMapLib(true); requireCss('//api.map.baidu.com/library/DrawingManager/1.4/src/DrawingManager_min.css').then(() => {}); requireScript('//api.map.baidu.com/library/DrawingManager/1.4/src/DrawingManager_min.js') .then(() => { if (window.BMapLib) { setBMapLib(window.BMapLib); } }) .catch(() => {}); } // eslint-disable-next-line react-hooks/exhaustive-deps }, [map, loadMapLib, bMapLib, drawingManager]); useEventProperties<BMapLib.DrawingManager, UseDrawingManager>(drawingManager!, props, [ 'CircleComplete', 'MarkerComplete', 'OverlayComplete', 'PolygonComplete', 'PolylineComplete', 'RectangleComplete', ]); return { drawingManager, setDrawingManager, BMapLib: bMapLib, }; } |