feat(sensor): 完善监测点结果编辑与图层切换
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
"use client";
|
||||
|
||||
import React, { useEffect, useMemo, useState } from "react";
|
||||
import React, { useEffect, useMemo, useRef, useState } from "react";
|
||||
import {
|
||||
Box,
|
||||
Button,
|
||||
@@ -53,6 +53,7 @@ interface SchemaItem {
|
||||
|
||||
interface SchemeQueryProps {
|
||||
schemes?: SchemeRecord[];
|
||||
active?: boolean;
|
||||
onSchemesChange?: (schemes: SchemeRecord[]) => void;
|
||||
onEdit?: (id: number) => void;
|
||||
network?: string;
|
||||
@@ -77,6 +78,7 @@ export const createMonitoringSchemeQueryState =
|
||||
|
||||
const SchemeQuery: React.FC<SchemeQueryProps> = ({
|
||||
schemes: externalSchemes,
|
||||
active = true,
|
||||
onSchemesChange,
|
||||
onEdit,
|
||||
network = NETWORK_NAME,
|
||||
@@ -98,6 +100,8 @@ const SchemeQuery: React.FC<SchemeQueryProps> = ({
|
||||
|
||||
const [highlightLayer, setHighlightLayer] =
|
||||
useState<VectorLayer<VectorSource> | null>(null);
|
||||
const activeRef = useRef(active);
|
||||
activeRef.current = active;
|
||||
const [highlightFeatures, setHighlightFeatures] = useState<Feature[]>([]);
|
||||
// 使用外部提供的 schemes 或内部状态
|
||||
const schemes =
|
||||
@@ -142,6 +146,7 @@ const SchemeQuery: React.FC<SchemeQueryProps> = ({
|
||||
queryable: false,
|
||||
},
|
||||
});
|
||||
highlightLayer.setVisible(activeRef.current);
|
||||
|
||||
map.addLayer(highlightLayer);
|
||||
setHighlightLayer(highlightLayer);
|
||||
@@ -151,6 +156,10 @@ const SchemeQuery: React.FC<SchemeQueryProps> = ({
|
||||
};
|
||||
}, [map]);
|
||||
|
||||
useEffect(() => {
|
||||
highlightLayer?.setVisible(active);
|
||||
}, [active, highlightLayer]);
|
||||
|
||||
// 高亮要素的函数
|
||||
useEffect(() => {
|
||||
if (!highlightLayer) {
|
||||
|
||||
Reference in New Issue
Block a user