Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | 1x 1x 1x 1x 1x 1x 1x 1x | import { useEffect, useState } from 'react'; import { useMapContext } from '@uiw/react-baidu-map-map'; import { useProperties, useVisiable, useEventProperties } from '@uiw/react-baidu-map-utils'; import { GroundOverlayProps } from './'; export interface UseGroundOverlay extends GroundOverlayProps {} export function useGroundOverlay(props = {} as UseGroundOverlay) { const [groundOverlay, setGroundOverlay] = useState<BMap.GroundOverlay>(); const { bounds, opacity, imageURL, displayOnMinLevel, displayOnMaxLevel } = props; const { map } = useMapContext(); useEffect(() => { if (!groundOverlay && bounds && map) { const instance = new BMap.GroundOverlay(bounds, { opacity, imageURL, displayOnMinLevel, displayOnMaxLevel, }); map.addOverlay(instance); setGroundOverlay(instance); return () => { if (map && instance) { map.removeOverlay(instance); } }; } // eslint-disable-next-line react-hooks/exhaustive-deps }, [map]); useVisiable(groundOverlay!, props); useEventProperties<BMap.GroundOverlay, UseGroundOverlay>(groundOverlay!, props, ['Click', 'DblClick']); useProperties<BMap.GroundOverlay, UseGroundOverlay>(groundOverlay!, props, [ 'Bounds', 'Opacity', 'ImageURL', 'DisplayOnMinLevel', 'DispalyOnMaxLevel', ]); return { groundOverlay, setGroundOverlay, }; } |