@uiw/react-amap-bezier-curve
Version:
45 lines • 1.75 kB
JavaScript
import _extends from "@babel/runtime/helpers/extends";
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/objectWithoutPropertiesLoose";
var _excluded = ["visiable", "visible"];
import { useState, useEffect } from 'react';
import { useVisiable, useEventProperties, useSettingProperties } from '@uiw/react-amap-utils';
import { useMapContext } from '@uiw/react-amap-map';
export var useBezierCurve = function useBezierCurve(props) {
if (props === void 0) {
props = {};
}
var _props = props,
visiable = _props.visiable,
visible = _props.visible,
other = _objectWithoutPropertiesLoose(_props, _excluded);
var _useMapContext = useMapContext(),
map = _useMapContext.map;
var _useState = useState(),
bezierCurve = _useState[0],
setBezierCurve = _useState[1];
useEffect(() => {
if (AMap && map && !bezierCurve) {
var instance = new AMap.BezierCurve(_extends({}, other));
map.add(instance);
setBezierCurve(instance);
return () => {
if (instance) {
if (AMap.v) {
map && map.remove(instance);
} else {
// 暂不使用这个 API,这个不兼容 v1.4.xx,改用 map.remove API
map && map.removeLayer(instance);
}
setBezierCurve(undefined);
}
};
}
}, [map]);
useVisiable(bezierCurve, visible != null ? visible : visiable);
useSettingProperties(bezierCurve, props, ['Options', 'Path', 'ExtData', 'ExtData']);
useEventProperties(bezierCurve, props, ['onHide', 'onShow', 'onDblClick', 'onMouseOver', 'onMouseUp', 'onMouseDown', 'onclick', 'onTouchEnd', 'onTouchMove', 'onTouchStart', 'onRightClick', 'onMouseOut']);
return {
bezierCurve,
setBezierCurve
};
};