UNPKG

@uiw/react-baidu-map-tile-layer

Version:

Baidu Map tile-layer Components for React.

57 lines 1.39 kB
import { useEffect, useState } from 'react'; import { useMapContext } from '@uiw/react-baidu-map-map'; /** * https://lbsyun.baidu.com/jsdemo.htm#g0_2 */ export function useTileLayer(props) { if (props === void 0) { props = {}; } var [tileLayer, setTileLayer] = useState(); var { transparentPng = true, tileUrlTemplate, copyright, zIndex } = props; var { map } = useMapContext(); useEffect(() => { if (map && !tileLayer) { var instance = new BMap.TileLayer({ transparentPng, tileUrlTemplate, copyright, zIndex }); if (!!props.getTilesUrl) { instance.getTilesUrl = props.getTilesUrl; } if (!!props.getCopyright) { instance.getCopyright = props.getCopyright; } map.addTileLayer(instance); setTileLayer(instance); return () => { if (instance) { map.removeTileLayer(instance); } }; } // eslint-disable-next-line react-hooks/exhaustive-deps }, [map]); var [visiable, setVisiable] = useState(props.visiable); useEffect(() => { if (map && tileLayer) { visiable ? map.addTileLayer(tileLayer) : map.removeTileLayer(tileLayer); } // eslint-disable-next-line react-hooks/exhaustive-deps }, [visiable, map]); return { tileLayer, setTileLayer, visiable, setVisiable }; }