@uiw/react-baidu-map-drawing-manager
Version:
Baidu Map drawing-manager Components for React.
83 lines (80 loc) • 2.96 kB
JavaScript
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
};
}
;