0

I'm using react-leaflet (3.2.0) and TypeScript, In my project, I don't want switch layers with LayersControl, but I need do it programatically. So I have something like this:

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;

and If I'm trying

setBgLayer(getAnotherBgLayer())

It not will change a backgroud layer. Btw. getAnotherBgLayer return correct backgroud layer becouse:

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

works correctly. Any one can help? Regards, Mik

kboul
  • 13,836
  • 5
  • 42
  • 53
javalonde
  • 549
  • 2
  • 6
  • 7

1 Answers1

0

Thank you for everyone who tried to help me.

I have solved it on this way:

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

Regards, M.

javalonde
  • 549
  • 2
  • 6
  • 7