我对 react-leaflet 和 react 比较陌生,并且在我的地图上绘制新组件时遇到了麻烦。我已经被困了一个星期了,所以希望有人能帮忙。我正在尝试从地图上的功能组中清除组件(图层?),然后通过更改父组件的状态来呈现新组件。
在位于此沙箱的最小示例程序中,我有一些组件:
Map
包含地图状态、标记、查询数据、地图边界和选择框值的父组件
// state for initial map loading
let [map, setMap] = useState(null);
// states in Map component
let [data, setData] = useState();
let [bounds, setBounds] = useState(null);
let [featureNum, setFeatureNum] = useState(1);
// some random markers simulating user placed markers on map
let [markers, setMarkers] = useState([
[27.147144835991796, 31.530761718750004],
[28.844673680771795, 33.662109375],
[26.86328062676624, 35.804443359375]
]);
Select
这是一个下拉菜单,用于设置featureNum
选择框值更改时的状态。
Line
这是一个 Geojson 功能,它从data
state 接收数据并设置markers
. 存在于特征组中。
Markers
它使用 的状态创建标记特征markers
。存在于特征组中。
在地图的初始渲染之后,当featureNum
更改状态时,geojson 数据通过我的组件fetch
中的 API异步获取。Map
新接收到的数据的边界是根据解析计算的,并且使用状态设置器设置data
和bounds
设置的状态。使用 useRef 挂钩清除功能组,并.clearLayers()
但是,设置Line
后,地图上不会出现新组件data
。地图飞到组件应该出现的新边界。我尝试将功能组的 z-index 设置为 9999,但这也不起作用。
从Select
组件中选择特征时, 如何清除特征组的地图并在地图上显示新Line
组件?谢谢!