UNPKG

@uiw/react-baidu-map-drawing-manager

Version:

Baidu Map drawing-manager Components for React.

83 lines (80 loc) 2.96 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useDrawingManager = useDrawingManager; var _react = require("react"); var _reactBaiduMapMap = require("@uiw/react-baidu-map-map"); var _reactBaiduMapUtils = require("@uiw/react-baidu-map-utils"); function useDrawingManager() { let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; const { isOpen, drawingMode, enableDrawingTool, enableCalculate, drawingToolOptions, markerOptions, circleOptions, polylineOptions, polygonOptions, rectangleOptions } = props; const { map } = (0, _reactBaiduMapMap.useMapContext)(); const [drawingManager, setDrawingManager] = (0, _react.useState)(); const libSDK = window.BMapLib; const [bMapLib, setBMapLib] = (0, _react.useState)(libSDK); const [loadMapLib, setLoadBMapLib] = (0, _react.useState)(false || !!libSDK); const opts = { isOpen, drawingMode, enableDrawingTool, enableCalculate, drawingToolOptions, markerOptions, circleOptions, polylineOptions, polygonOptions, rectangleOptions }; (0, _react.useMemo)(() => { // 如果第一次加载,会执行下面的 if (map && bMapLib && !drawingManager) { if (bMapLib.DrawingManager) { const instance = new BMapLib.DrawingManager(map, opts); setDrawingManager(instance); } } // 如果 bMapLib 已经加载过,会执行下面的 if (map && bMapLib && !bMapLib.DrawingManager) { (0, _reactBaiduMapUtils.requireCss)('//api.map.baidu.com/library/DrawingManager/1.4/src/DrawingManager_min.css').then(() => {}); (0, _reactBaiduMapUtils.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); (0, _reactBaiduMapUtils.requireCss)('//api.map.baidu.com/library/DrawingManager/1.4/src/DrawingManager_min.css').then(() => {}); (0, _reactBaiduMapUtils.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]); (0, _reactBaiduMapUtils.useEventProperties)(drawingManager, props, ['CircleComplete', 'MarkerComplete', 'OverlayComplete', 'PolygonComplete', 'PolylineComplete', 'RectangleComplete']); return { drawingManager, setDrawingManager, BMapLib: bMapLib }; }