如何捕捉LayersControl组件的变化事件?

问题描述 投票:0回答:1

例如,当改变基础层(单选按钮)或切换覆盖层(复选框)时,我们如何捕捉变化事件,以便更新应用程序中的其他方面的状态。先谢谢你,欢迎任何类型的解决方案。伪代码。

<Map>
    <LayersControl position='topright' change={this.handleLayerControlsChange}>
        <BaseLayer checked name='Map 1'>
            <TileLayer url={map1} />
        </BaseLayer>
        <BaseLayer checked name='Map 2'>
            <TileLayer url={map2} />
        </BaseLayer>
        <Overlay name='Overlay 1'>
            <LayerGroup>
                <GeoJSON data={overlayData1} />
            </LayerGroup>
        </Overlay>
        <Overlay name='Overlay 2'>
            <LayerGroup>
                <GeoJSON data={overlayData2} />
            </LayerGroup>
        </Overlay>
    </LayersControl>
</Map>
javascript reactjs events leaflet react-leaflet
1个回答
0
投票

当然......几个小时,发了个问题才找到解决办法。该地图有一个 whenReady 事件(我已经在使用了,只是没有在伪代码中使用),在查看了 地图上的传单文件 活动baselayerchange 可以使用的。伪代码,也许能在某些时候帮助到别人。

baseLayerChange = event => {
    console.log('baseLayerChange event', event);
}

whenReadyHandler = event => {
    const { target } = event;
    target.on('baselayerchange', this.baseLayerChange);
}

<Map whenReady={this.whenReadyHandler}>
    <LayersControl position='topright' change={this.handleLayerControlsChange}>
        <BaseLayer checked name='Map 1'>
            <TileLayer url={map1} />
        </BaseLayer>
        <BaseLayer checked name='Map 2'>
            <TileLayer url={map2} />
        </BaseLayer>
        <Overlay name='Overlay 1'>
            <LayerGroup>
                <GeoJSON data={overlayData1} />
            </LayerGroup>
        </Overlay>
        <Overlay name='Overlay 2'>
            <LayerGroup>
                <GeoJSON data={overlayData2} />
            </LayerGroup>
        </Overlay>
    </LayersControl>
</Map>
© www.soinside.com 2019 - 2024. All rights reserved.