@uiw/react-baidu-map-tile-layer
Version:
Baidu Map tile-layer Components for React.
61 lines (60 loc) • 1.6 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useTileLayer = useTileLayer;
var _react = require("react");
var _reactBaiduMapMap = require("@uiw/react-baidu-map-map");
/**
* https://lbsyun.baidu.com/jsdemo.htm#g0_2
*/
function useTileLayer() {
let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
const [tileLayer, setTileLayer] = (0, _react.useState)();
const {
transparentPng = true,
tileUrlTemplate,
copyright,
zIndex
} = props;
const {
map
} = (0, _reactBaiduMapMap.useMapContext)();
(0, _react.useEffect)(() => {
if (map && !tileLayer) {
const 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]);
const [visiable, setVisiable] = (0, _react.useState)(props.visiable);
(0, _react.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
};
}
;