@uiw/react-baidu-map-label
Version:
Baidu Map label Components for React.
60 lines • 1.75 kB
JavaScript
import _extends from "@babel/runtime/helpers/extends";
import { useEffect, useState } from 'react';
import { usePortal, useEnableProperties, useProperties, useVisiable, useEventProperties } from '@uiw/react-baidu-map-utils';
import { useMapContext } from '@uiw/react-baidu-map-map';
export function useLabel(props) {
if (props === void 0) {
props = {};
}
var [label, setLabel] = useState();
var {
offset,
style,
content = '',
position,
enableMassClear
} = props;
var {
container,
Portal
} = usePortal();
// const { container } = useRenderDom({ children: props.children });
var {
map
} = useMapContext();
useEffect(() => {
if (!BMap || !map) return;
if (!label) {
var opts = {
offset,
position,
enableMassClear
};
var instance = new BMap.Label(props.children ? container.innerHTML : content, opts);
instance.setStyle(_extends({}, style));
map.addOverlay(instance);
setLabel(instance);
}
return () => {
if (map && label) {
map.removeOverlay(label);
}
};
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [map]);
useEffect(() => {
if (label) {
label.setContent(props.children ? container.innerHTML : content);
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [props.children, container, label]);
useVisiable(label, props);
useEventProperties(label, props, ['Click', 'DblClick', 'MouseDo', 'MouseUp', 'MouseOout', 'MouseO', 'Remove', 'RightClick']);
useProperties(label, props, ['Style', 'Position', 'Offset', 'Title', 'ZIndex']);
useEnableProperties(label, props, ['MassClear']);
return {
label,
setLabel,
Portal
};
}