diff --git a/packages/common/business_components/src/ui/map/Gis.js b/packages/common/business_components/src/ui/map/Gis.js
index 5386207d8..fb0529828 100644
--- a/packages/common/business_components/src/ui/map/Gis.js
+++ b/packages/common/business_components/src/ui/map/Gis.js
@@ -20,6 +20,62 @@ import GisApp from './lib/gis.core';
export const GisContext = createContext({ gisCore: null, gisMap: null, treeData: null, checkedLayerIds: null });
export const useGisContext = () => useContext(GisContext);
+export async function searchUpperPpls(fcltMngNo) {
+ const BASE_URL = process.env.NEXT_PUBLIC_SERVER_API_URL || '';
+
+ const res = await fetch(`${BASE_URL}/v1/fcltmhl/upperPpls/${fcltMngNo}`, {
+ method: "GET",
+ });
+ if (res.ok) {
+ const data = await res.json();
+ return data;
+ }
+ throw new Error('Failed to fetch data');
+ console.log('상류관로 조회 결과:', res);
+
+ const select = GisApp.Module.select;
+ if (!select || !Array.isArray(res)) return;
+
+ const gisMap = GisApp.Module.core?.map;
+ if (!gisMap) return;
+
+ let foundFeature = null;
+
+ res.forEach(item => {
+ const pplMngNo = item.ppl_mng_no.trim();
+
+ gisMap.getLayers().getArray().filter(e => e.get("lyrTyNm") == 'tb_ms_swage_ppl').forEach(layer => {
+ const source = layer.getSource?.();
+ if (source?.getFeatures) {
+ const features = source.getFeatures();
+ for (const f of features) {
+ if (f.values_.fclt_mng_no.trim() === pplMngNo) {
+ foundFeature = f;
+ break;
+ }
+ }
+ }
+ });
+
+ if (foundFeature) select.selectMultiFeature(foundFeature, true);
+ });
+
+ console.log('찾은 피쳐:', foundFeature);
+ if (!foundFeature) alert(`해당 맨홀의 상류관로를 찾을 수 없습니다.`);
+
+ let geometry = foundFeature?.getGeometry();
+ if (geometry) {
+ let extent = geometry.getExtent();
+
+ gisMap.getView().fit(extent, {
+ duration: 300,
+ padding: [50, 50, 50, 50],
+ maxZoom: 14,
+ constrainResolution: true,
+ nearest: true,
+ });
+ }
+}
function Gis({
isOpen,
@@ -418,7 +474,7 @@ function Gis({
onFeatureSelect={handleFeatureSelect}
/>
)}
-
+ {/* */}
diff --git a/packages/common/business_components/src/ui/map/lib/gis.select.js b/packages/common/business_components/src/ui/map/lib/gis.select.js
index 21ab39609..d0209a6ed 100644
--- a/packages/common/business_components/src/ui/map/lib/gis.select.js
+++ b/packages/common/business_components/src/ui/map/lib/gis.select.js
@@ -429,6 +429,19 @@ GisOlSelect.prototype = {
auto: auto,
});
},
+ /**
+ * 피처 다중 셀렉트
+ */
+ selectMultiFeature: function (feature, auto) {
+ let me = this;
+ me.selectedFeatures.push(feature);
+ me.selectInteraction.dispatchEvent({
+ type: 'select',
+ selected: me.selectedFeatures,
+ deselected: [],
+ auto: auto,
+ });
+ },
};
export default GisOlSelect;