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