@uiw/react-baidu-map-control
Version:
Baidu Map control Components for React.
41 lines • 1.01 kB
JavaScript
import { useState, useEffect } from 'react';
import { useMapContext } from '@uiw/react-baidu-map-map';
import { useProperties, useVisiable, usePortal } from '@uiw/react-baidu-map-utils';
import getControl from "./getControl.js";
export function useControl(props) {
if (props === void 0) {
props = {};
}
var {
container,
Portal
} = usePortal();
var [control, setControl] = useState();
var {
offset,
anchor
} = props;
var {
map
} = useMapContext();
useEffect(() => {
if (map && !control && container) {
var Control = getControl();
var instance = new Control(container, anchor, offset);
setControl(instance);
map.addOverlay(instance);
}
return () => {
if (map && control) {
map.removeControl(control);
}
};
}, [map, control, anchor, offset, container]);
useVisiable(control, props);
useProperties(control, props, ['Anchor', 'Offset']);
return {
control,
ControlPortal: Portal,
setControl
};
}