62 lines
1.5 KiB
JavaScript
62 lines
1.5 KiB
JavaScript
import { Search } from "lucide-react";
|
|
import { useCallback, useEffect, useRef, useState } from "react";
|
|
import { useGisContext } from "./Gis";
|
|
import "./lib/css/gis.edit.css";
|
|
import GisApp from "./lib/gis.core";
|
|
|
|
export default function GisContent({
|
|
edit = false,
|
|
onFeatureSelect,
|
|
isSearch,
|
|
setIsSearchModalOpen,
|
|
}) {
|
|
const { gisMap, gisCore } = useGisContext();
|
|
|
|
//셀렉트 버튼 이벤트
|
|
const selectRslt = useCallback((feature) => {
|
|
GisApp.Module.layer.highLightFeature(
|
|
[feature],
|
|
{
|
|
id: GisApp.hlLayerId,
|
|
zIndex: 10,
|
|
opacity: 1,
|
|
selectable: true,
|
|
},
|
|
{ width: 30 },
|
|
);
|
|
clickFeature(feature);
|
|
}, []);
|
|
|
|
useEffect(() => {
|
|
if (gisMap) {
|
|
setVisibleComponents((prevState) => ({
|
|
...prevState,
|
|
}));
|
|
}
|
|
}, [gisMap]);
|
|
|
|
if (!gisMap) return null;
|
|
|
|
return (
|
|
<>
|
|
<GisTree />
|
|
<GisMapToggle />
|
|
<GisLonLat />
|
|
<GisToolBar />
|
|
<GisSelect onFeatureSelect={onFeatureSelect} />
|
|
|
|
{/* 검색 모달 */}
|
|
{isSearch && (
|
|
<div className="absolute right-8 top-[254px] z-20">
|
|
<button
|
|
onClick={() => setIsSearchModalOpen(true)}
|
|
className="flex h-[40px] w-[40px] items-center justify-center overflow-hidden rounded border border-[#9aa7b8] bg-white p-0 shadow-[0_0_5px_#999]"
|
|
>
|
|
<Search size={24} className="text-gray-700" />
|
|
</button>
|
|
</div>
|
|
)}
|
|
</>
|
|
);
|
|
}
|