完善Toolbar和HistoryDataPanel的交互函数
This commit is contained in:
@@ -43,6 +43,7 @@ const Toolbar: React.FC<ToolbarProps> = ({ hiddenButtons, queryType }) => {
|
||||
const [showHistoryPanel, setShowHistoryPanel] = useState<boolean>(false);
|
||||
const [highlightLayer, setHighlightLayer] =
|
||||
useState<VectorLayer<VectorSource> | null>(null);
|
||||
const [featureId, setFeatureId] = useState<string>("");
|
||||
|
||||
// 样式状态管理 - 在 Toolbar 中管理,带有默认样式
|
||||
const [layerStyleStates, setLayerStyleStates] = useState<LayerStyleState[]>([
|
||||
@@ -186,14 +187,30 @@ const Toolbar: React.FC<ToolbarProps> = ({ hiddenButtons, queryType }) => {
|
||||
);
|
||||
// 添加矢量属性查询事件监听器
|
||||
useEffect(() => {
|
||||
if (!activeTools.includes("info") || !map) return;
|
||||
map.on("click", handleMapClickSelectFeatures);
|
||||
if (!map) return;
|
||||
// 监听 info 或 history 工具激活时添加
|
||||
if (activeTools.includes("info") || activeTools.includes("history")) {
|
||||
map.on("click", handleMapClickSelectFeatures);
|
||||
|
||||
return () => {
|
||||
map.un("click", handleMapClickSelectFeatures);
|
||||
};
|
||||
return () => {
|
||||
map.un("click", handleMapClickSelectFeatures);
|
||||
};
|
||||
}
|
||||
}, [activeTools, map, handleMapClickSelectFeatures]);
|
||||
|
||||
// 监听 highlightFeature 变化,更新 featureId
|
||||
useEffect(() => {
|
||||
if (highlightFeature) {
|
||||
const id = highlightFeature.getProperties().id;
|
||||
if (id) {
|
||||
setFeatureId(id);
|
||||
}
|
||||
console.log("高亮要素 ID:", id);
|
||||
} else {
|
||||
setFeatureId("");
|
||||
}
|
||||
}, [highlightFeature]);
|
||||
|
||||
// 处理工具栏按钮点击事件
|
||||
const handleToolClick = (tool: string) => {
|
||||
// 样式工具的特殊处理 - 只有再次点击时才会取消激活和关闭
|
||||
@@ -652,7 +669,14 @@ const Toolbar: React.FC<ToolbarProps> = ({ hiddenButtons, queryType }) => {
|
||||
setLayerStyleStates={setLayerStyleStates}
|
||||
/>
|
||||
)}
|
||||
{showHistoryPanel && <HistoryDataPanel deviceIds={[]} />}
|
||||
{showHistoryPanel && (
|
||||
<HistoryDataPanel
|
||||
deviceIds={featureId ? [featureId] : []}
|
||||
scheme_type="burst_Analysis"
|
||||
scheme_name={schemeName}
|
||||
type={queryType as "realtime" | "scheme" | "none"}
|
||||
/>
|
||||
)}
|
||||
|
||||
{/* 图例显示 */}
|
||||
{activeLegendConfigs.length > 0 && (
|
||||
|
||||
Reference in New Issue
Block a user