0

我正在使用 react-leaflet (3.2.0) 和 TypeScript,在我的项目中,我不想使用 LayersControl 切换图层,但我需要以编程方式进行。所以我有这样的事情:

export const getDefaultBgLayer = () => ( 
       <TileLayer attribution='&copy; <a 
                  href="osm.org/copyright">OpenStreetMap</a> contributors' 
                  url="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png" maxZoom={20} 
                  minZoom={3} />
 );
    
 const MyMap = () => {
    
        const [bgLayer, setBgLayer] = useState<any>(getDefaultBgLayer());
    
        return (
                <MapContainer>
    
                    {bgLayer}
    
                </MapContainer>
        );
    
    }

export default MyMap;

如果我正在尝试

setBgLayer(getAnotherBgLayer())

它不会改变背景层。顺便提一句。getAnotherBgLayer 返回正确的背景层,因为:

const [bgLayer, setBgLayer] = useState<any>(getAnotherBgLayer());

工作正常。任何人都可以帮忙吗?问候, 米克

4

1 回答 1

0

感谢所有试图帮助我的人。

我已经通过这种方式解决了它:

    setBgLayer(undefined)
    setTimeout(() =>
        setBgLayer(mapsource)
    , 0)

问候,M。

于 2021-07-14T12:08:25.513 回答