UNPKG

@uiw/react-baidu-map-polyline

Version:

Baidu Map map-polyline Components for React.

72 lines (70 loc) 2.19 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.usePolyline = usePolyline; var _react = require("react"); var _reactBaiduMapMap = require("@uiw/react-baidu-map-map"); var _reactBaiduMapUtils = require("@uiw/react-baidu-map-utils"); function usePolyline() { let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; const { strokeColor, strokeWeight, strokeOpacity, strokeStyle, enableMassClear, enableEditing, enableClicking, icons } = props; const { map } = (0, _reactBaiduMapMap.useMapContext)(); const [polyline, setPolyline] = (0, _react.useState)(); const [path, setPath] = (0, _react.useState)(props.path || []); // eslint-disable-next-line react-hooks/exhaustive-deps const opts = { strokeColor, strokeWeight, strokeOpacity, strokeStyle, enableMassClear, enableEditing, enableClicking, icons }; (0, _react.useEffect)(() => { return () => { if (polyline && map) { map.removeOverlay(polyline); } }; // eslint-disable-next-line react-hooks/exhaustive-deps }, [map]); (0, _react.useMemo)(() => { if (map && !polyline) { const points = (props.path || []).map(item => new BMap.Point(item.lng, item.lat)); const instance = new BMap.Polyline(points, opts); map.addOverlay(instance); setPolyline(instance); } }, [map, opts, polyline, props.path]); (0, _react.useEffect)(() => { if (path && polyline) { const points = path.map(item => new BMap.Point(item.lng, item.lat)); polyline.setPath(points); } }, [polyline, path]); (0, _reactBaiduMapUtils.useVisiable)(polyline, props); (0, _reactBaiduMapUtils.useEventProperties)(polyline, props, ['Click', 'DblClick', 'MouseDown', 'MouseUp', 'MouseOut', 'MouseOver', 'Remove', 'LineUpdate']); (0, _reactBaiduMapUtils.useEnableProperties)(polyline, props, ['Editing', 'MassClear']); // PositionAt (0, _reactBaiduMapUtils.useProperties)(polyline, props, ['StrokeColor', 'StrokeOpacity', 'StrokeWeight', 'StrokeStyle']); return { polyline, setPolyline, path, setPath }; }