例如,当改变基础层(单选按钮)或切换覆盖层(复选框)时,我们如何捕捉变化事件,以便更新应用程序中的其他方面的状态。先谢谢你,欢迎任何类型的解决方案。伪代码。
<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>
当然......几个小时,发了个问题才找到解决办法。该地图有一个 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>