@uiw/react-baidu-map-circle
Version:
Baidu Map circle Components for React.
56 lines • 1.61 kB
JavaScript
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
};
}