UNPKG

@uiw/react-baidu-map-circle

Version:

Baidu Map circle Components for React.

56 lines 1.61 kB
import { useState, useMemo } from 'react'; import { useMapContext } from '@uiw/react-baidu-map-map'; import { useEnableProperties, useProperties, useVisiable, useEventProperties } from '@uiw/react-baidu-map-utils'; export function useCircle(props) { if (props === void 0) { props = {}; } var { center, radius, strokeColor, fillColor, strokeWeight, strokeOpacity, fillOpacity, strokeStyle, enableMassClear, enableEditing, enableClicking } = props; var { map } = useMapContext(); var [circle, setCircle] = useState(); useMemo(() => { if (map && !circle) { var point = center; if (center && center.lng && center.lat) { point = new BMap.Point(center.lng, center.lat); } var opts = { strokeColor, fillColor, strokeWeight, strokeOpacity, fillOpacity, strokeStyle, enableMassClear, enableEditing, enableClicking }; var instance = new BMap.Circle(point, radius, opts); map.addOverlay(instance); setCircle(instance); } // eslint-disable-next-line react-hooks/exhaustive-deps }, [map, circle]); useVisiable(circle, props); useEventProperties(circle, props, ['Click', 'DblClick', 'MouseDown', 'MouseUp', 'MouseOut', 'MouseOver', 'Remove', 'LineUpdate']); useEnableProperties(circle, props, ['Editing', 'MassClear']); useProperties(circle, props, ['Center', 'Radius', 'StrokeColor', 'FillColor', 'StrokeOpacity', 'FillOpacity', 'StrokeWeight', 'StrokeStyle']); return { circle, setCircle }; }