【发布时间】:2021-09-26 21:09:41
【问题描述】:
我对 react-leaflet 和 react 还比较陌生,在我的地图上绘制新组件时遇到了麻烦。我已经被困了一个星期了,所以希望有人能提供帮助。我正在尝试从地图上的功能组中清除组件(层?),然后通过更改父组件的状态来呈现新的组件。
在我的最小示例程序 located at this sandbox 我有几个组件:
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 which is a dropdown menu that sets the state of featureNum when the select box value changes.
Line 是一个 Geojson 功能,它接收来自data 状态的数据并设置markers 的状态。存在于特征组中。
Markers 使用markers 的状态创建标记特征。存在于特征组中。
地图初始渲染后,当featureNum 的状态发生变化时,geojson 数据通过我的Map 组件中的fetch API 异步获取。新接收数据的边界在解析时计算,data 和bounds 的状态使用状态设置器设置。使用 useRef 挂钩和 .clearLayers()
但是,当设置data 时,地图上不会出现新的Line 组件。地图飞到组件应该出现的新边界。我尝试将要素组的 z-index 设置为 9999,但这也不起作用。
在从Select 组件中选择特征时, 如何清除特征组的地图并在地图上显示新的Line 组件? 谢谢!
【问题讨论】:
标签: reactjs leaflet react-leaflet react-leaflet-v3