From 4ec8b6a24ca4bd06b2d2639c3110cca73dbcf734 Mon Sep 17 00:00:00 2001 From: yschoi Date: Thu, 24 Apr 2025 10:26:49 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B4=80=EB=A7=9D=EB=8F=84=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/sn/app/map/page.tsx | 36 + apps/sn/app/oper/pplines/page.tsx | 2 +- apps/sn/app/service/index.ts | 1 + apps/sn/app/service/map.ts | 37 + apps/sn/app/service/ppline.ts | 23 +- apps/sn/next.config.ts | 10 + apps/sn/package.json | 5 +- .../images/map/layericon/BML_CBAS_PS.png | Bin 0 -> 1547 bytes .../images/map/layericon/BML_ELEV_PS.png | Bin 0 -> 1030 bytes .../images/map/layericon/BML_ETCP_PS.png | Bin 0 -> 961 bytes .../images/map/layericon/BML_STMS_PS.png | Bin 0 -> 1542 bytes .../images/map/layericon/BML_SYMB_PS.png | Bin 0 -> 970 bytes .../images/map/layericon/RDL_BYST_PS.png | Bin 0 -> 1196 bytes .../images/map/layericon/RDL_CROS_PS.png | Bin 0 -> 1083 bytes .../images/map/layericon/RDL_ETCT_PS.png | Bin 0 -> 1016 bytes .../images/map/layericon/RDL_OCUP_PS.png | Bin 0 -> 1061 bytes .../images/map/layericon/RDL_RDSN_PS.png | Bin 0 -> 1313 bytes .../images/map/layericon/RDL_SCLT_PS.png | Bin 0 -> 1072 bytes .../images/map/layericon/RDL_SEPC_PS.png | Bin 0 -> 1068 bytes .../images/map/layericon/RDL_STAT_PS.png | Bin 0 -> 1075 bytes .../images/map/layericon/RDL_STLT_PS.png | Bin 0 -> 1089 bytes .../images/map/layericon/RDL_TFSN_PS.png | Bin 0 -> 1291 bytes .../images/map/layericon/RDL_TRCT_PS.png | Bin 0 -> 1412 bytes .../images/map/layericon/RDL_TREE_PS.png | Bin 0 -> 1136 bytes .../images/map/layericon/RDL_TRSN_PS.png | Bin 0 -> 1375 bytes .../images/map/layericon/RDL_TSCT_PS.png | Bin 0 -> 1700 bytes .../images/map/layericon/SWL_CLAY_PS.png | Bin 0 -> 1146 bytes .../images/map/layericon/SWL_CLAY_PS_RED.png | Bin 0 -> 468 bytes .../images/map/layericon/SWL_DEPT_PS.png | Bin 0 -> 1079 bytes .../images/map/layericon/SWL_MANH_PS.png | Bin 0 -> 1559 bytes .../map/layericon/SWL_MANH_PS_BLACK.png | Bin 0 -> 757 bytes .../images/map/layericon/SWL_MANH_PS_BLUE.png | Bin 0 -> 785 bytes .../images/map/layericon/SWL_MANH_PS_GRAY.png | Bin 0 -> 1054 bytes .../map/layericon/SWL_MANH_PS_GREEN.png | Bin 0 -> 791 bytes .../images/map/layericon/SWL_MANH_PS_RED.png | Bin 0 -> 782 bytes .../map/layericon/SWL_MANH_PS_YELLOW.png | Bin 0 -> 782 bytes .../images/map/layericon/SWL_SPEW_PS.png | Bin 0 -> 1217 bytes .../images/map/layericon/SWL_SPOT_PS.png | Bin 0 -> 1067 bytes .../map/layericon/SWL_SPOT_PS_BLACK.png | Bin 0 -> 217 bytes .../images/map/layericon/SWL_SPOT_PS_BLUE.png | Bin 0 -> 217 bytes .../map/layericon/SWL_SPOT_PS_GREEN.png | Bin 0 -> 217 bytes .../images/map/layericon/SWL_SPOT_PS_GREY.png | Bin 0 -> 217 bytes .../images/map/layericon/SWL_SPOT_PS_RED.png | Bin 0 -> 217 bytes .../images/map/layericon/SWL_VENT_PS.png | Bin 0 -> 1033 bytes .../images/map/layericon/TL_SPBD_ENTRC.png | Bin 0 -> 1260 bytes .../images/map/layericon/TL_SPGF_LOC.png | Bin 0 -> 1383 bytes .../images/map/layericon/TL_SPOT_NOIN.png | Bin 0 -> 1009 bytes .../images/map/layericon/TL_SPRD_BANO.png | Bin 0 -> 1044 bytes .../images/map/layericon/TL_SPRD_CRSRD.png | Bin 0 -> 1083 bytes .../images/map/layericon/TL_SPRD_NONM.png | Bin 0 -> 1049 bytes .../images/map/layericon/TL_SPRD_RENM.png | Bin 0 -> 1009 bytes .../images/map/layericon/TL_SPRD_RWNM.png | Bin 0 -> 1049 bytes .../images/map/layericon/UFL_BMAN_PS.png | Bin 0 -> 1552 bytes .../images/map/layericon/UFL_BOPC_PS.png | Bin 0 -> 1132 bytes .../images/map/layericon/UFL_BPIP_PS.png | Bin 0 -> 1017 bytes .../images/map/layericon/UFL_BPOL_PS.png | Bin 0 -> 1193 bytes .../images/map/layericon/UFL_BTRS_PS.png | Bin 0 -> 1097 bytes .../images/map/layericon/UFL_GMNT_PS.png | Bin 0 -> 1166 bytes .../images/map/layericon/UFL_GPIP_PS.png | Bin 0 -> 1103 bytes .../images/map/layericon/UFL_GPRS_PS.png | Bin 0 -> 1408 bytes .../images/map/layericon/UFL_GVAL_PS.png | Bin 0 -> 1426 bytes .../images/map/layericon/UFL_KMAN_PS.png | Bin 0 -> 1572 bytes .../images/map/layericon/UFL_KPOL_PS.png | Bin 0 -> 1122 bytes .../images/map/layericon/UFL_VALV_PS.png | Bin 0 -> 1058 bytes .../images/map/layericon/WTL_FIRE_PS.png | Bin 0 -> 1072 bytes .../images/map/layericon/WTL_FLOW_PS.png | Bin 0 -> 1137 bytes .../images/map/layericon/WTL_MANH_PS.png | Bin 0 -> 1557 bytes .../images/map/layericon/WTL_META_PS.png | Bin 0 -> 1100 bytes .../images/map/layericon/WTL_PIPE_PS.png | Bin 0 -> 1075 bytes .../images/map/layericon/WTL_RSRV_PS.png | Bin 0 -> 1057 bytes .../images/map/layericon/WTL_RSRV_PS_GRAY.png | Bin 0 -> 259 bytes .../images/map/layericon/WTL_VALV_PS.png | Bin 0 -> 1077 bytes .../public/images/map/layericon/default.png | Bin 0 -> 160 bytes apps/sn/public/images/map/layericon/reset.png | Bin 0 -> 108 bytes .../public/images/map/toolbar/arrow_down.png | Bin 0 -> 1532 bytes .../public/images/map/toolbar/arrow_right.png | Bin 0 -> 1931 bytes .../images/map/toolbar/backward_icon.png | Bin 0 -> 313 bytes .../images/map/toolbar/btn_cont_area.png | Bin 0 -> 1231 bytes .../images/map/toolbar/btn_cont_area_on.png | Bin 0 -> 1184 bytes .../images/map/toolbar/btn_cont_next.png | Bin 0 -> 1256 bytes .../images/map/toolbar/btn_cont_next_on.png | Bin 0 -> 1204 bytes .../images/map/toolbar/btn_cont_prev.png | Bin 0 -> 1265 bytes .../images/map/toolbar/btn_cont_prev_on.png | Bin 0 -> 1223 bytes .../images/map/toolbar/btn_cont_print.png | Bin 0 -> 1318 bytes .../images/map/toolbar/btn_cont_print_on.png | Bin 0 -> 1293 bytes .../images/map/toolbar/btn_cont_ruler.png | Bin 0 -> 1353 bytes .../images/map/toolbar/btn_cont_ruler_on.png | Bin 0 -> 1339 bytes .../images/map/toolbar/btn_cont_save.png | Bin 0 -> 1216 bytes .../images/map/toolbar/btn_cont_save_on.png | Bin 0 -> 1202 bytes .../images/map/toolbar/btn_cont_sketch.png | Bin 0 -> 15103 bytes .../images/map/toolbar/btn_cont_sketch_on.png | Bin 0 -> 14933 bytes .../images/map/toolbar/btn_cont_zoomin.png | Bin 0 -> 1456 bytes .../images/map/toolbar/btn_cont_zoomin_on.png | Bin 0 -> 1423 bytes .../images/map/toolbar/btn_cont_zoomout.png | Bin 0 -> 1395 bytes .../map/toolbar/btn_cont_zoomout_on.png | Bin 0 -> 1376 bytes .../images/map/toolbar/btn_edit_add.png | Bin 0 -> 1169 bytes .../images/map/toolbar/btn_edit_add_on.png | Bin 0 -> 1168 bytes .../images/map/toolbar/btn_edit_del.png | Bin 0 -> 1160 bytes .../images/map/toolbar/btn_edit_del_on.png | Bin 0 -> 1158 bytes .../images/map/toolbar/btn_edit_next.png | Bin 0 -> 1209 bytes .../images/map/toolbar/btn_edit_next_on.png | Bin 0 -> 1205 bytes .../images/map/toolbar/btn_edit_prev.png | Bin 0 -> 1172 bytes .../images/map/toolbar/btn_edit_prev_on.png | Bin 0 -> 1176 bytes .../images/map/toolbar/btn_edit_save.png | Bin 0 -> 1180 bytes .../images/map/toolbar/btn_edit_save_on.png | Bin 0 -> 1190 bytes .../images/map/toolbar/btn_edit_slt.png | Bin 0 -> 1288 bytes .../images/map/toolbar/btn_edit_slt_on.png | Bin 0 -> 1274 bytes .../images/map/toolbar/btn_edit_snap.png | Bin 0 -> 1185 bytes .../images/map/toolbar/btn_edit_snap_on.png | Bin 0 -> 1185 bytes .../public/images/map/toolbar/close_icon.png | Bin 0 -> 313 bytes .../images/map/toolbar/ico_gis_sprite.png | Bin 0 -> 7858 bytes .../images/map/toolbar/icon-viewclose.png | Bin 0 -> 2895 bytes .../images/map/toolbar/img_base_map.png | Bin 0 -> 4537 bytes .../images/map/toolbar/img_network_map.png | Bin 0 -> 4974 bytes .../images/map/toolbar/img_road_map.png | Bin 0 -> 6079 bytes .../images/map/toolbar/img_settle_map.png | Bin 0 -> 7264 bytes apps/sn/public/images/map/toolbar/loading.gif | Bin 0 -> 184974 bytes apps/sn/public/images/map/toolbar/map_pin.png | Bin 0 -> 2362 bytes .../public/images/map/toolbar/toggle_off.png | Bin 0 -> 1591 bytes .../public/images/map/toolbar/toggle_on.png | Bin 0 -> 1612 bytes .../business_components/src/ui/map/Gis.js | 159 +++ .../src/ui/map/GisContent.js | 61 + .../business_components/src/ui/map/GisEdit.js | 173 +++ .../src/ui/map/GisLonLat.js | 44 + .../src/ui/map/GisSearch.js | 9 + .../src/ui/map/GisSelect.js | 36 + .../src/ui/map/GisToolBar.js | 71 ++ .../business_components/src/ui/map/GisTree.js | 234 ++++ .../src/ui/map/Google3DMap.js | 60 + .../src/ui/map/MapToggleBtn.js | 32 + .../src/ui/map/lib/css/gis.common.css | 1037 +++++++++++++++++ .../src/ui/map/lib/css/gis.edit.css | 192 +++ .../src/ui/map/lib/css/gis.roadview.css | 7 + .../src/ui/map/lib/css/gis.sketch.css | 206 ++++ .../src/ui/map/lib/css/gis.tooltip.css | 35 + .../src/ui/map/lib/gis.core.js | 923 +++++++++++++++ .../src/ui/map/lib/gis.edit.js | 521 +++++++++ .../src/ui/map/lib/gis.layer.js | 557 +++++++++ .../src/ui/map/lib/gis.measure.js | 204 ++++ .../src/ui/map/lib/gis.select.js | 407 +++++++ .../src/ui/map/lib/gis.style.js | 402 +++++++ .../lib/images/marker/marker-icon-boon.png | Bin 0 -> 4504 bytes .../map/lib/images/marker/marker-icon-hab.png | Bin 0 -> 4633 bytes .../ui/map/lib/images/marker/marker-icon.png | Bin 0 -> 1466 bytes .../map/lib/images/toolbar/btn_cont_area.png | Bin 0 -> 1231 bytes .../lib/images/toolbar/btn_cont_area_on.png | Bin 0 -> 1184 bytes .../map/lib/images/toolbar/btn_cont_next.png | Bin 0 -> 1256 bytes .../lib/images/toolbar/btn_cont_next_on.png | Bin 0 -> 1204 bytes .../map/lib/images/toolbar/btn_cont_prev.png | Bin 0 -> 1265 bytes .../lib/images/toolbar/btn_cont_prev_on.png | Bin 0 -> 1223 bytes .../map/lib/images/toolbar/btn_cont_print.png | Bin 0 -> 1318 bytes .../lib/images/toolbar/btn_cont_print_on.png | Bin 0 -> 1293 bytes .../map/lib/images/toolbar/btn_cont_ruler.png | Bin 0 -> 1353 bytes .../lib/images/toolbar/btn_cont_ruler_on.png | Bin 0 -> 1339 bytes .../map/lib/images/toolbar/btn_cont_save.png | Bin 0 -> 1216 bytes .../lib/images/toolbar/btn_cont_save_on.png | Bin 0 -> 1202 bytes .../lib/images/toolbar/btn_cont_sketch.png | Bin 0 -> 15103 bytes .../lib/images/toolbar/btn_cont_sketch_on.png | Bin 0 -> 14933 bytes .../lib/images/toolbar/btn_cont_zoomin.png | Bin 0 -> 1456 bytes .../lib/images/toolbar/btn_cont_zoomin_on.png | Bin 0 -> 1423 bytes .../lib/images/toolbar/btn_cont_zoomout.png | Bin 0 -> 1395 bytes .../images/toolbar/btn_cont_zoomout_on.png | Bin 0 -> 1376 bytes .../map/lib/images/toolbar/btn_edit_add.png | Bin 0 -> 1169 bytes .../lib/images/toolbar/btn_edit_add_on.png | Bin 0 -> 1168 bytes .../map/lib/images/toolbar/btn_edit_del.png | Bin 0 -> 1160 bytes .../lib/images/toolbar/btn_edit_del_on.png | Bin 0 -> 1158 bytes .../map/lib/images/toolbar/btn_edit_next.png | Bin 0 -> 1209 bytes .../lib/images/toolbar/btn_edit_next_on.png | Bin 0 -> 1205 bytes .../map/lib/images/toolbar/btn_edit_prev.png | Bin 0 -> 1172 bytes .../lib/images/toolbar/btn_edit_prev_on.png | Bin 0 -> 1176 bytes .../map/lib/images/toolbar/btn_edit_save.png | Bin 0 -> 1180 bytes .../lib/images/toolbar/btn_edit_save_on.png | Bin 0 -> 1190 bytes .../map/lib/images/toolbar/btn_edit_slt.png | Bin 0 -> 1288 bytes .../lib/images/toolbar/btn_edit_slt_on.png | Bin 0 -> 1274 bytes .../map/lib/images/toolbar/btn_edit_snap.png | Bin 0 -> 1185 bytes .../lib/images/toolbar/btn_edit_snap_on.png | Bin 0 -> 1185 bytes .../map/lib/images/toolbar/ico_gis_sprite.png | Bin 0 -> 9217 bytes .../map/lib/images/toolbar/icon-viewclose.png | Bin 0 -> 2895 bytes .../ui/map/lib/images/toolbar/img_map1.png | Bin 0 -> 4537 bytes .../ui/map/lib/images/toolbar/img_map2.png | Bin 0 -> 7264 bytes .../ui/map/lib/images/toolbar/img_map3.png | Bin 0 -> 4974 bytes .../ui/map/lib/images/toolbar/img_map4.png | Bin 0 -> 6079 bytes .../src/ui/map/lib/images/toolbar/loading.gif | Bin 0 -> 184974 bytes .../src/ui/map/lib/images/toolbar/map_pin.png | Bin 0 -> 2362 bytes .../ui/map/lib/images/toolbar/toggle_off.png | Bin 0 -> 1591 bytes .../ui/map/lib/images/toolbar/toggle_on.png | Bin 0 -> 1612 bytes .../src/ui/map/lib/util.js | 596 ++++++++++ 187 files changed, 6067 insertions(+), 13 deletions(-) create mode 100644 apps/sn/app/map/page.tsx create mode 100644 apps/sn/app/service/map.ts create mode 100644 apps/sn/public/images/map/layericon/BML_CBAS_PS.png create mode 100644 apps/sn/public/images/map/layericon/BML_ELEV_PS.png create mode 100644 apps/sn/public/images/map/layericon/BML_ETCP_PS.png create mode 100644 apps/sn/public/images/map/layericon/BML_STMS_PS.png create mode 100644 apps/sn/public/images/map/layericon/BML_SYMB_PS.png create mode 100644 apps/sn/public/images/map/layericon/RDL_BYST_PS.png create mode 100644 apps/sn/public/images/map/layericon/RDL_CROS_PS.png create mode 100644 apps/sn/public/images/map/layericon/RDL_ETCT_PS.png create mode 100644 apps/sn/public/images/map/layericon/RDL_OCUP_PS.png create mode 100644 apps/sn/public/images/map/layericon/RDL_RDSN_PS.png create mode 100644 apps/sn/public/images/map/layericon/RDL_SCLT_PS.png create mode 100644 apps/sn/public/images/map/layericon/RDL_SEPC_PS.png create mode 100644 apps/sn/public/images/map/layericon/RDL_STAT_PS.png create mode 100644 apps/sn/public/images/map/layericon/RDL_STLT_PS.png create mode 100644 apps/sn/public/images/map/layericon/RDL_TFSN_PS.png create mode 100644 apps/sn/public/images/map/layericon/RDL_TRCT_PS.png create mode 100644 apps/sn/public/images/map/layericon/RDL_TREE_PS.png create mode 100644 apps/sn/public/images/map/layericon/RDL_TRSN_PS.png create mode 100644 apps/sn/public/images/map/layericon/RDL_TSCT_PS.png create mode 100644 apps/sn/public/images/map/layericon/SWL_CLAY_PS.png create mode 100644 apps/sn/public/images/map/layericon/SWL_CLAY_PS_RED.png create mode 100644 apps/sn/public/images/map/layericon/SWL_DEPT_PS.png create mode 100644 apps/sn/public/images/map/layericon/SWL_MANH_PS.png create mode 100644 apps/sn/public/images/map/layericon/SWL_MANH_PS_BLACK.png create mode 100644 apps/sn/public/images/map/layericon/SWL_MANH_PS_BLUE.png create mode 100644 apps/sn/public/images/map/layericon/SWL_MANH_PS_GRAY.png create mode 100644 apps/sn/public/images/map/layericon/SWL_MANH_PS_GREEN.png create mode 100644 apps/sn/public/images/map/layericon/SWL_MANH_PS_RED.png create mode 100644 apps/sn/public/images/map/layericon/SWL_MANH_PS_YELLOW.png create mode 100644 apps/sn/public/images/map/layericon/SWL_SPEW_PS.png create mode 100644 apps/sn/public/images/map/layericon/SWL_SPOT_PS.png create mode 100644 apps/sn/public/images/map/layericon/SWL_SPOT_PS_BLACK.png create mode 100644 apps/sn/public/images/map/layericon/SWL_SPOT_PS_BLUE.png create mode 100644 apps/sn/public/images/map/layericon/SWL_SPOT_PS_GREEN.png create mode 100644 apps/sn/public/images/map/layericon/SWL_SPOT_PS_GREY.png create mode 100644 apps/sn/public/images/map/layericon/SWL_SPOT_PS_RED.png create mode 100644 apps/sn/public/images/map/layericon/SWL_VENT_PS.png create mode 100644 apps/sn/public/images/map/layericon/TL_SPBD_ENTRC.png create mode 100644 apps/sn/public/images/map/layericon/TL_SPGF_LOC.png create mode 100644 apps/sn/public/images/map/layericon/TL_SPOT_NOIN.png create mode 100644 apps/sn/public/images/map/layericon/TL_SPRD_BANO.png create mode 100644 apps/sn/public/images/map/layericon/TL_SPRD_CRSRD.png create mode 100644 apps/sn/public/images/map/layericon/TL_SPRD_NONM.png create mode 100644 apps/sn/public/images/map/layericon/TL_SPRD_RENM.png create mode 100644 apps/sn/public/images/map/layericon/TL_SPRD_RWNM.png create mode 100644 apps/sn/public/images/map/layericon/UFL_BMAN_PS.png create mode 100644 apps/sn/public/images/map/layericon/UFL_BOPC_PS.png create mode 100644 apps/sn/public/images/map/layericon/UFL_BPIP_PS.png create mode 100644 apps/sn/public/images/map/layericon/UFL_BPOL_PS.png create mode 100644 apps/sn/public/images/map/layericon/UFL_BTRS_PS.png create mode 100644 apps/sn/public/images/map/layericon/UFL_GMNT_PS.png create mode 100644 apps/sn/public/images/map/layericon/UFL_GPIP_PS.png create mode 100644 apps/sn/public/images/map/layericon/UFL_GPRS_PS.png create mode 100644 apps/sn/public/images/map/layericon/UFL_GVAL_PS.png create mode 100644 apps/sn/public/images/map/layericon/UFL_KMAN_PS.png create mode 100644 apps/sn/public/images/map/layericon/UFL_KPOL_PS.png create mode 100644 apps/sn/public/images/map/layericon/UFL_VALV_PS.png create mode 100644 apps/sn/public/images/map/layericon/WTL_FIRE_PS.png create mode 100644 apps/sn/public/images/map/layericon/WTL_FLOW_PS.png create mode 100644 apps/sn/public/images/map/layericon/WTL_MANH_PS.png create mode 100644 apps/sn/public/images/map/layericon/WTL_META_PS.png create mode 100644 apps/sn/public/images/map/layericon/WTL_PIPE_PS.png create mode 100644 apps/sn/public/images/map/layericon/WTL_RSRV_PS.png create mode 100644 apps/sn/public/images/map/layericon/WTL_RSRV_PS_GRAY.png create mode 100644 apps/sn/public/images/map/layericon/WTL_VALV_PS.png create mode 100644 apps/sn/public/images/map/layericon/default.png create mode 100644 apps/sn/public/images/map/layericon/reset.png create mode 100644 apps/sn/public/images/map/toolbar/arrow_down.png create mode 100644 apps/sn/public/images/map/toolbar/arrow_right.png create mode 100644 apps/sn/public/images/map/toolbar/backward_icon.png create mode 100644 apps/sn/public/images/map/toolbar/btn_cont_area.png create mode 100644 apps/sn/public/images/map/toolbar/btn_cont_area_on.png create mode 100644 apps/sn/public/images/map/toolbar/btn_cont_next.png create mode 100644 apps/sn/public/images/map/toolbar/btn_cont_next_on.png create mode 100644 apps/sn/public/images/map/toolbar/btn_cont_prev.png create mode 100644 apps/sn/public/images/map/toolbar/btn_cont_prev_on.png create mode 100644 apps/sn/public/images/map/toolbar/btn_cont_print.png create mode 100644 apps/sn/public/images/map/toolbar/btn_cont_print_on.png create mode 100644 apps/sn/public/images/map/toolbar/btn_cont_ruler.png create mode 100644 apps/sn/public/images/map/toolbar/btn_cont_ruler_on.png create mode 100644 apps/sn/public/images/map/toolbar/btn_cont_save.png create mode 100644 apps/sn/public/images/map/toolbar/btn_cont_save_on.png create mode 100644 apps/sn/public/images/map/toolbar/btn_cont_sketch.png create mode 100644 apps/sn/public/images/map/toolbar/btn_cont_sketch_on.png create mode 100644 apps/sn/public/images/map/toolbar/btn_cont_zoomin.png create mode 100644 apps/sn/public/images/map/toolbar/btn_cont_zoomin_on.png create mode 100644 apps/sn/public/images/map/toolbar/btn_cont_zoomout.png create mode 100644 apps/sn/public/images/map/toolbar/btn_cont_zoomout_on.png create mode 100644 apps/sn/public/images/map/toolbar/btn_edit_add.png create mode 100644 apps/sn/public/images/map/toolbar/btn_edit_add_on.png create mode 100644 apps/sn/public/images/map/toolbar/btn_edit_del.png create mode 100644 apps/sn/public/images/map/toolbar/btn_edit_del_on.png create mode 100644 apps/sn/public/images/map/toolbar/btn_edit_next.png create mode 100644 apps/sn/public/images/map/toolbar/btn_edit_next_on.png create mode 100644 apps/sn/public/images/map/toolbar/btn_edit_prev.png create mode 100644 apps/sn/public/images/map/toolbar/btn_edit_prev_on.png create mode 100644 apps/sn/public/images/map/toolbar/btn_edit_save.png create mode 100644 apps/sn/public/images/map/toolbar/btn_edit_save_on.png create mode 100644 apps/sn/public/images/map/toolbar/btn_edit_slt.png create mode 100644 apps/sn/public/images/map/toolbar/btn_edit_slt_on.png create mode 100644 apps/sn/public/images/map/toolbar/btn_edit_snap.png create mode 100644 apps/sn/public/images/map/toolbar/btn_edit_snap_on.png create mode 100644 apps/sn/public/images/map/toolbar/close_icon.png create mode 100644 apps/sn/public/images/map/toolbar/ico_gis_sprite.png create mode 100644 apps/sn/public/images/map/toolbar/icon-viewclose.png create mode 100644 apps/sn/public/images/map/toolbar/img_base_map.png create mode 100644 apps/sn/public/images/map/toolbar/img_network_map.png create mode 100644 apps/sn/public/images/map/toolbar/img_road_map.png create mode 100644 apps/sn/public/images/map/toolbar/img_settle_map.png create mode 100644 apps/sn/public/images/map/toolbar/loading.gif create mode 100644 apps/sn/public/images/map/toolbar/map_pin.png create mode 100644 apps/sn/public/images/map/toolbar/toggle_off.png create mode 100644 apps/sn/public/images/map/toolbar/toggle_on.png create mode 100644 packages/common/business_components/src/ui/map/Gis.js create mode 100644 packages/common/business_components/src/ui/map/GisContent.js create mode 100644 packages/common/business_components/src/ui/map/GisEdit.js create mode 100644 packages/common/business_components/src/ui/map/GisLonLat.js create mode 100644 packages/common/business_components/src/ui/map/GisSearch.js create mode 100644 packages/common/business_components/src/ui/map/GisSelect.js create mode 100644 packages/common/business_components/src/ui/map/GisToolBar.js create mode 100644 packages/common/business_components/src/ui/map/GisTree.js create mode 100644 packages/common/business_components/src/ui/map/Google3DMap.js create mode 100644 packages/common/business_components/src/ui/map/MapToggleBtn.js create mode 100644 packages/common/business_components/src/ui/map/lib/css/gis.common.css create mode 100644 packages/common/business_components/src/ui/map/lib/css/gis.edit.css create mode 100644 packages/common/business_components/src/ui/map/lib/css/gis.roadview.css create mode 100644 packages/common/business_components/src/ui/map/lib/css/gis.sketch.css create mode 100644 packages/common/business_components/src/ui/map/lib/css/gis.tooltip.css create mode 100644 packages/common/business_components/src/ui/map/lib/gis.core.js create mode 100644 packages/common/business_components/src/ui/map/lib/gis.edit.js create mode 100644 packages/common/business_components/src/ui/map/lib/gis.layer.js create mode 100644 packages/common/business_components/src/ui/map/lib/gis.measure.js create mode 100644 packages/common/business_components/src/ui/map/lib/gis.select.js create mode 100644 packages/common/business_components/src/ui/map/lib/gis.style.js create mode 100644 packages/common/business_components/src/ui/map/lib/images/marker/marker-icon-boon.png create mode 100644 packages/common/business_components/src/ui/map/lib/images/marker/marker-icon-hab.png create mode 100644 packages/common/business_components/src/ui/map/lib/images/marker/marker-icon.png create mode 100644 packages/common/business_components/src/ui/map/lib/images/toolbar/btn_cont_area.png create mode 100644 packages/common/business_components/src/ui/map/lib/images/toolbar/btn_cont_area_on.png create mode 100644 packages/common/business_components/src/ui/map/lib/images/toolbar/btn_cont_next.png create mode 100644 packages/common/business_components/src/ui/map/lib/images/toolbar/btn_cont_next_on.png create mode 100644 packages/common/business_components/src/ui/map/lib/images/toolbar/btn_cont_prev.png create mode 100644 packages/common/business_components/src/ui/map/lib/images/toolbar/btn_cont_prev_on.png create mode 100644 packages/common/business_components/src/ui/map/lib/images/toolbar/btn_cont_print.png create mode 100644 packages/common/business_components/src/ui/map/lib/images/toolbar/btn_cont_print_on.png create mode 100644 packages/common/business_components/src/ui/map/lib/images/toolbar/btn_cont_ruler.png create mode 100644 packages/common/business_components/src/ui/map/lib/images/toolbar/btn_cont_ruler_on.png create mode 100644 packages/common/business_components/src/ui/map/lib/images/toolbar/btn_cont_save.png create mode 100644 packages/common/business_components/src/ui/map/lib/images/toolbar/btn_cont_save_on.png create mode 100644 packages/common/business_components/src/ui/map/lib/images/toolbar/btn_cont_sketch.png create mode 100644 packages/common/business_components/src/ui/map/lib/images/toolbar/btn_cont_sketch_on.png create mode 100644 packages/common/business_components/src/ui/map/lib/images/toolbar/btn_cont_zoomin.png create mode 100644 packages/common/business_components/src/ui/map/lib/images/toolbar/btn_cont_zoomin_on.png create mode 100644 packages/common/business_components/src/ui/map/lib/images/toolbar/btn_cont_zoomout.png create mode 100644 packages/common/business_components/src/ui/map/lib/images/toolbar/btn_cont_zoomout_on.png create mode 100644 packages/common/business_components/src/ui/map/lib/images/toolbar/btn_edit_add.png create mode 100644 packages/common/business_components/src/ui/map/lib/images/toolbar/btn_edit_add_on.png create mode 100644 packages/common/business_components/src/ui/map/lib/images/toolbar/btn_edit_del.png create mode 100644 packages/common/business_components/src/ui/map/lib/images/toolbar/btn_edit_del_on.png create mode 100644 packages/common/business_components/src/ui/map/lib/images/toolbar/btn_edit_next.png create mode 100644 packages/common/business_components/src/ui/map/lib/images/toolbar/btn_edit_next_on.png create mode 100644 packages/common/business_components/src/ui/map/lib/images/toolbar/btn_edit_prev.png create mode 100644 packages/common/business_components/src/ui/map/lib/images/toolbar/btn_edit_prev_on.png create mode 100644 packages/common/business_components/src/ui/map/lib/images/toolbar/btn_edit_save.png create mode 100644 packages/common/business_components/src/ui/map/lib/images/toolbar/btn_edit_save_on.png create mode 100644 packages/common/business_components/src/ui/map/lib/images/toolbar/btn_edit_slt.png create mode 100644 packages/common/business_components/src/ui/map/lib/images/toolbar/btn_edit_slt_on.png create mode 100644 packages/common/business_components/src/ui/map/lib/images/toolbar/btn_edit_snap.png create mode 100644 packages/common/business_components/src/ui/map/lib/images/toolbar/btn_edit_snap_on.png create mode 100644 packages/common/business_components/src/ui/map/lib/images/toolbar/ico_gis_sprite.png create mode 100644 packages/common/business_components/src/ui/map/lib/images/toolbar/icon-viewclose.png create mode 100644 packages/common/business_components/src/ui/map/lib/images/toolbar/img_map1.png create mode 100644 packages/common/business_components/src/ui/map/lib/images/toolbar/img_map2.png create mode 100644 packages/common/business_components/src/ui/map/lib/images/toolbar/img_map3.png create mode 100644 packages/common/business_components/src/ui/map/lib/images/toolbar/img_map4.png create mode 100644 packages/common/business_components/src/ui/map/lib/images/toolbar/loading.gif create mode 100644 packages/common/business_components/src/ui/map/lib/images/toolbar/map_pin.png create mode 100644 packages/common/business_components/src/ui/map/lib/images/toolbar/toggle_off.png create mode 100644 packages/common/business_components/src/ui/map/lib/images/toolbar/toggle_on.png create mode 100644 packages/common/business_components/src/ui/map/lib/util.js diff --git a/apps/sn/app/map/page.tsx b/apps/sn/app/map/page.tsx new file mode 100644 index 000000000..4da5c0d23 --- /dev/null +++ b/apps/sn/app/map/page.tsx @@ -0,0 +1,36 @@ +'use client' + +import Gis from '@common/business_components/ui/map/Gis'; +import { SearchDiv, SelectBox, UiTable, MainDiv, Title, ContentsDiv, SearchFormLeft, SearchFormRight } from '@common/business_components'; +import ListDiv from '@common/business_components/ui/list_div'; +import { Button, Input } from '@common/components'; +import { useEffect, useState } from "react"; +import { mapService } from "@service"; + +const Map = () => { + + const [treeData, setTreeData] = useState([]); // 초기값을 객체 또는 null로 설정 + + + const fetchData = async () => { + try { + const response = await mapService.getLyrStngs(); + setTreeData(response.data); // API 응답 저장 + } catch (error) { + console.error("데이터 불러오기 실패:", error); + } + }; + + // 컴포넌트 마운트 시 1회 실행 + useEffect(() => { + fetchData(); + }, []); + + return ( +
+ +
+ ); +}; + +export default Map; diff --git a/apps/sn/app/oper/pplines/page.tsx b/apps/sn/app/oper/pplines/page.tsx index b5b64b003..48621bddc 100644 --- a/apps/sn/app/oper/pplines/page.tsx +++ b/apps/sn/app/oper/pplines/page.tsx @@ -1,5 +1,5 @@ 'use client' - +import "@common/assets/styles/grid.css"; import { useEffect, useState } from "react"; import { SearchDiv, SelectBox, UiTable, MainDiv, Title, ContentsDiv, SearchFormLeft, SearchFormRight } from '@common/business_components'; import ListDiv from '@common/business_components/ui/list_div'; diff --git a/apps/sn/app/service/index.ts b/apps/sn/app/service/index.ts index 5052b7321..fda21d232 100644 --- a/apps/sn/app/service/index.ts +++ b/apps/sn/app/service/index.ts @@ -1 +1,2 @@ export * from './ppline' +export * from './map' diff --git a/apps/sn/app/service/map.ts b/apps/sn/app/service/map.ts new file mode 100644 index 000000000..062cfeedb --- /dev/null +++ b/apps/sn/app/service/map.ts @@ -0,0 +1,37 @@ + +import axios from 'axios' + +/** + * 관망도 API + */ +const API_URL = `${process.env.NEXT_PUBLIC_SEWERAGE_API_URL}/v1/map` + +export type LyrStngProps = { + lyr_sn: string + lyr_nm: string + upper_lyr_sn: string + drawOrdr: string + flterSql: string + gobjTy: string + lyrTpNm: string + useYn: string + minViewSize: string + iconNm: string + lblAtrbNm: string + fontNm: string + fontIntnColor: string + fontExtnColor: string + fontExtnWdth: string + lnWdth: string + lnColor: string + polgnColor: string + initEprssYn: string + clickPsblYn: string +} + +export const mapService = { + //레이어 설정 조회 + getLyrStngs: () => { + return axios.get(`${API_URL}/lyrStngs`) + } +} diff --git a/apps/sn/app/service/ppline.ts b/apps/sn/app/service/ppline.ts index 7bc7b4408..33e4c9871 100644 --- a/apps/sn/app/service/ppline.ts +++ b/apps/sn/app/service/ppline.ts @@ -2,10 +2,9 @@ import axios from 'axios' /** - * 하수관로 API URL + * 하수관로 API */ -const API_URL = process.env.NEXT_PUBLIC_SEWERAGE_API_URL -const PPLINES_URL = `${API_URL}/v1/pplines` +const API_URL = `${process.env.NEXT_PUBLIC_SEWERAGE_API_URL}/v1/pplines` const PAGE_NO = 1 const PAGE_SIZE = 20 @@ -16,23 +15,25 @@ export type PplineProps = { sttyEmd: string } -/** - * 하수관로 서비스 - */ export const pplinesService = { + //목록 getPplines: (size: number = PAGE_SIZE, page: number = PAGE_NO) => { - return axios.get(`${PPLINES_URL}`) + return axios.get(`${API_URL}`) }, + //상세 getPpline: (swageLnkgPplPk: string) => { - return axios.get(`${PPLINES_URL}/${swageLnkgPplPk}`) + return axios.get(`${API_URL}/${swageLnkgPplPk}`) }, + //저장 savePpline: (swageLnkgPplPk: string) => { - return axios.post(`${PPLINES_URL}`) + return axios.post(`${API_URL}`) }, + //수정 updatePpline: (swageLnkgPplPk: string) => { - return axios.put(`${PPLINES_URL}/${swageLnkgPplPk}`) + return axios.put(`${API_URL}/${swageLnkgPplPk}`) }, + //삭제 removePpline: (swageLnkgPplPk: string) => { - return axios.delete(`${PPLINES_URL}/${swageLnkgPplPk}`) + return axios.delete(`${API_URL}/${swageLnkgPplPk}`) } } diff --git a/apps/sn/next.config.ts b/apps/sn/next.config.ts index e181f70cf..bc9505fef 100644 --- a/apps/sn/next.config.ts +++ b/apps/sn/next.config.ts @@ -1,6 +1,8 @@ import type { NextConfig } from "next"; import webpack from "webpack"; +const geoserverUrl = process.env.NEXT_PUBLIC_GEOSERVER_URL?.replace(/\/$/, '') ?? ''; + const nextConfig: NextConfig = { basePath: "/sn", typescript: { @@ -40,6 +42,14 @@ const nextConfig: NextConfig = { return config; }, + async rewrites() { + return [ + { + source: '/geoserver/:hasudo*', + destination: `${geoserverUrl}/:hasudo*`, + }, + ]; + }, }; export default nextConfig; diff --git a/apps/sn/package.json b/apps/sn/package.json index ddae226e0..29f630648 100644 --- a/apps/sn/package.json +++ b/apps/sn/package.json @@ -27,7 +27,10 @@ "react-hook-form": "^7.54.2", "tailwindcss-animate": "^1.0.7", "zod": "^3.24.2", - "zustand": "^5.0.3" + "zustand": "^5.0.3", + "ol": "^7.3.0", + "ol-ext": "^4.0.11", + "proj4": "^2.9.0" }, "devDependencies": { "@eslint/eslintrc": "^3", diff --git a/apps/sn/public/images/map/layericon/BML_CBAS_PS.png b/apps/sn/public/images/map/layericon/BML_CBAS_PS.png new file mode 100644 index 0000000000000000000000000000000000000000..5ff4add3ef67899ca56ef065952b919b8426d086 GIT binary patch literal 1547 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+n3Xa^B1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`f(~1RD^r68eAMwS&*t9 zlvv ztM~P_^2{qPNz6-5^>ndS0-B(gnVDi`$o& z6x?pH#Hm*w=oo!a#3DsBObD2IKumbD1#;jCKQ#}S+KYh6+H&5{UIqrHdQTU}kcwM# zCdYbA4wN|lzxuh^-KyftM`9}$b|eHj#ydx=Nojj7R_fibWOhtktBRwzr;AGL6JLcX zP9asojgm^Nvyv>YoZNEAS66w8U5Los;>%~ht$SX1yNy%n%YpY#=RBYD{eR7zVv*&a zHg7yw)KPTEN8<3l%tLM_g0*X7YcHPdDrJgV)VE?sNS)uzi4)u2J~Hz-$nY#Z{b5O+ zn|F2jglp2BSwbJzieC`a_ZJb3;`&^C;m;P%xwd6GyY5cNP>d5PEO@UsWuC6v_uqA2 ztlg|m)V8_oF?{%<)YbL4?(SgT9XV^8jz4d=GUMYsCQ?~=c0bqc2kI7fy9%~0;^Ao3 z`RnX=Zd=fT{>}|zGDZ)d-L3kexg^7*Ma_@fQ6Qz_jGbq|BgbUpPoIh+uUG9-IKJeJ zkN3)jv-tO9Wgb5Agg?Wzc8g~tflT*nqwc24D_r^eK(M07myPQdht9O1E(DK!JCiZNB zzeiH|raMOx65h_&*cMm)<@t$<#hNS+^COS+R2N!$F45U>`_2aQz0QG*+fLXNDYaDy zde2LpcWy(^SyL;u`NavPsi);W%v-$krbKb?sgs)yJid0_cHw8$;{vP29>hoX2aQPz!58&o`d My85}Sb4q9e0Czo2EdT%j literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/layericon/BML_ELEV_PS.png b/apps/sn/public/images/map/layericon/BML_ELEV_PS.png new file mode 100644 index 0000000000000000000000000000000000000000..83970a3311924d9ae070ef863066a89d337b9ced GIT binary patch literal 1030 zcmaJ=O=#0#7!J-&H=Oh5qB14R5EX3xnr3ZS99`47f|;c&tQ+Xel5cI;k}pfX*{mSq zK(HP}$G{1C5cQ}>FT&gof)g+5%^y4ndKjXhh)2J4ZRf!nl6*fr&-1?D`#xVeJ#@0Y z?LZqr5bdc!C4}dC39#PPNJgb0wQj}2|%VSEe|q4Gv;R2KrcZw zQD!!Wa_T8bhZd~`7}~cS%qEE5KHt&wDS*fckT-3a`u5~0MVf|8jYL#dbrPUp4whUn zTpG&ir71mTP<Ae$+H~Ku=o{2oFGL+iSHq+4~3(-#-x-{2CA{}N~Q`3ITFJZi$%H^ zrlFf>xL7O}Xz+XpBSPMsjWj=Gd)+k!1$eq^I>>}J87OKKa2ClF&UE7lmQ$Cty=s|o z!5Ck27>;IxBh`Sa`hTcp)zKcxfX#gWDePtE9Kd9N2WMR!H*T^!2<1o#7ib8&SqP_V zRZJHkf?feSWMWt(kB*qO0gK+T3SL#El@H^S~Hzp+#1XESZgS>1n7} z|c$pZDIEW)4FZ(qHcU(W4F85)>pg6^Y}`XQc67Qzg=8-*GhEl z*!szpb4$(T=Fz1y@8_M4z4tyJX?=NxZrN=~p3x%oe+21+&n literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/layericon/BML_ETCP_PS.png b/apps/sn/public/images/map/layericon/BML_ETCP_PS.png new file mode 100644 index 0000000000000000000000000000000000000000..df9e4957ba7412d8684ee344371ee72728a40899 GIT binary patch literal 961 zcmaJ=zi-n(7&Q$8tyBrYQkYIo2at$=#dZ@brfPi&jfATxv6PH;>}z5r_8I$voeqV< z0NsF*m7R$NF@O*YLnS1{!o@n9pC$mDh!ijJ*z`H=3ULf zK4)hbF7-poW|+!m8rseP5zs|FFVNXv@7}Y(b9J_@n1UG^sPF9@M5uMJYdHr4r|hzu zw?QS}gURvjGeoA)s)@f+L6`P*qNp6;%~) z0Z9-gUZAg95M@nKHE9D(AC^Xo+B;k@Ghoc@ZmdoW#Ly`&< zQHaL@vC~2j=VuBK#ZKgf#KQr|6zwh^5uK%(o*uyu=dwXOEfXympV}cWazb{b8PGKU z5B2>yIwnnYmhZX3u{916-$XGUMGkG;em)BoYDR=?f+Gv#;jD^{J|;Ns;}94v72Ifh zfs2#)<^*q=T0Mw~9XO~Cb(Sh{p66;Mp|&Ln5|owVhA39$vLM4!8J22>3^!y!m~kO? zMm`G2jO(6ps|&fA75tD!hA8sxBexb|A54y{d5d$|UZ^+ax{Gr$7IJx-44*ajpGMEN zsC%;M+_rQvH$Doe+aqf0C*Rb^^hzjoxMii^yT3P&j@Cacefo0+KDAEX{8+u3JASx) t!h9UQuyPmjU%tLNTw6ZeTUW-pi)+l=m;BEM?Vg!ks(N)7zTVz@^cR&XC_w-K literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/layericon/BML_STMS_PS.png b/apps/sn/public/images/map/layericon/BML_STMS_PS.png new file mode 100644 index 0000000000000000000000000000000000000000..423f2e8fcb87d6c1b9192d1547a4cf97c3bb7292 GIT binary patch literal 1542 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+n3Xa^B1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`f(~1RD^r68eAMwS&*t9 zlvv ztM~P_^2{qPNz6-5^>ndS0-B(gnVDkc?Br}XH{644~kf%h=vIPQxAv!Z9mxW?6};@ zEo2|D%REmdk7w!IEnAsXx3Fee%g-}U76loozD!P z&)&Lq>vfBCkG(7`X&G_Lf*+s096UWhW9E%h;$|vw%~()q&4|I^Q@J~*G4D0Fh-ibWa?D}1IL z51*v6Bq*7&YTk!CH|nJ>%zXC!xsRIdY>y*~lO3j=&^@SJFq1VhVC9tnohe>l^nO*X zPnWL4S3e!)m$$clI?+9yv+1q9 z*{4e3_h$DN<(4m4J!?M0E|$|ij}FdN)#zfs_*bZgY4=sDBp2q})uC5rm1=ByboJdl z4oOayi!VzOt?$;mghbZQ`F8Kc3kw;yU3SLpZofGuJ+6AWS}R$@h)0*f*HnPlo#mZa zVdSe1!6_edtg0)s3{(zoGqu^X_eG->i}{RD4GRY41&6okY|)*q%AvciH|O7ve@!<; z9XA-woavCdymN6H^VUyh{3qjfojsf!BVmxh!!o0{)g_C`O{3{bg_KIf2h)PO>--B| zvZ<+0iiof8uQ}MVj8kwWqkQ*7VP(TL&+-z!A2_srZf)b%KiyAuP3k&0q0y_9{rFox zrd@uHp_4S`nU?gb-qe_7I&I14c^MYBSwknL=H!MamP>c=x+`vEeq{D5w?u~hVSvEz zuU4gr?rloTWkpWE+rB>DZ+(f4+~>6Yfm-4_#s0os7x9nFfMHhRx5p)mI~zeIv!|<{ J%Q~loCIHG1Mo<6% literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/layericon/BML_SYMB_PS.png b/apps/sn/public/images/map/layericon/BML_SYMB_PS.png new file mode 100644 index 0000000000000000000000000000000000000000..497589bea2f5a6aa1ee6c8f4756a96a4ec8b6bf7 GIT binary patch literal 970 zcmaJ=O>5LZ7!DMr6beE;XfKYl2o>CXZ8mm?rfZvI+ZD5v?Lya!G@DF!Lz~PrnY!76 zSiSi(`~md`sL&NW)RR~7CVKPW!K+Xw+uf~)t|7^M@I24^&ig*|YNNI`J2O8c2*PZ2 z-Kz8PTJ}v}<^Nm1&s;v-WOkEnk{#A{V=S!rq=i8>blbR&UB9>g2`>r46bu?o)^r{r zkA$L|VZ=0~oGl1T<&?VKE@q&G+d*W&U++#J2z&!>6&=~3Chi35hcVtftTnvDU9aTB z@-kRT5f=zCb3q#JMF~m`IM79Wo^4AI3?OXRfaggyoef};7=xl%$a}J)09_Xqt*GnD zJ)p{pD#`rS^NNOwI#Tb0;RAWJ*xx~Qt1^tmR|f1bMv)|SyIrwc5J}vYlv1gbX{c(R zBl1ZvVs4s`lH5qa!ig6Llm#RLnWEbw2h4yx)AJ*QbSxVs!!q%LNvTUEMU=B6jew5x ze`pwv(Fv>Li+nE?P8vOmr8-W?LG1Cy?c}mh6qzx08HpQ&?2W3p(IJc^9YTS*se^^B zAo58!xjVo+4yr~8b0ZH|Edz1|F$jF5n59+Iv}LWRX^LWNEB0!^UepR^MJ;K%x;Wxm z#5)La#712Ig3H@9fty(&q&%{P%BV~>K zr_rM=?w)Kqwk=yNSre)!A4}Si+a6FgYuBu(L-mGrF F{0katFXsRN literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/layericon/RDL_BYST_PS.png b/apps/sn/public/images/map/layericon/RDL_BYST_PS.png new file mode 100644 index 0000000000000000000000000000000000000000..1e78cba6874b6dd9f8f3d1ce95a120e0ec52dd5e GIT binary patch literal 1196 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+n3Xa^B1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`f(~1RD^r68eAMwS&*t9 zlvv ztM~P_^2{qPNz6-5^>ndS0-B(gnVDi`Vr*gN=xSkTV&ZIRXy|HU;pXCG>E>i^;OJuN zH{644~kf%h=vIPQxAvIJCflpNy)(IT{C~%tb#?nlypKc4j32kqDx;@2v0ppbYTLR2w=B#nrQhxMN z0~6ou_h|hk2c&?`pw(~ZH5-Rb%% z>W_l_=KW`mR7zYRop6!M=Ak)1)?9S%C(mwwxC`_SR{9qWy( z>`Nzha87l7^inrrRmIZD+()1IyuQV;=ZLbNYoCeyqW;5N`DTH>;l?gXf-{%Me3a78 zU#$Fl&YwHVmoH8<&Uno@^U2T=Lp>FVdQ I&MBb@01j)NZvX%Q literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/layericon/RDL_CROS_PS.png b/apps/sn/public/images/map/layericon/RDL_CROS_PS.png new file mode 100644 index 0000000000000000000000000000000000000000..57b5f2ca51d03eb08728f311091e33ba37747c4f GIT binary patch literal 1083 zcmaJ=T}TvB7#$Kz{443Dg6K98CA2#;yX)vqZlXK8?nWcFyP!dV>bp*LIYk zh<*rs2`mW0iU@0a5zcpcp&Y>KL`aZFiBLkwDByJm#wuMfv)ps69csX}5UGYmVl zSdRshJq;0-3wp3=I|_I31!FlWLY4K^R#O zRCxU!h2=QF^Ik4c!SmcM;A1%-!;+WxZ~>u$7krgq>7hw9OKlSpVst4MS%v5hj7@=I zGMS7wdaQLu>)abcOVmllRVhjq!}v8*yRg&NfP3Qjb%fDaWO;_1+S*50vq-P{FPN= zAP}zQxJV!v;H#?GfUhnb^>ds*nB|H{>C&Nrvs`tB8_CIat)QDEvIs5h2vnmM(!s)! z1ub_jbvgBxxN7cP!a2DNNrrJ7`&Xm0Tf{x?blJ9Kv21*35Vu>z)(>9$zL6_&J1*9y zoar~onUV=mJbd%$z2fu~Y$<&TipFc!4;2^PABhd`+`e~uZeYiOyRUwHIs?kC-a3%p zesbtE7p<-S@Yuj*1NoQi%SA8k`9o{o{gnIfT+tKhUvuXZsr2>4i&)=4|J%G%qhrsM zgV*xQpG@rU9m$+yKTf{ypV}~yoV*y_{kfisK8hTldOR~xcY*hxZ0tQX8kN!<`(?J^ lhPG<1=9s*;mmi$nI!?vb^=)?A=1bk{9FH`JgLN$@{s3DZXz>65 literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/layericon/RDL_ETCT_PS.png b/apps/sn/public/images/map/layericon/RDL_ETCT_PS.png new file mode 100644 index 0000000000000000000000000000000000000000..29c0b77b4ee74276df8de9416fe284e4c8bc15ec GIT binary patch literal 1016 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 literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/layericon/RDL_STAT_PS.png b/apps/sn/public/images/map/layericon/RDL_STAT_PS.png new file mode 100644 index 0000000000000000000000000000000000000000..13d8ea6899c02aa0d0917b630ca9f697783fd6ff GIT binary patch literal 1075 zcmaJ=&rj1(9512<`H{#)kqa+fOw_P--MZ=;1{vKZiMjYDVVY{1~JIMQOyX^pH}bFKvP5XU_kOprU zru$RM^q3M<>7H)TRS<}P4zUah`nX{Wg%G`?E0Dc&%+O#5g2zJiZcu3{0Yqd$5b*fj zikD>p&wE%d!1HV;@OfDu<0UWeW;r3i3%=7}@1cn|OC1rCk=ULuVuk1|#-_k9`F!4! z_j`~v%CNy;(9!Vu+yvparwl9?+=lI{C`6#GSel77WB^A|&Y&C)(InE{6m+vHYuI~b zA_Zd#vdOR>uai;*C`tc^>UtGz<0SkO?>~j@)RYOCB(zb^Qb^-QT#hSK5G^QUWTg-q zuT(LSMHtyxWCC%32PXzKLq&P}GZk(GDLEY)xWZNcaQT{CXB2dkc#c3zn}ll2LOR$|c$p9Fgg9w$-sEMs@I^L8jdzV}1OY-y&DyRy-0;6<%ew%H^JV zzVupXjlM;>ZWo{HyvOCIS2I^-|6J?Z0Wkk`VB^ijLzBFB=EJsl<;(3=cId&}xjPGs zpsi_Q`Qf|pQtxK_1*XV#|N6FYsjW08nU6nin%`GDdOo)o{msL(3qL#dFVEMxR;76pH}7 QeD7T2c(gyV)H{6nH~m6mg#Z8m literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/layericon/RDL_STLT_PS.png b/apps/sn/public/images/map/layericon/RDL_STLT_PS.png new file mode 100644 index 0000000000000000000000000000000000000000..489524b5c4cd57a22db674f7ad8897be209f617b GIT binary patch literal 1089 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 literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/layericon/RDL_TRSN_PS.png b/apps/sn/public/images/map/layericon/RDL_TRSN_PS.png new file mode 100644 index 0000000000000000000000000000000000000000..15675cb315243b6ee8ea7977c337e3387ddcb6d5 GIT binary patch literal 1375 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 literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/layericon/SWL_CLAY_PS_RED.png b/apps/sn/public/images/map/layericon/SWL_CLAY_PS_RED.png new file mode 100644 index 0000000000000000000000000000000000000000..0e5450688f9dda207fc2f3679b15d7b2a3e3c982 GIT binary patch literal 468 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 Ao&W#< literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/layericon/SWL_MANH_PS_GRAY.png b/apps/sn/public/images/map/layericon/SWL_MANH_PS_GRAY.png new file mode 100644 index 0000000000000000000000000000000000000000..e19f3d8b36c0d5c05f2bd0156cde3a42819d0733 GIT binary patch literal 1054 zcmX|9dq`7p6uxS{W{M1_SrG(+mJc#5qoUBvC8e2)FwNA|d{&~SNl+mv^+)tjs1Qpb zQ6$ZUt_RM?bZ$PcZnNp;eCwuOXD(BlufBDo1NYo>&+nY`ec$=rCn3RXYsOv%K@iq~ z7yLunJhM52Yy@7!N znkotahnOVEv9U2=p$3zY2O@}}7@)|Y1$zecf0=Y8Es!pzR|G`N1To;^3NV>Qq_smP z2tzw=Q>9V?bbNdq3kP#t7IdlA>V<^`tyT-|*h2}+wg%UqpB)+;MwpwMGnsaFES86d zM?e6ZeGQhBl$?^1T3A?ER#skKSI6ZxL8q_-+(jh$U7=8o0>A+Acl@kct#m> z7PU)DKYjoQKtB!kYjt&Pef_t=ut2?j1BQif{j=?D>5EJa*jQ#<;A9bmO`G8{65Xy! zz@K^`(BC)QB`m(h=C!F^P^vGpus$ zSbd(DC`fm>!^>G&;eGb;Q9IoTI!Z7&zs_gm1hvLUF$KKK{)#73_zbO5o->0`*PraP$y&H0OnXz(n98C)DhF|>VT6Enx zr(R!jQvSZ%s9=x(N_AxX)mPa*iKpJ=rTol)bV8V&>Y|oyXP%S!up87^TGbLezEy~00DNQ ACIA2c literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/layericon/SWL_MANH_PS_GREEN.png b/apps/sn/public/images/map/layericon/SWL_MANH_PS_GREEN.png new file mode 100644 index 0000000000000000000000000000000000000000..4503c13c63f182dc291aaa8184b523c09d5363ea GIT binary patch literal 791 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%Gqe0X`wFK=GhSDbcfYJD<#+{eNwEZ|bc7>mvG6X8+%izqPLHL}%)X;?@VV zLVFU!CnV4KzX3?j{J%bKZf@o2-dX?G1I0u8l453Ommlv+T~!)6C9UFQSHi;l@QJC} zo2p9>w}thmL`+GW`F}&g{M@XKRoyQaL`+FfSzcUvxIKPeZr=8~%G2F77bb-EC#9__ z4V#bxR2efXD|=&A{;r0C-HkK;t`F*nid)x-6t8A$@fj(5~27Sxq;lhV>@{ zwWKU73hIoHn3S5oqhZ>wHNiazQPVTx=H|rB%k^)L_HT&}?1%#z64VJq@xfj3!QBZ! zb3%F(LqRAB=zg#{$>9@I!Y8Ey&54+t3iL?i)byyS>CrPXV`gRnofJDOJ7Ioa;-Z42 z#f3>r3X_)>r7SB>U0DKjPv-i{+^w~_+v@Um)aUPPDBRmra~6*gPoKYd@d^muym|NTJrI2Q{Q1k5Z{NQC`0?xa@4rCs4+u)H?VJlVm9xMj zvY3H^?=T269?xHq0u;RI>Ealo5uAL0?FI|)s#U9|{Fu40hEMSFr8!@EL~J?r4Cec~ zTvfSt`@H*2!_Z06Dhe;Mbh1N4gx2Iv7STGwA!4B6ZE$@h2aom%-%pz#Fmr`GZD~NS%GpH0X`wFK=DZq4znE`o5Y+y6N^bDf+{hlT>VKyjer*^Z9KLqb-$yHByRI~f|f(AjySt?ec+ufst> z{Wdm0L7>X{&dwXXyMOQ3>IE2}Omt8ObRpdr0rXZP9IKuiF-7N{L)3(##-?d@kc zILvf#06GI`3((n%TwE3dk*n(xSJ$PkuFKrqR=T?bow452bE}WfHXolIzP>yC{Pz0$ z9}EmU5)^bSIQV*0)Q#xqJ25ej;^UttBmljyCL^)~7}j1TL4LsuGC-iFW^3!}>gn0o z*f@Fe&Yin<@7}ZL(6wuK?%#j#`|;z~ z@85rc;2#i_UfVerXewucM`SSr1K(i~W;~w1A_XXT)6>NvC1))a~o;Hw^I^E9WE9-F zk@1}#s{*4cfA(&h`x|a_Jh<>eVgked)S4=%2LFH+ixNu~*abAWTAVuVWo&)O-#hBA zFN4N`1Im(*76ggCoxE64`4pE>!UK`(zS=!JyavL_?4KniW>knCI&|m@tHLLZhDJt) Y#s0d7PA`?`1A3Cd)78&qol`;+05Lm9=Kufz literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/layericon/SWL_MANH_PS_YELLOW.png b/apps/sn/public/images/map/layericon/SWL_MANH_PS_YELLOW.png new file mode 100644 index 0000000000000000000000000000000000000000..b7de1fbfdfdb1b373ac6c53c3541dbf14a53cc43 GIT binary patch literal 782 zcmW+ydrVSc6u*>KQl^!)thOx7(aYJ~np@chgBh0Q&_Albw8v~cmg})K*B{XPfj~&h zG<#@IZI(4lq?Sq33KcHOD=?5i;oi%=m*-GZJM`Q4o%4O?obPvj=et=_T#(FM#Y7M! zS+JWY1fLq;3+94lZ%ru$$2co2;392E#pJnk1G6V zLp181ot?$?HDEDR3YH%22>ZSV>@Q;hC$5*^1~~)?ecbv@jS-&~4!BN&>!f~TL)6Vq2E_98r{AU0orUdUj?S8@xdnYO%qa^hhhFlhF27=tUaqW0Zx^%isxReGXZ| zpa{7-XQn4Xl7ILfX=((1U;kxa{}pWD29Q7vHh2ru-Nxe!WY@s3xL%6uWjHDa!N35G zKrJXFhVJ@@>-@(1eq%i-rz}mBwVAR$rL51WU(adVE07WR{U+$_2#$UTj&_Dzs?eX$ zVb9md__xS-Z;Uj9yb0Pq8FEdAJuv=u1Ns2|y6~K^xD;6f$jZvk=ko;uu~=MNt5S8T z)t^4~m`rwu!|8UrJs!`v*NXuNf+Q(GFcb=hqtR$AHaRsl4VVF(H>nzdHK}U%fwKs* zSQFojzSA#{K+r1Samv`Ghr8!l5|V#vwRdCppIltLWT>fMIn2vX%FcOI#4~38vgrz} z+XRZ$nHk>WTTUp~E`5EfHg)~C1!*~KX|8!=@}hx(Li)XPE>l@~?MhbW^{W$8He2;3 zQG%lJ0gJ0)vA9O}o*vE|f$&T^n%A*@GMAP+)67MiCCr66%MQ;E nrLU~Ju)Ig3i6mwO*&;Cm>D!;3^kS^F7=}ay{9;}kxBSvSe_-5< literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/layericon/SWL_SPEW_PS.png b/apps/sn/public/images/map/layericon/SWL_SPEW_PS.png new file mode 100644 index 0000000000000000000000000000000000000000..d260ea3a668f2d7fba866de62fb10c4220409ca9 GIT binary patch literal 1217 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+n3Xa^B1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`f(~1RD^r68eAMwS&*t9 zlvv ztM~P_^2{qPNz6-5^>ndS0-B(gnVDkcWM*z=V&ZCSVrt}UXy|HUX=-NdXzJu@Y3^d? z=H_Aq)9aF-T$-DjR|3Y4 z5WOk5-C~4OuRhQ*`k;tKifEV+F!g|#@MH_*z!QFI9x$~R0h6`2pt1!61EZ;@i(^Q| zt)xHy|JyUGHn7fo{OXzCg)Mh?ml-9QGA!A-f4#Wt$M^R258ssM-#>6wQThy@e{k1zgC6apd*5wu4cAOPFNvKfD zApKrVTPwG?(S}V1#v)>(&9RK-j6R=#`_C_wVwlw5-=Dr>O}-27k<;7XHCZa0^`CFs z?7gq@XOp8#4AV&tO@o!Im-T#TS~t(m=9SKxH4mgNGM-r=e7x`AQN7qb2Tn|yIMp@i zkfDKrgRh6UUQ9wkNohOxoBMl(eT21-F%=7W2&r_uaY;HdLqdZ^MEZcm)07wgV;W6) z{-^&&T#n)DpWjO{an^LB{Ts5>LH|o literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/layericon/SWL_SPOT_PS.png b/apps/sn/public/images/map/layericon/SWL_SPOT_PS.png new file mode 100644 index 0000000000000000000000000000000000000000..84c7992e41cc3c681f1b6ea44d7059de78fa2a9a GIT binary patch literal 1067 zcmaJ=O-$2Z7_NeZAS8HlkQi!_D8}_?KZO;>&(`5)ERr#Wi-xZKHX3NZ+J3mPi-3s{ zNIa+qO-wW#^g=Y=NQ}{hEQ%)+Pa0!L1;jG|HLte`-hmK_Y8)lJMMi0r|IMdxD=w?~g zu#08F1!JB5038lMD~@*Xix|L|8uJ3w8Ltom{xY6`?Yv0|S+~>K@lyk?UANH*sVUSlSh!4p>kpcaAJ* zm2+V$>J_%=rIjQcW&Qo>3Unc)bwn6pL*j$in+GD#MPE9}4+= zzVPMNW8D>vMz@cjJldAt7(4&Tf%U#)>ifmRjBBfzeRyv^Sw-xxC*B-Hr>^D$ QPo3)NS%G|s0G|+7AT1;$q@$x_YisN8@1K^IR#H;Z+uOU`V#QvN0VP3x!3+-1ZlnP@ zoCO|{#S9F5he4R}c>anMprEa%i(`mJ@YEhlJ_ZF27DmB;|C4zmKX$bGZ8bi6NqUmP zgc-Z9PLfOg>^NS%G|s0G|+7AZ-}A$iHYqa^ud5Nrxt{IJbD~)%|B4Z8@v20y3Z^$S;_|;n|He zAcwQSBeIx*f$uN~Gak=hkpdL7^>lFz(FmT}W68&$z`?>O`0sx*Z{)|0R==&rM=wcF zQkXDf_ti;qsh_NS%G|s0G|+7ARRTqtY|@S)9Uoe+p1R_ox1hx(ld7tn!Zc302xpcNS%G|s0G|+7AYETyKXKy3dGqG2UcGwHo;^p89=(43`o{-TdO!x01o;IsI6S+N z2IO!SctjR6Fz_7)VaDV6D^h@hww^AIAsWF`do1}F6gXHI1^@j|=8gQ=(dxI=_~<3+ zNeUBY?7lilF7>nbgm>8;@jeTB3@wzopr E07Dc;WdHyG literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/layericon/SWL_SPOT_PS_RED.png b/apps/sn/public/images/map/layericon/SWL_SPOT_PS_RED.png new file mode 100644 index 0000000000000000000000000000000000000000..a2da36f9bd0c68654350c5ed8840a5a513e05c5b GIT binary patch literal 217 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G|s0G|+7AT7?tWho)yuc(-&t=(#2G2PyNyRWbE`itTq14@GYf*Bm1-ADs+ zI14-?iy0XB4ude`@%$AjKtWqi7sn8d;Hf>9d<+U4ER2Hx{wMQBe(Y%V+iHCDlJq2n z2{U$Iog|m~*?Ypf?2dS!1wDoq%;y&@fxHa7-4%z4m{Oi^LYPn%|KSU0+4KLt~^wz7fAwAdM zd!m=3sQ%Qvk|E<@@Ez?T|5Lwe8W~3LOde-Z5mz-AQb_|9AV^u-3d}&wSiABDPEb@Q zZRYYguU?RJWHDNRVSLLWY>Jwg@*PbtLktRV#k3Rj{>xW1FpUJg6jeFZkzvW4Uw2`4 zJ)P6n%X-|PrzXLKFA)I?Vh#9K#r7mWLDzL9G7q*{8q^`UoS+X(<<$isBNu`w6A9@Y z&jV3pcp)l^{1^yxe3<3PD~5PMii%Qr95f!9M01Uzlu>3IvB)YxmoRoDmaSH+Of|wF zcZKES@pzyS4u=RLWQ7fQToS=!*gA^>MC2M<)VT!-1gh%)p_bJ`dpH9R{r*$f%dI((%|H*Wx;iObaWn|!NU{qxjNBYTmF6if zln_Q<2{}N{is0OmX&b2Oov-6nRZ7_&)@&W7lmtx_7}GQ)IVlT*m>d@bd79^EgjhVn z%h4DwipiJ~my=Ddg7j4j+PKLz4!N9vv`M$Sq^<957f+HaaV@1JbN*i8cda(nd1j;g z!TT*^Wbx6(9fjZCy~7P}2$w$Y4#FSLN9R7@_A|IO3kE|r_;+f{s2UANB{r; literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/layericon/TL_SPBD_ENTRC.png b/apps/sn/public/images/map/layericon/TL_SPBD_ENTRC.png new file mode 100644 index 0000000000000000000000000000000000000000..8e7de8593acb28bd70cc17bc07f51fe41104a3d4 GIT binary patch literal 1260 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+n3Xa^B1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`f(~1RD^r68eAMwS&*t9 zlvv ztM~P_^2{qPNz6-5^>ndS0-B(gnVDi`Vrt-GY+`0%VrpV;Xy|I1JVR zVPRv4~Pj*wm=R%;iu*SQ+p9GSzA2OwPs*oOz?DZ45_#^ zCD_*ch=V}w?%4$eVnq+wJEkUNK9=9Gb@S%yr~J6S1xR`N| zJvQ5C?o3u`PthfQ5-al93`?KC+#KK4)4bnrwtm;#UOhuS$xiNBH3#lG?~)07@@xLf z#2-q(E=e`?ujg1?p%eG;x!ZZrDK;@68tDnm{r-UW|S17>0 literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/layericon/TL_SPGF_LOC.png b/apps/sn/public/images/map/layericon/TL_SPGF_LOC.png new file mode 100644 index 0000000000000000000000000000000000000000..74b0adac361882af61b2f8d1a29c7a3f4c8063ad GIT binary patch literal 1383 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+n3Xa^B1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`f(~1RD^r68eAMwS&*t9 zlvv ztM~P_^2{qPNz6-5^>ndS0-B(gnVDi`Y~<|b;_T>bVrt}UXy|HU;p}W+;cDb!Vq)a# zW@79F)9aF-T$-DjR|3v4~Pj*wm=R%;iu*SQ+p9GS-(v#`NF`!c-zy(F{I+w zlF6sNr2|Edoj-f#$;Ca(9JefR6p#;PcHZT2l>INWj@BaXi5gdYx8E%dytG!^wII^9 z;Q6Ai0P%Mr0$G}wZ`C-QF0}G!?F%r@RGVL(=OMwJEN)q_&H28UHD=1T`s$be@TJYmI(%^28qHs(l4VPW8$&Ht~udsoCUlg3EBf%aQk< za+8_=3w>f;RDC(J(RRk{aIKoHR-!w579Do=_EN3?e(=nfB(E-2ls8_x|9s z?Gjfu@T|SeZF`sJvA?p~y*EU-oi*rrdt!T>V>egLkY4Wy)EqO6{v)NAK zVJLX;ASi<1P4OTeM3EutO)p+NO+>wU5k)sIz_C?!K5Ynwuc4|ly%C_< zjY7%VSg{nFoj3u;BS-~YL`)F5t6m5rm96VSI*+$`7SthRMP+xBDjPFE!vO+mE}5_d zQ3SHgiK(mD(qgclAq6?7C@f#VYgdmvUcD|n5lEX{QH2(I6f^}>$cD#DWbi6|0x`n)_uemQHa+9i#Bd)C=TUAEkGv0K?&p4W))|u znBcIAeW1KX>xUJt+~h}O|HGimD+M+E4V(5tfRm=kL+B4T~I$VblT>U&b8HRaP9WF z2yMAMO@@yf`&XlzThu-Av}IemXc-@Q)a?Pa_2WyMkX{K|y~$Gaw(@IdXQE3Il1Xjg zWapj2t%`oodU5Z;_tfT%g{|Q^ZNc9@@Z@;s>$685bzYa=b$@)LU+d^Kra!}=_pSv# z?0flp>cUpJZ?ST_|H_~+();}8)i3X#o_g59baXS{J`Ef`^K))HzJ&Q~LBF3_y!Zzu Cr9T`1 literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/layericon/TL_SPRD_BANO.png b/apps/sn/public/images/map/layericon/TL_SPRD_BANO.png new file mode 100644 index 0000000000000000000000000000000000000000..8d08dca2996d0ea7bc0c52c6296323f9721077a4 GIT binary patch literal 1044 zcmaJ=PiWIn9F8j+b2uD$*;MqAq0G7FU)yXAtJ~VFu42pRit9nJY4WyaTk>M^X45gD z4h9Y;cb2r@l+n;-~+c#SjoqNvWqgq$X0m-n@|k^k`@y9yb4@OTzap&49MY)Fl1C=WrxP-bBoDq89C8#qi+ zK3dOYaW;8gQjx(Z9)@uZi?Atbc*M07bsl1nhqJmFp}%fEr-80T=;=_BOIk5l&?lB` zIJK0@s7v!|SffYIfMHi60tUniaE%4ik=zJf)s@KH+h%D{h2Z%Jy_ZxrISFFOh9JZQ z{3^%uKol817!pN(00lW6L2|Pt5j}~!+CYkOX!LS;#rc)~u zDH!W27Rxi7cceNnnfyQ0FdAqFr{SM`|0(QbN)}|(&_Ro~N*XuQ>xHtUm<<(->;vR3>uq|0Mj1NuXcAMDxacX&)T#4%mc`W0;&+qK+ zj`-T;c>LF;V^3DDb$31OUr~O3|GW;wL%!8=>xQ~*p1XAt!lP~F(OeG1AUtv5Mx|0Y z@a5futxAiws+IP&^@r{~-250nqWDHr7vGjo4{U!L9PJ6?*WX@#*etHCx5AxA<%4&( oT3+qfySraR`)*DM>bp*LIYk zh<*rs2`mW0iU@0a5zcpcp&Y>KL`aZFiBLkwDByJm#wuMfv)ps69csX}5UGYmVl zSdRshJq;0-3wp3=I|_I31!FlWLY4K^R#O zRCxU!h2=QF^Ik4c!SmcM;A1%-!;+WxZ~>u$7krgq>7hw9OKlSpVst4MS%v5hj7@=I zGMS7wdaQLu>)abcOVmllRVhjq!}v8*yRg&NfP3Qjb%fDaWO;_1+S*50vq-P{FPN= zAP}zQxJV!v;H#?GfUhnb^>ds*nB|H{>C&Nrvs`tB8_CIat)QDEvIs5h2vnmM(!s)! z1ub_jbvgBxxN7cP!a2DNNrrJ7`&Xm0Tf{x?blJ9Kv21*35Vu>z)(>9$zL6_&J1*9y zoar~onUV=mJbd%$z2fu~Y$<&TipFc!4;2^PABhd`+`e~uZeYiOyRUwHIs?kC-a3%p zesbtE7p<-S@Yuj*1NoQi%SA8k`9o{o{gnIfT+tKhUvuXZsr2>4i&)=4|J%G%qhrsM zgV*xQpG@rU9m$+yKTf{ypV}~yoV*y_{kfisK8hTldOR~xcY*hxZ0tQX8kN!<`(?J^ lhPG<1=9s*;mmi$nI!?vb^=)?A=1bk{9FH`JgLN$@{s3DZXz>65 literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/layericon/TL_SPRD_NONM.png b/apps/sn/public/images/map/layericon/TL_SPRD_NONM.png new file mode 100644 index 0000000000000000000000000000000000000000..e68c05ab606783899526d999e99e088f96d1fa5e GIT binary patch literal 1049 zcmaJ=&rj1}7%o{D1R>Fr;)O5e0@1Z=*A~_=eyy7X5z(gFvb}F0F{V|2TivvH3b>*=kebj@9)g6a7GVae`r^VzI6_fA z+Q{Z`E_qqjkjbbXhN+r1VN=w|Sk+dwIfy|X77Z&x@4bFY14EC{Gh#BBw4<9J8TQk98-39$;Q=Dg*~)d*eJmC4-OW@%7|;JFBWWGa_TgD7$!5SdUw z3vwKgB!&}2N#ZU7KFINGki1fW6J$}6`5|!p&?K6p7vzi*KaNFK5xRu2EwgN;Qei3~ z202BR3x~s=2G0iwBH%7sSgi&ux4)sFKv#1N8ym<1o}!vZWgMZ2)1xDpc2m}JkJCgF z##U9E<(Qy%qy{jV{6Ew*n`jqj;ECUV3cJ}w8?qVbqOzlr!WH_xP_`U(po)=`MQFZ} z#dHZ_PqSF!>m@zCJRouZkKADsgmWx$Og9#-<69vXFbeWq}h9y205=36&xR?;; zL*j5q9Fk&TNg9rZ8e9cwWfNMs!PQT=LQAgK3Z_jWE6_2nLp|;w6V#6^8?C*NvbXYb z#MN7S;ahT9Vutk!`&XeGTcmruX|rv~qS^S+BHiwgwqAJN`<+~g)r2yUt$xiP93GDO zq^ULtlzqGv8aphab)BS@{E|puN^3+s_ zS>2(&JX!7=;&}e&EdkNb&ODv~(MRV7+QHeiQ{%O(v;Ot%b~~5;;d|l#wEJu2^N0D3 q9x&K__lB^tIlk_*VKLt}ezT3bGx}!tT6|ORE^8u|QeIBZuKWSyOihgd literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/layericon/TL_SPRD_RENM.png b/apps/sn/public/images/map/layericon/TL_SPRD_RENM.png new file mode 100644 index 0000000000000000000000000000000000000000..4800beaeb5d42b54c5c28451bcecc023bbbf7506 GIT binary patch literal 1009 zcmaJ=PiWIn9L_czGB(&{iUakLU7W1>*EU-oi*rrdt!T>V>egLkY4Wy)EqO6{v)NAK zVJLX;ASi<1P4OTeM3EutO)p+NO+>wU5k)sIz_C?!K5Ynwuc4|ly%C_< zjY7%VSg{nFoj3u;BS-~YL`)F5t6m5rm96VSI*+$`7SthRMP+xBDjPFE!vO+mE}5_d zQ3SHgiK(mD(qgclAq6?7C@f#VYgdmvUcD|n5lEX{QH2(I6f^}>$cD#DWbi6|0x`n)_uemQHa+9i#Bd)C=TUAEkGv0K?&p4W))|u znBcIAeW1KX>xUJt+~h}O|HGimD+M+E4V(5tfRm=kL+B4T~I$VblT>U&b8HRaP9WF z2yMAMO@@yf`&XlzThu-Av}IemXc-@Q)a?Pa_2WyMkX{K|y~$Gaw(@IdXQE3Il1Xjg zWapj2t%`oodU5Z;_tfT%g{|Q^ZNc9@@Z@;s>$685bzYa=b$@)LU+d^Kra!}=_pSv# z?0flp>cUpJZ?ST_|H_~+();}8)i3X#o_g59baXS{J`Ef`^K))HzJ&Q~LBF3_y!Zzu Cr9T`1 literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/layericon/TL_SPRD_RWNM.png b/apps/sn/public/images/map/layericon/TL_SPRD_RWNM.png new file mode 100644 index 0000000000000000000000000000000000000000..e68c05ab606783899526d999e99e088f96d1fa5e GIT binary patch literal 1049 zcmaJ=&rj1}7%o{D1R>Fr;)O5e0@1Z=*A~_=eyy7X5z(gFvb}F0F{V|2TivvH3b>*=kebj@9)g6a7GVae`r^VzI6_fA z+Q{Z`E_qqjkjbbXhN+r1VN=w|Sk+dwIfy|X77Z&x@4bFY14EC{Gh#BBw4<9J8TQk98-39$;Q=Dg*~)d*eJmC4-OW@%7|;JFBWWGa_TgD7$!5SdUw z3vwKgB!&}2N#ZU7KFINGki1fW6J$}6`5|!p&?K6p7vzi*KaNFK5xRu2EwgN;Qei3~ z202BR3x~s=2G0iwBH%7sSgi&ux4)sFKv#1N8ym<1o}!vZWgMZ2)1xDpc2m}JkJCgF z##U9E<(Qy%qy{jV{6Ew*n`jqj;ECUV3cJ}w8?qVbqOzlr!WH_xP_`U(po)=`MQFZ} z#dHZ_PqSF!>m@zCJRouZkKADsgmWx$Og9#-<69vXFbeWq}h9y205=36&xR?;; zL*j5q9Fk&TNg9rZ8e9cwWfNMs!PQT=LQAgK3Z_jWE6_2nLp|;w6V#6^8?C*NvbXYb z#MN7S;ahT9Vutk!`&XeGTcmruX|rv~qS^S+BHiwgwqAJN`<+~g)r2yUt$xiP93GDO zq^ULtlzqGv8aphab)BS@{E|puN^3+s_ zS>2(&JX!7=;&}e&EdkNb&ODv~(MRV7+QHeiQ{%O(v;Ot%b~~5;;d|l#wEJu2^N0D3 q9x&K__lB^tIlk_*VKLt}ezT3bGx}!tT6|ORE^8u|QeIBZuKWSyOihgd literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/layericon/UFL_BMAN_PS.png b/apps/sn/public/images/map/layericon/UFL_BMAN_PS.png new file mode 100644 index 0000000000000000000000000000000000000000..f2f64a641080ceee0479ecc735869a2d146d2513 GIT binary patch literal 1552 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+n3Xa^B1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`f(~1RD^r68eAMwS&*t9 zlvv ztM~P_^2{qPNz6-5^>ndS0-B(gnVDi`U~b~(=3?e-V&V)8bypKdCpQZhM*~xHL!gkQ zs~JqMOMY@`Zfaf$Om7N8uM1ASprnvn0JPa9wJ5VJHN~wcKUV?lWvfiwZgIqE9#n4% zZnrq$)TknMZjcjY$NByz`)ev>EaktaVsa- zJ6kwV!nRzla-zv(6WwjgwuYFqF7;R`7OvFs-{DB>gH<~MjndRf` z8>)5!_Q!hHZrtpfBeZ@_lgl^c3alKiw!qDJTCl(e+cotnRx`{wgL(9y>Vk6&s_@7d|kjXWkvY@3-Zsea-q_pjo!R&$M&xmSp+iFZ8p;1CbbH`P92 zo~r^Yh0?7oc${x)hJX$z{qB|hbo5x@QV*jS;TNsM#Lx+ey4d~5DZlhm9f;x6qf#Huy< z=z-Gyg>A3qT{~#^@!Nw3;zenUOM@&gH|DK+CcW~+tY!DLr&{Hht-t<0Yg5>x>l1~_ zAFD*Y{&uU|@9IN|(-(GKP;vCk4$RbCt})+X_VyrBK7@LqWSUvzOU+aNBgp&6P&Bbs=8@=Wpjmv0Z%; zBZ?jh%K{-Rqn@M7Lt#WkP$WTxLC{N^6j@;wMFpC6MqTZpZJ3#J;rqV-KmY%ob$9n^AoWYK9q)c%PB$@|AZnsHQ&KtrB4yB~84+sg_Fan9)CjddC^DiM1MONv zj|G~0n$k*7hZ0t)=q|D*$72Bo{JG=pEx!v^>u$NNI$;zQwRmYU&HLVPh6UPY*OgiM~M zv)QaS>-R#djb_8)u%qGgc`(9bcN<8`c?`R%pdbKSu{0BD&>$T}Nrqi0Lg7poj-Z=M zvWC4_CR{K&Cz&+sWt<}wfTH++sID)eZIlAb`TkSbPIsGtP5~QsSqg4krpgIr@-YiY z2wG_f4;HGJY=;Qi?a(A+%^bOHzh9NC*)MD|j_cwxQcUwM9fTsCdnwWhJL(U*5Uy%1e7cKgtz{OiYLWwrb5yAAhB zFBAP+l7m;tHT|xn+&45d)Hg7&{z(P^kZ*locB6M@X7tPSPsmJ9|D1A1duNY)lH}pF htwPmy;!IUZshi-wpAg^66XVYPPt-RFSL#|1{{cK~fpGu; literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/layericon/UFL_BPIP_PS.png b/apps/sn/public/images/map/layericon/UFL_BPIP_PS.png new file mode 100644 index 0000000000000000000000000000000000000000..dcc3622a76eeccb7c555f8fd9f30f76ce8591f08 GIT binary patch literal 1017 zcmaJ=U2D@&7|tBbF*i^Ybl!N#5EN{_+N3nBt6j6Xf+?dbtRjA-$ypoL-_i7Wh(Q4sO*>A1d;Nw6rV*!SMU_*X6fBuj3oe{l z$mH~ec|B&(i7_zh%S6C}SOdOQwmsR8(@kBO%!6%~22BW_kJI}}<<)7BLM{X%6AtMd z&jU$f_=qS;`~@Izyufngl|p<(7A0ATg4RQmXs$6QXO+oTEV7EzC5#=JWvkUHQw=l7 zEwX$p77H{4Aw&=%uV!P-582*GTS0-I?wSrZkqrVxt$->xPLoXck6<|+S=(!si4=_W zHHYOHE;v#fsH*>mT2=?`;VeAJ_n*REuI4~C3q4eEb<()Gksy>Kr(CFE(nS_%9$7ZK=Mw9x*Ww!8 zb4hmPvLqQcXzX8&Zf_Cy1k;Xf$)aO?XcM=)#MbYA(#Oe_u+mC0=YKBjHX4cE!52$Q zjp+NAaN|R`uu-q~EH2l!A8&nHDh{$w6VU(h>+I^Q#RtQ8e($dL*H<5w?=COzHEw*l zvQoZ2*2C@X)DQO=Z`XF7Y;CUG|2TB2vhwW6ZDZ54zNH<*u#Rk>P(9XCg5894sLM$cg6$rAb zI0TDOlt)ke1mhUif-9x6UCzDENxDjiK8A2r1F>taQq_JTsCgaI{AntNVK!vslT=lqSac%-%)#cFK-zIUe3bBV1 z__L(SxdPyI6M`tw6P75N1}sa^ktoa3A;3^HLsIBv!*qm;vK+G;tUWl2X3B$HQOK;t zLaPK`wQYkVNyl*rr-#tZA(D>8V!j5$gb^ZajcT^&hBd3Zp&&p@G8MyCbPf25VnrXZ z6FAEBSqZAKE~{B<$Ak`ybVY-t3Cb_20nFw8AF8VBXv;3b=lTApuvHp0AX$W#K4MC! zaf97{D1+loDB8MN()HtwQ!G?>N-uS$C{gSMj+Vm(?s=)FhY{5;#&I z6h-FJDL$3qX+9E-Ff^Tx>|yzgAjBAoN-+YxXLo}u=+cM^HM_x;pL2z#T;B?+fg%gg zR8B%UW9lkcEtylA=aOowx5ky5=W?Jamqf{seq;aD=*AXuk3U_vEn2J_A8N?$CbIRf z`Q9ZA3v9~@sgnCk<&ozlTUtN5k@a4v1liM{eB3b=3eE<)H+e6e{VZ^+uj z-%G({`6v}1ot`Yz7H-tvOSfOVmn6u^4X4HVcb(wG?3+EGXOD>P^5V9>o|f9+r`V6b zZ*V*FcNX7XSbAgom*);19`77KmIf_PpDxeTA3oUIdE&gZ@WFHTj9{rL6yx4f>>1uxL?sQ0S?_~Jr( z{G3OfQ7|fa=r8YPePud+x5hC0^S5VfB!jh5*vQm3mCMO1bN=O#P3MIx2adh-4>{eP A^#A|> literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/layericon/UFL_BTRS_PS.png b/apps/sn/public/images/map/layericon/UFL_BTRS_PS.png new file mode 100644 index 0000000000000000000000000000000000000000..557c17089a8e791685cbd7fed39d5418549c6531 GIT binary patch literal 1097 zcmaJ=O-K}B7#=mH{OONMvxCD(v4uOcv+j=0uu&^FA>_rvo%@B6*)^Ihv` zJ6%#(UPur`Nw`&v;Bmk6?JmIoiXUki4@XgR40Xa@l$0$%G^#KT$gnQ=fe4V*k-_&M zKoEJ97LB2pbWTv9PRkC4PU$9Q6GWgsWy(rFKx7>BX-1G*pPr>iO$}0Ae#s-5A&}5o zM=j7f+7?wt`xRcL>g&irO27g-Kr)%q2Mk+C1*r{P0neRnh9Wm0s6R+;CKZ!9$Plyu z>8GpRiic%Mj-y$hpX1mn((7Tpj0eA*oAn8PPVm-{TMvb!S!%Bk5nHxm;Z=}IAY=** zlT0S*WHk+~K8EFa-qG-S-5BAvM+_vV+=gA5Q4oQxSel76XpoMg9EU?FNa0L3kD!~| zvWC4?CR{KkC7TROdz>R>fRglosIG6LZ4?1J`TkSbj*ggsi2xf8Sqg4kZ>1B;6han| z5wxNZ4rHp>k$?!=322g`PL6bSX@&}u_Q?&rBne@|MzW!Ruo$GU0FO@h27&!w{43T+r|e5cDsdbtqfh7!B=7?EH*|{ z%kf|7bbaXT$lO@LQjQ{h$t^fi*4`SslX$Sc^5*J``(>_ORbO+LyjJY6G5PY)#QN&D z;_qDL!ra`=Ds_B?4ERDxyVKI7CrCo xxeoQ?r#_5*PUp`zlwR>vp6PB_lpho0L>>{GGM>WaPig0Jhnw5PsivOGe*l2=X6*m~ literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/layericon/UFL_GMNT_PS.png b/apps/sn/public/images/map/layericon/UFL_GMNT_PS.png new file mode 100644 index 0000000000000000000000000000000000000000..6081d8b00f9a9d5a9e9ee32b353bd1ad1042a5b5 GIT binary patch literal 1166 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+n3Xa^B1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`f(~1RD^r68eAMwS&*t9 zlvv ztM~P_^2{qPNz6-5^>ndS0-B(gnVDi`?qX)?WMJuRVrpV+Xy|I<v4~Pj*wm=R%;iu*SQ+p9GS>M`mbt(e`Ba^3#V@SoV zHIr?*4mk+4syjM<5SS*XkX!Y3?Vg4kw>T^tm#Tkc2s0~t#h7E$u%JV+cT&&ivUG)i zOQP8AJno&TKDlZ4T4Tf75Vf9`eHTL43iKWFin!9gILbjwrTudz? z7MwhvG>c2qpIvHB&$xE|=9StQ=CX`CZCP2XE}hRfagNDoVN=Gl<843f68C+vsc1`6 zlw$C2YuNjD+sySRZ@;%%5b2R?S literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/layericon/UFL_GPIP_PS.png b/apps/sn/public/images/map/layericon/UFL_GPIP_PS.png new file mode 100644 index 0000000000000000000000000000000000000000..5d7e86fd28d67d9256ec0e6f5b6c5a70b5e3038f GIT binary patch literal 1103 zcmaJ=Pe>F|93HbIBuS&fBJweU6}0nb-JP0gH{IQFYoQfe7u?XI*_r1$+02_}-nOer zsnx;i&>_lBNd$JP=p+egWnee2b*S(lRD^*A9fIwRx!R#^n3?y7@B4ng_xpWsq^kF(WJBO* z8a*n<^FR<7-scwten0SXyqD$3D|mRH$DL$j-35D2lFz*Xtn&kJD#jCGRnv`l5mi9o5z?tRoY+ib@(~agZjN{yBnSt;(9t zN|{K(*t}w~Jj1z1Dgxv2|3eL9746^zT+8>L!cMZ!f@}ghC~K>vaozQ9C`*diP{GJf zB6PM`#kL-Vk<)`L5NQ{{-VWW=P|n%6jE~2qnCW1}RAEdG(nNvLbxq=b;w0kpY&EEa|0l zIapF}g{zg$MJ&l>NiwY4*uNTG+#>FAr>nLli&f)8lepa`wtg_}NaRYqipim5{$2WK zq0m%b{p;S?*tddm;%(va9cE}f7;YBBqa$Ti)~CQmTedLpY+`Uj zM=j^|&S%%nUA>X28WigmwrQ6`>Dldrn_h4qkN1hE_FSKt8JpQUTl++x#?5n6LyBTW zCVqSe@0%;X7Orsp>GDq-E|i@)R4;TcEq=(1K79DIPMhq?>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`f(~1RD^r68eAMwS&*t9 zlvv ztM~P_^2{qPNz6-5^>ndS0-B(gnVDi`X=vzX>1bkVV&dd%Xy|I<v4~Pj*wm=R%;iu*SQ+p9GSu@w9+cPjQe(`j145_%4 z^dv1Q)q#EY&yXbzAyNYEPOV|gA9b$#m(NpN{rl5*ac1t0hvKud&z?E6<;~U8&u#eM z-LfTkNLNsleevy_Vd1VN%Z=EzbnNuUhAkR ziV7TLdMtZqQx)@sUF=6<)FbS_6>s?PBzseVM8lJFe}C5HKRy5bdgB@03kO=6#Z0=b z9FHu#AMfx(VL~SNkz)ZnH#^iw+)dTt*}#oXD@?|_rvpU1_F9>umrf8@oU^o38j z_CECbrITrCkAEE4@Ks?M<0+#xJo$YmmdyR0w1e$Zk4)>f_xrWpTr!z;=9ucC56`}G z`-tDE{q&n*LK#Ehy+7#_Qw|9IUz4+jXOYk(oHPAIbBZ|UOqpmbtRc{t zxzBx0=TTdC1zP@JP6>&yTnds^2=d#Wzp$Pz-{}=QC literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/layericon/UFL_GVAL_PS.png b/apps/sn/public/images/map/layericon/UFL_GVAL_PS.png new file mode 100644 index 0000000000000000000000000000000000000000..e8f7cde2e6b5547f88f9d06f44527a8fdf956cda GIT binary patch literal 1426 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+n3Xa^B1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`f(~1RD^r68eAMwS&*t9 zlvv ztM~P_^2{qPNz6-5^>ndS0-B(gnVDi`Vrgt-X5?&PVrt}KXy|HU>Fna_V&rOS;p%MW z=4xyV)9aF-T$-DjR|3v4~Pj*wm=R%;iu*SQ+p9GS=UH!EoWe0V)Jxy45_%4 z^ymM7duFR02hX=_axnHt$=fgF*l;J>SpMA4^Cyn{u-5!8UtOwq_^q>hpvbCQk;Z>= z=Kh)g@L{1^+y46h#tv%}YHG{mC!FPYwx{&VZ~jYvl7D*ntp5KuJ)yskLGlno3G3sf zSBn+&ejGk@{J@zb97oP1FgjLdwgq1@;wfrBzfj`CiEAAPc{IK=othqSG2sXI7rWD& z=i5uh+3h{Apr~*lfx|@dNxkKYMQZ7?2C>_}bKN)~?!dE2R^{8P`|)gcj*4u{>>Yyd z)l{7?`1sCrN4DdSzxQO%sXgQ4@jCU2N8e1pxPeVU+2`WxetF4#|9>7nz#_zGIlpyg z>%(Vfl?&AOR~8*-KKAeP*Ujpi%FoTY!*}H{%f^>qPA=vNUqA2J&Wdjr(!VrJo*0_` zz`u+X=F%7fIZ{M(9pi%Mjld-c`mE7TFyq_hn>BXO0 zkehI9!OEp)7`peBu6|b6<#pm?Lge0>PkH|@@U(4TpJ#AqZ?SmZf$Q=;8fwihCdvJ8~^Mu=p4~|a{=Q+RM;l`v(n|KZ-NjY3&WE0Cd zDe58;{&my$ZKD4fHeTMGZSiLA-nyn6u9gQiPRbl^*r%DDcxL|TYqH5H3JfzOG*}YE sb7E|pReTq0XnL7=WZGO$Mg~SU2FAd1S2y18F$0y7p00i_>zopr0Fdb%6951J literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/layericon/UFL_KMAN_PS.png b/apps/sn/public/images/map/layericon/UFL_KMAN_PS.png new file mode 100644 index 0000000000000000000000000000000000000000..764ce8ba5dcfbccd8ca87ccd6a270597c2d441a0 GIT binary patch literal 1572 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+n3Xa^B1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`f(~1RD^r68eAMwS&*t9 zlvv ztM~P_^2{qPNz6-5^>ndS0-B(gnVDi`XyR($o& z6x?pHz^PXs=oo!a#3DsBObD2IKumbD1#;jCKQ#}S+KYh6`qIybz?{W2!_&nvq~cai zuywXbqKNH%bK~Dhljq(|xt_9EDJ#*zQ?MyXwdqD=XGg0-m{LasN0?&o*0~%>s$z!q ziYikDgr}64bqQ>8+`Rexn=@(8pYC)Pn*73iPHOtIdDZ7_zxU0Wxvwqxxl&>O4#zo4 zA{#w*gx`1S&%Zv6uj%SS7BNG2o6X%zx8#Zox(Z%esk3Jv_x9_qiyyMo{BNu9+cD{c zjmtlSm<{>iTFDwy-5yrz-FnM5r7uu#x?um5z?C6qdwb{iSMPntdhGrrmET-(n;vxw zCkt~NX4t)3?~ullvbZS4zNCBZ8n=`KP95ogfB(Y!>h~wASNt^AoOEpUrM#ZGaomiP zCE6I*>PDnV-OS-DlzI65n^?_#=bb@Q7x8zTzI5pCC6AjIq7Ii52Y45#-e@tZ3rERx&D||?l)ZDhQJH$#^(RHtRdf2kaCv1*C%8%6; ze~1i~T$AB+S^Pe~K&#**gN3TecNQ&PeA9=o@x9thmw#{WT&}lSan&qwhE}HOl9e{O zo*QoDndyuA-F|UQCU(unZM#0j^Xpvp5=o0V^Sb&|M(nqQuKIoR?9EqRy2&%kPxeyx zBKe6w99Fdh_2j&d{onU46u4r@WNb z!9|sG=Wd%Iej?gPZB@F$X^*i`<=X`KL{ae#??A6LmrpcX+5WM)|VWo{v?1 z&Uf*?{{vxeM}Z#e-d`f>i*&SIzo$-}sFJmPmP>Q?yR*jM^e$TcGkrII^%3QySrT`p li<8%f{uC1DXa6sl!0;kmk>gzTt=FJ(+tbz0Wt~$(69BpkPN4t* literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/layericon/UFL_KPOL_PS.png b/apps/sn/public/images/map/layericon/UFL_KPOL_PS.png new file mode 100644 index 0000000000000000000000000000000000000000..d9fa712cf6c3528d5673c19c6c3cc6aaa42fe604 GIT binary patch literal 1122 zcmaJ=TWHfz7|xtjom2NBIzc_lKoo4!)HbuBb#}?BMO#K&aOydsF z6J(%1i6{!9h$y~@^8(Hx-awoeHWV*UKBxngDT0XgWUkW(Ye;e~eBbx~=l{QRpdq|z*4Hwl}f!nKYmD{T;iENsz?2>tQ;O&VxwgkBd+_!6cFTea2Q z7EE_1GfH=x5>n~f6(H;gL_mjF29Dlt*n$(G$8-fUcehy@j6rZ)g#MjWW1<0w$bulq zEb}TpjsrZ;aDgDtb4!8W$N5z_Q~t?COGo1Z~CAOspXTxQcQXb>Ik1GW~r7-JFm$ z?C~;@g0YTlvK-@ck5m9A690$l`UKj>DflPfe+t`~E)%jTXrm5GA&qOUc0-whXh9hx zD}zvbp^6Qy2qU`{nLteQVDUQ5P*KiaGKNnigt%d2*-&6yiqJ%X(KJ;E1*K>#Aaa3# z=;yflK!^|WVzkaD)`X;(CqG;o2d{^9zIa$PIvCW$OTOY4Mc%tAUCJF=h^ z&803@RBxQC7SF|3l*^K2Shul%HM+1x+~ZCsY)cjs#)k%RyG3mMF*#gKuEbDWie{V_ z*&q3QZ7JW7-ZZ*d6pzb~PDILIhQsCQvq^aSOz*yuS%ZVmCO@q~uLjQTpLT3ZXD9!1 zJ(zQ2+qd4Tsue$LAA3%g>iYaAO*?14zPWA9(UL3Z&7$X&({sJA&v);^{Zl=MMkZ~i z&X@Erzgw~Kl37(6f4B0>UB=V9YF1@);KJUiftn)=dMe*mJUq3-(>Ht9VL#t~Vc`3l zE7@pKD3{fhAENU1j3f%eFk6Cwc({*PzH(XnG7xdEEnWH=E%$a76?J8kt zq6rojArweP5K&MU-2|2u84I(`Yuw+v;kP3CuR+Lh35cw&b>BbQ>qbRFe z`7+^xF=EHg{|a}0hlBF$48?=M7NNn%OE29DXc)Nsv@{KJ{S&p!)}io zS3TrzPeu4O{kIUM;6r5 zxrin8@?524F5XZ{E`yU{?8g4p=)x9uk3B8g7B7m%2Re4UiEaJMq_*M9u^ncLGeHr>)p%vD@!;U``# z#gk%1;(Kl((_k##n3z3teeLa=n$a&0_rF`&E~f8~tkl&$seXE(aqmEP>n9@ja(Q`t z{4gE3Sv?<{yu8J`?>4#3e9(QcqCGHPdG=hINX%@$SUGk46tSt2m{>hMKY8!ibNkjt LLLK6r*6y+26oFXm literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/layericon/WTL_FIRE_PS.png b/apps/sn/public/images/map/layericon/WTL_FIRE_PS.png new file mode 100644 index 0000000000000000000000000000000000000000..4137a3f74526c367650a0bf2b998b01a3fe31e12 GIT binary patch literal 1072 zcmaJ=TWHfz7>=xLV>qt}I&g;UMP*Hzu1(jlI@@NKf~m8st`91v$ypn=!U=7x6k}n~cG{AWnTzaD(m17bo*Y5a-FZZa!E;l5^qvzW+b}|DFD} zXiH^9RRuv1m628kzr^8 z(o5GlWf#km97nSrFUPU9q}#>185e#zC+p$89Pjp#s}F^vnMx-g6Pj0J;Z=Z2BV_Ol zlgVW0OdSo)6vO)cep|!sc4CCn>eZ2yb?R14K|uhPY^nxQp-$S0QWEx{0EIJMIf7=a z$?Dc>nQ+0FtYk1O?Xr(l0E*)Op_;aawonYL=lf4#E8c4WCI&3nW6HR3oi%nSgAbcP zLePvu*j=b%TN)y0rJ+HF+c|P?hpH2(Jg4*z1+KErZ7#~St)Lk=vH(o=3{aX)sFBM@ z=GEf4gp2B}a+Tt_2t~OJPKL1?`&Xk2Ti8AJbj`MSv1WXrW4D{w)=&Gl-@sSmc0>rq zv!5nn?4~@q(UF>&gTJo*o-Es0HZwLc-xpVF?;PD$I&eJQ{iHgjm5<+LKabRx4n0U* zCg{!Ie{3C!#B+-C zZxL_8C6$Z$s>tgPfrXyxdB<2qBKhThwB;)`{_5e5U~b_2+|t>F=Pz4t4x7<~nZfCa a_WTAyAH6Vm<>PMAzQd8GsBkZIs_zd&Kw|U& literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/layericon/WTL_FLOW_PS.png b/apps/sn/public/images/map/layericon/WTL_FLOW_PS.png new file mode 100644 index 0000000000000000000000000000000000000000..285f7edfa81fce7e403067fa779164e206500b58 GIT binary patch literal 1137 zcmaJ>TWHi+7)~t?T3gu_#S1Pyr0!O6XOc6Q*u=)}?4+Z!I(3|mwm#WRa@xi=IWak% znbw!O%Ibn3!ipj&7D4u*%C0P|s}EL0t>S}XABvz9K~O=e)Z2qtPim+7;A}{8{&V=g z@4qI$r<&GRRV=Gu7^W(*K}pl~8}FIpqwng8NtG^3Nnioj&@|DmQigLX+8eUA65!fvM5MqC=XxX00G$V!MM9v#Z)II*zLqNh&2mfWs70yIPb2S!Y7kb!g7gfX(*w{EL8{?hAxG| zaZ!MLI2?g72phvuYKTIe2*WTQ7eh*st6;6iL>4J>_0QZ$Nv<~vrcFI7$T4zAk2}}| zQz=VE=~#j#^`^Oc=~zM~xf~6K^BVg_ql-s$dOUMxZ0TlZ@R3EQ-JxT>ZQq>%`bj)a zDA7#ee)j$3WJ9?ybo~Av_T}!}>>8ox;AkadG;RE4-^9_Amv6jy{XRPQ+h6<`b8m1( zYSEd0w5|K^^$%*?kZ_e5o~`WO^9SF?EbX5+u~~jo{p8i;yAd9y=GfO~3D;I!oAvL2 zTv6Qug5THHo*wl*+OfJSTlbu;TwMNlG&?$SerUbren?a^<$r2hB=_J^&5Pnm_Mm@*%;YWbnPrw70R?c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`f(~1RD^r68eAMwS&*t9 zlvv ztM~P_^2{qPNz6-5^>ndS0-B(gnVDi`VQ%K?Vrt-QVruAYXy|HUY3X8N>11x~Z0PJ} zU~1_G)9aF-T$-DjR|3v4~Pj*wm=R%;iu*SQ+p9GS^s~$av=i)Q>UkkV@SoV zCBeS_!hs@t-=Cd*-EX;r_i_O*(bR?9_DyP9oQa7Yf7qR4B*Ts!Int^vw(HVdPU~Lp z$NmR8)(P~e{b;;D%faP9(2TNMm&)w!e=cK?EnKc|d2-L5Io0QPe&?AObm+g#uIF_e zhMgLUDJ>P?0zRbO6 z@_2e*sf4rSvU`(S{N7KBSn~Nu(Bi_Bs$|_6Yr_^^SmPX%cwy6x^)Iv6O^H2!>gdE4 zr^-ofdseP!JzXZyV`IYIIrGx8(va(Gxqmhv*l4ZJbWW6Gv5;w1H~&xt;H zvY7SQvux2{r?i$g2tD4hu3CL^t^fn4uE;FEZ5OtfYSw;WZB0Ec?R2i9+oNooLcU&I zYvt)9=NWiR+1~aXG{4Qada+f`QinMW)6;wkT0bs&y~b9;V)Fm3t&_5ue~HW~3>0LV z_U0|)sws`@0s=M`^aK^}FbxutmQ)}j&`ZOcI;!o7cQg*F*v!hpp9=6QT zVe2>VR%m!3v1a?6P0}7eH+_$9a9~P{`Kh5QdpsiE<;@zeq%~7NZOgIR>D|Zna{hUL aMmC1RZ)#d6L=Wu;71W-telF{r5}E*KPgV5* literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/layericon/WTL_META_PS.png b/apps/sn/public/images/map/layericon/WTL_META_PS.png new file mode 100644 index 0000000000000000000000000000000000000000..22c7af31b32386e501fbc0948bcf4bdf44d58332 GIT binary patch literal 1100 zcmaJ=TWHfz7>-oSm~Ko^)Cqc)sheP%OWSC()wwmDE7~!-$_j!uP0rT1B_}3lHmgI2 zV;fT+L=;4P5?_4Lf#8b|-f%Eb@J$p%MCOY(ydd7^$+k`(tRcy{@O|I^pa1{Pct`ur zit_4milQpwZBmkqRqj{jCI9swXJj(0!Lc;%MBO+qTaap2Q5J%@F89DBl+}TQQ?QYu zJhYZd<8)%Ts36@hyBNQtn}khKjZKazE4>hdEbP&Y2>tHHO&VxwgzgF@*n}B{IjyZ= z!OlW^N-6XzVU=#$4jLVi2w(A(MnQ>bDfqxb9jvlqp6nC}U)$ z5b7&du_K2tvUA7;(M|!>cWH)-^7iIgd?F#n4I9gb0^?GICJKH{Q$;qw@`A867z}X| z$HjupEj$};4e?S-fR9CET#+jwrC)~zE^^gB+)zobYX#jTktJwphoIVOAsx&fS=37B z!k5&W=c=W136$hABpJqS>|c#8ZV~sm(*@g-#e(snLELT;Tfg#5?I2g;R$OXMIZv`b zW@ef^8;6!ZrQQq$FKpWPls&Qh>LT#q`lPr`Zy5YsK3ZdXGUspp{5HHNuxjnn^xN0d zYwJfRGM!G>WaV9Ix^8Tu`lL*?UAufdI6ShV?(TTcv*({QZ-aO0@OO4u=Faqf^#Q0} zmAU;gbxH^3w@S|i@A%Q$Now%dJ?})JdGDFwntPAdjcl5tb}h9>U(~fAicuN=xS0Z>&&g AEdT%j literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/layericon/WTL_PIPE_PS.png b/apps/sn/public/images/map/layericon/WTL_PIPE_PS.png new file mode 100644 index 0000000000000000000000000000000000000000..c9c6863f68f8ce9b39d7758ae2bc1d0814d46948 GIT binary patch literal 1075 zcmaJ=OK8+k6n(8)wNlV3s9k7CD=0e2WI7W&Vbb4Zq9dl1=|HDa#58$rV@+O~ymr!$ zQi@g-E3QK2{g=0waKAdyzefOSsrnO~X zMR`>@0H7kdUrLd2z5lH#BmeE+aw-|N;zS0wp>CX29SE9q)CH-esrJAWRP~|$=P(Aq z3ff3#a7H;OXvkz#AH#U2P1pd$8a!Lo`XHvdV2@#m^q2cHG-c=_-5ybbiXDf&#{OXk zwhgzWwc$Q3s?!biRLm2IfC;fmdFC<86+Ds7>k4G>+0E;xq^!E`=ds)_U zm&!y6#(JvFa!k-aQURza|A(69GTOx{_$S|g3cKkc8?q_rq5(%Ejq9%VL)k*yfhtB$ z8lhu_Dz^3_jND#iQ}H&Q+SzVcI?B4c@_0oNl9r2AOM^*Cq=^D!7`o70$2Ui0IUbI1 zagIxb>*S_LBE<8u6qiGCG+5wDNE%p4(iBF9TP|r^o zxm<4aemu|@!+!)pRYV9y)9peIrC#+9iRB|V*xxFn|{A$ z(~E`Csj{)@a`F3}tuNm`I#p6#)xV>%6Lg3h4=j`_r{4mXIVWGde)PZ%>+rQhR?RA~ Zatrt{J2@{+9zW|}<7A>my48GS{1?p)VJH9q literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/layericon/WTL_RSRV_PS.png b/apps/sn/public/images/map/layericon/WTL_RSRV_PS.png new file mode 100644 index 0000000000000000000000000000000000000000..d7b307a61bcaa6059fe5565713ae6055c29d209b GIT binary patch literal 1057 zcmaJ=O=#0#7>?|RF*leyZM!UFtW31|=}%_EYU!GGE80=o!is_{O}?#RO}?0Xv)vFK zia+zyB!Hw$pL`Am z2%?TsQ)!fr9TjA#(UOg!3z~u11ThdO7?L~*5SalJs_v)0E-X@{s`#l(M|u=wSjoJa8Tf~%h_KNOB;D&s;zjFe;Hm7mHYWC#qC z&*$m9n}+5D!})wZTf^mYVuaJ0){#_j>Q+xhK?Ig;ss>V_PTGo622LSAg)`kLK{Kkd zx>Y_Vd|*sLG8m3#?UE|MSnU5$O{=0UlmNT={!`dWO&fqo01Hl;GH%>>j~&VoLMD(9 zG*b}fDyJCFLIkZWG{{hrC;LWKU4eOPe+eIp2~pibk}iX&=%=s(t*VOPW?4SSdt4qb zCvsfa6LdwmLwwll@kK)3aKEp@6`?$(0UcGi$}ZPklWSW+GjL=PnCdB@L`1jXD^d3}ZL;uSQq4uzT!j)wXz1H9pX>+f8ii?@j3=_)1)hiosOj zZRTgO7^v%=ZJ57pJZo=BZmeCFR_nDQTHIAGDY zWXc1lPdC`srZos0TDLEC?t;)gN!Fb+Bv)nKtA18_%+mdO>6NIHmdpWOiIHMnnpdJ` zF3X(yChSMs{s-bLm%jhK&0eB%Ok;Wck14mcZ5S1f`OHr}BH0XdBZH@_pUXO@geCxp CKw=aC literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/layericon/WTL_VALV_PS.png b/apps/sn/public/images/map/layericon/WTL_VALV_PS.png new file mode 100644 index 0000000000000000000000000000000000000000..ca2b4788b74c2c48d2c6a71fee593031ab421a82 GIT binary patch literal 1077 zcmaJ=TSyd97#=k&P0b(>Lvk2}GTfP+buaGVD(lRu8;vgOf*bVE?95RIojKFYv0Z&p zQ$&j(Gcw6udJuXjdI^Fal7cQq?-3$hjGijGJP0LrMt9d9+J>1q7ryWN|MUOfnTd3^ zmlhu`CJ3T5+#y8qSZ;s&3h}@C$CiYLN)(EtZrF>Gk_m{Q0uz7?Yf>MG0!bM@`vNo( zL;JC~_Nu1_IPhQgJat^3VjN zhi-7lPL?ITUYd1#yk54RbU9fU7oyb4hL2pJs1 zB$G)x*+4_Hk750OzpdeNIWWRu4eLlsIdrQgqaXlFHdOX( zvbvQn6D}B&k_?8Wo%WG3KvDcZRMWC(3q`?hzW)@qV#5YtqQHVfri>fcTVsbZINk&j zf@TcD!Aun+{SZN`9~vaz?In-(sJa4^R^2vU6uGc&AxW1(SO`#9fmT(83%Pv0#-OLs z?O}PA4Y~axC*RoW6Ik9AbOzg6Gh6}6LmJRghO6vy{W-a|6*L1!7J#Xq14^3-HFEpN zoSHiqZ%(~5SIM1=FDIA5$uM?f|7vt*3%kdjW^IcXS>pp8yWPaLzWJ)_6TT9+!$L5Y zdXw1L+G;5%xv{XY*}gP0EAKh@e0g=Xs^0j%9&RgikBMda*u=!fBr7i5*;tR{udJ8IEDy!;YEe%*XruYA&OU*vG8Q@GoD=KLQ_Vqx_F literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/layericon/default.png b/apps/sn/public/images/map/layericon/default.png new file mode 100644 index 0000000000000000000000000000000000000000..92bf1f587e549c99cabe90492d4421dd2f8a8dbc GIT binary patch literal 160 zcmeAS@N?(olHy`uVBq!ia0vp^(jd&j3?%D+y-WjAJOMr-t{fa3iV^}#7cKqw|Nnm$ z%?m(rmXaX9U?7jdL2Km~AfL0qBeIx*f$sEak7F*Vu1jg5_``2YX^v17+v zG)>uiB)-dvm@BaA1RpYY5rpXW7lzz`{*&wxTB^!gCocK!zUrl|Wb_P#ZKbLh* G2~7Ysgdv9j literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/toolbar/arrow_down.png b/apps/sn/public/images/map/toolbar/arrow_down.png new file mode 100644 index 0000000000000000000000000000000000000000..88590ecaf9a6f06c42759eeea8aa34471613f969 GIT binary patch literal 1532 zcmbVMU5FJ`9G|ciby+Oeqz{7AtfG${w_*Fd^un9_*oqi1r~Wh$K=$2@3K-lU_3EDcAx#b3cZ)EXiSJ&e!k! z{@?%CDpQjq8y?;uNzzEUAch@V?(#x0PqsA~bRm4smd6u;VAidGB8v#ftGa@9 zJr8zSs*%s;vxS|&)J;Rv4b3nWBL{OPG%e77WFal`>TufG-7tTkmu5b@)q(yuZ@K|7t6dN`fXK|DL3w3&YivZzT*G*;IRu|t- zMZ|pKs4%1NklUi;>Ox4gX%e&f2$PAULd~(nnh+Kvf;fw+jI{=Vsti;Hrm31>#|#ZT z){Y-vb%8jD6I&Kh%PM+7yj8sba|LMXPv{oZ^&Zq^9<49@6Dkk}%$T=8Map=HqdS5< z4C^fNkuaG0s6n(aXviRSBP_BOi-cgIU1s%uxmc`3tWI0vAfBGw2g(!0ykX_@im4i1 zbzK*hgP5ZLld@yW!Z|9X9?aoFc9)eg6qD4kQp;v71z}HD3Wbc}88yqyBQ&`0Fg%~6 zz~H|3Kkpxms3<|yx@(@KFq7PYB^ryUF7!+15P7~oYf;cm7l?3D2DXfo_!Cd=Z_~T> zK##WFB!cum@}dWeS)I30M8+G!TX)PmO(?G=1>3Vj`@4zVvsJ}CfQyciOw(2+7HP91 zf#`6NXk|xorz@fjzEO6@tA*p&FMdAqg}!-BWqFj}d(-`N{r6kRru}1&=u6h-cMt9u z`ryjat8bmWw*BY(e)#Hg=9ewUHokoQk0Ggib@|P$*M7b5%IMkG-}`cHrF43m`}Be5 zoX*IJYH;}5AGiPXz@;@0A@$^oFO|-H{LQA{ycdEqk7hnvITai`zV7$oJFH`SiJO_t&cM#P><(mofL2#k&on#T z)pqyp%&sUR@gNvbPce!t3ORTPUOb54;~JF+o^lZ(M};7W_yDnbW_H{pn+G{KOuwqW z`v33$>Z__Z78m9wCk{;Ha=FQRt-7S1`?71#n7Tg^%>AVv<5BJDB$wO!Kz7}gJNy3r zTyE?OzqyjGH0B*9gFNNZ75QEeDReG(V>qFAjvObd~)K(gc zT1Cb}v+@Wqge5E}p&ouc6wL>vBel`ZC;vs67X%%#4{dOJ-c z2f}W*o9`C#GHyXk2!Y6eh5-};BpYE$dmv1vwj)$U!eT#4eHm(5MC!`5w5%(pgA#&h z6gEtTGAY4ek46yZQC3nP$k_-Nt;L;wa?YUWh(LsCqOf>`joLDmNn73^^r-u)1WMXQ zW0Yf8Evq%>rrUM=fNoV@RIhkBN0Ay)v;wF>}alK@f>2ozC?QJ2wDiIMH` zRms*e3uNO5tAR_VV*E$1z={|nVS)l?2C!X|0fGnt*z*K3Y|aTAh^N>*75i#I($3DP z87rxN$lI`=dZ0G<0 literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/toolbar/btn_cont_area.png b/apps/sn/public/images/map/toolbar/btn_cont_area.png new file mode 100644 index 0000000000000000000000000000000000000000..044562b5548f28a1b6bc893f0f12889668ccf63f GIT binary patch literal 1231 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE;=WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2v2c=CaI?h>{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH z)bz|eTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1n}DR9FEG$W1Lt zRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8ZIvL7itr6kaLzAERWQ{v(@i!swoov))H5`- zv@kN!Q7|$vG}AY*)HgKIH88X?u(UETRDc2{plwAdX;wilZcw{`JX@uVl9B=|ef{$C za=mh6z5JqdeM3u2OML?)eIp}XpbFjM%Dj@q3f;V7Wta&rsl~}fnFS@8`FRQ;6BCp2 zOG|8(fG&l2A-BNS7jAG~F*KlnL8f1kSfFpHXP}>(3-T9Ob#X~hD#969RTqa;7NqJ2 zr55Lx79|7YBTX5m85nl>EdnV7y2i@CC=(bdi8(I$$)&lec_p4Mwn{)5y_C!ps}w`? zM2n=P6kVfKLsQ)}1Cume%QO=MU86)xLo>rUF`Z*UGslHL)bWC?r2W2bKx~ zGV)9Ei!<^I6r7zwv2L!Q5uTZsl3!k|35q6&uU%4$GRsm^+=}vZ6~N(am5Id-#Q7hh zKZV@z(+4_AACy>-5)VuWm?A+;cvb*%;F&2k5150BfLTRg#qQ_8Z1&#M#WAGf)|;u0 zTulxlZS#|^d+c^zyGVJ*n$WNi^%dR~9Xe-IFD~N?Xz5;|9l|wN`Ir2jgbY(=y{I1# zq$TJ6|Gx6fdeOGTxgBB)nAat6%v%!9JE1|$qIqSrB9rL_R^ts!$-akGE3|L5@ZMg) z&bKLp|J{=KeT(jHe8_v|Da-w*DK{3b+IvHSX{qtN{sYd!aoL^I`fJTJo;VlqI^=!W zu`|QNhHJLhx>FmB{)jt^A2Et&KJW0pvrXk#3}1VQ(uwK3a?&l%OH}x>gUxcL$;RLG zXOTU4WPx+&Y)hqQ+|uWa`xHK0GU0hLHFy91hJFTShV5VNS(87zZ37iCp00i_>zopr E0D||LWdHyG literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/toolbar/btn_cont_area_on.png b/apps/sn/public/images/map/toolbar/btn_cont_area_on.png new file mode 100644 index 0000000000000000000000000000000000000000..0129ff1bd3273c695e41f32a12126067b2db60a3 GIT binary patch literal 1184 zcmbVMTSyd97@i8kq>UbYD4`n0hpuy7*PWT%OlQ=VT9tJpp@L>-&g!HyXPh~@qg_Zb zRL~xx%R>bgk#9l|Mj&BgbR{B*uH-||O9l00f-jv>*LskM24>DV|M|ZE{!f2hO?4>0 zFrOfZP<)@7#A`wD=B>ux!TwDlylh034X7SwP*!sRQEtFAAmf(S2$DcEI$EEAQi533 zZl)SgL*js}LyOS@4C7l4W)nndneS+NGeBe-G@5pd`aU*Jk){!&4n-1N!cjnzxv$d& z^_?{-y|Y=D461AoS?bGJfd!C8`c{kW$$pHQ*DK?FAZ96Y9)g-<)PhqDi8@k&E+8XJ z39a*Ck&H?VACW|%co!*fdyv#{5$CHZ>g{`?pMoy|#i?;A7Ml~Vi$Sj-9 zW|?f5fo>zqOOnKL0xJkKM$le|jWnOOy`r236?nR9I>>}J8EDkfunom1?CC-XmXk;< zDYm`EMB$XNzUHtz!?BhX#5IrhP!jxhV_CG9>Tm#?1RiX2bzF~3QI3pr_jf}95PKun zx+X4))}lha%>p)xt1$}SFotQ!1|QYLblRW=z(?o|SDc}xOfg3bn#7mzx|og%B{@CI z@fERBRfMPz;khu+S4yH-RjyWvVO5b7EUCzGX%@#P%uhY1hn~NB*S&k};85RN zt$c8}H&nKkP4v90wRVKx9KT!0OmL<5J{+lKdnOyxC$Eh?{xW)H{K4g~SLgDk&dv3$ u`Mm$x1!ti3WA*0SlUK)1OikWdxt3_3o_RE}bM{j3&xlvns3R4}x_<#K!jWYF literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/toolbar/btn_cont_next.png b/apps/sn/public/images/map/toolbar/btn_cont_next.png new file mode 100644 index 0000000000000000000000000000000000000000..075111dcfaf770c5efd87bc215f87dfd915ee454 GIT binary patch literal 1256 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE;=WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2v2c=CaI?h>{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH z)bz|eTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1n}DR9FEG$W1Lt zRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8ZIvL7itr6kaLzAERWQ{v(@i!swoov))H5`- zv@kN!Q7|$vG}AY*)HgKIH88X?u(UETRDc2{plwAdX;wilZcw{`JX@uVl9B=|ef{$C za=mh6z5JqdeM3u2OML?)eIp}XpbFjM%Dj@q3f;V7Wta&rsl~}fnFS@8`FRQ;6BCp2 zOG|8(fG&l2A-BNS7jAG~F*KlnL8f1kSfFpHXP}>(3-T9Ob#X~hD#969RTqa;7NqJ2 zr55Lx79|7YBTX5m85nl>EdnV7y2i@CC=(bdi8(I$$)&lec_p4Mwn{)5y_C!ps}w`? zM2n=P6kVfKLsQ)}1Cume%QO=MU86)xLo>rUF}a*UGslHL)bWC?r2W2bKx~ zGV)9Ei!<^I6r7zwv2L!Q5uTZsl3!k|35q6&uU%4$GRsm^+=}vZ6~N(am5Id-#Q7hh zKZV@z(+4_AACy>-5)VuWm?A+;cvb*%;F&2k5150BfLY~bPEP{^10#p0i(^Q|tuN3ZC1ei^{7`6A@V*}d-{Sa*ot zQhNFSP~oK;Et8q;naocf-#e#T`1bc&?Q>ppq`uhXpMA>vwpf4nx@wbWEH=OU#M(Ao zHC{67$3fdkE0Wi9Zb@m2{-W~5$|vK|{NJ@TColQFn0m%$!yJLt6^D4eW;}M1&dAd7 z-gksO=$3=`wm{KHor%}jX3bjI!y{J6A}95drPL-XA=K=zI@c|S%TqYRP9!eoG*N%* zY87+D@AA`Vo8&I8eWt%RbhGbS)E0mC;^%^PK`D-}4|!%iT-?IDsAVqqnZ?Qb76u;j gxmoz1=^u*(!|k7D<}HQZw?Ji&r>mdKI;Vst0Kn9*5&!@I literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/toolbar/btn_cont_next_on.png b/apps/sn/public/images/map/toolbar/btn_cont_next_on.png new file mode 100644 index 0000000000000000000000000000000000000000..4fdbe3a00fb71d5b25f39c13621271dfedc57ea6 GIT binary patch literal 1204 zcmbVMTWB0r7@l-VT_bB3ZBRo)j}x>C&TVg*8M4i0ce3pUCt0@(38I*}oZXDc%o%4+ zvXeY%YcYA~OH)cKD2N~kA&5TKAf{VrsSgSZifECDf=?1bQ7ptW$!_XHDB{4(Ip;s$ z_uv0nDUY9u_4M^n6csC-Rw`sY8otrPa?GiRc4GjmbX3RnibXd2XEdA@X&uCzoS$Z<9 z@~T^aGuG)P51v^XuNq6UhGf#iC&5r469qQJ8VKw;$CraFy{lIy`%ui$U>AaCv-F-* zQ)(F$kOx7U%`k?L6v3dx3Ta79q@Du_UdV8~#0e>e7i3%N^nppG9np{zeZCm7& zrDrg9WsYk!8f+uUBCpN~k|c3_f=eVAf?)hb2WtW2_yZjc3iJ)na@}1 z@pLZ)+f~(l#g5-j6iFEuXf7wPJZIZsT)Su=SKvK24n+IaMHg}v=%abhAoZvXbjT!k z_cs&*i8u0uXOW_4a|$x%ZRp^VlBLNFYg(pk3WJ)c>n4+cLYk@ZsTw2IQaqE;Bq1Xh zqCS|&bo3m=FNo5Jl1h)J1wJVVqmn2VN0g$NR0>joNb((S$?>t~7_ej8BDULH<-T0G z;6V)|uZqxIrwht62qS+6xu8%8t3C*xnY0`eHT-A8GVMjJK+jr$X3;}7*v+$S9pJ-% zi+_)A{@?s@#3?RpmVY%*M?^X@-0qJ8IqVM;bjSpGWK>T4v2mP?S*xUsRD*BzyE{9> zk#yIi4{!gS`!0WZ1w5vI{{7CA(}&{8t@63vA6Mtj_sI_}U;R)6(aC)5<^0-v&2Qd* zpt#Qgh3mQac=y(D?$g+^6hcl#wh_2pF literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/toolbar/btn_cont_prev.png b/apps/sn/public/images/map/toolbar/btn_cont_prev.png new file mode 100644 index 0000000000000000000000000000000000000000..7e3fae7d2d13bf4010b8052065c1d8021ce24c64 GIT binary patch literal 1265 zcmbVMTWs4@7(PwLQaZAQsuFB4>BxP6YE68}rMB0Qi`|kiQmQntAdNA{K50zr%WSuC z`;<)6lxpe=Hwl5bOq=#L7}`VCMna&z0Ai|y1f$~tRpMd1pi1z-P35?43J=wUuwFjE_AX>^as000`!DViB)>-rIc;e-{^y2k~;$87VsxM%AfH76KW?s34fv zq)Ajnk}`Mxb2JQqe^xD(opRw>UN*FdBeicXLeN7At{Me`KLQ#9Ot2<**Ls(eu# z-Sve}NuuUBCQp*}dOcE)Mht6`q&bcwDTZX2FxCj$bGjqBVcqWUSP+pdTdL`(h7LW8 zQpK2Yk_2YD6M|+I3VViidpA)yWuz;aBpsnhP4nW~*0!A@`iI88+IDHqL}U@!#*8K7 zdQ|&6V4S=AJMt7U8~!;<#YK^(MMIv^knZHgB!O=timLDmJtVP}iV|iJ9S>KjST)R5 zV^o-tI66VgY-NZ^bnNVh7uYBpXV_SrrlK@G!m;dVMjU0MqQD7QlI>vgy6s51j5@wm z>|0(+09)wjll6CcdAFZTK~pwxaOGto?a h<9luWd5~^&fmhyVmcKrA@(b@Llph%rZ)DG1_#0wKobmtw literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/toolbar/btn_cont_prev_on.png b/apps/sn/public/images/map/toolbar/btn_cont_prev_on.png new file mode 100644 index 0000000000000000000000000000000000000000..fb2d55cfd501dd6992eaeb156d36d47badd017a9 GIT binary patch literal 1223 zcmbVM?`za%9FLx8X+1VpH?6wvX=H4Q`FYJ<67K9>lXeEZdR&ir@ASFkxn8c#50lhO zI|r*2SH*!i26Jq%u@^%I+cEa8ibD@K+5P~LF<6HPLlIw$6%p%`w%6@Nk+DGXJkR&} ze7?WGIa?TcE8e-YlOTw=c2F(ibzAgyY{uUY&b}JQOHVLV4o017(10Eya)whuK(pW& zDk5l1ow$Y41Q9!FmdZgne^}NXi-r+~4lNh62_iiZx=*pPz1!@$VWUA7X?nJjy`E2JJ8e&iEn7bG-QKIL9tRXC?0VFRb~6DlvM3!DIQ8( zlGDXXichxntjAZxgedT$C~$0oDb_qx9f@tEDy)LbdNQ+cwq zG!PRubYFUWXJ&Ep+dUV$v>(oA({~3peSdsZIR}5qrnlG2F?zDK^XA6Z&!3<9==ae> z=ix;5O7Gm#h7-xYzh<}ov2o!+_Q{sH59c1m4`{vMw-;L1X2grPn>SzYBU(ScxA?}3 zTP|FD$<;n37QW5i&sDy=eyO=M*q!ORrS-m_Kb1YT894x+uPXUd?(St5tgh4(S}CUZw8N_eg*~&k`w>{ literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/toolbar/btn_cont_print.png b/apps/sn/public/images/map/toolbar/btn_cont_print.png new file mode 100644 index 0000000000000000000000000000000000000000..82596b83dde3b544f18fe65638d86932645748fb GIT binary patch literal 1318 zcmbVMZD<>19KWV*)}|@RUT7P2_1O(uUwXN_yft?uHtAi{hBa-?g6k*kMe!9OKhyJ!HLYcJzJm?BPzdc+8P$^SG8X%YqKExTIwv zNGd`erlBA$%zpzT7}k7J&PAW~tG0tK1^s3>!)!B(R9mR=U^Eis9M zEr>ZA#kZZBPE7$$(;*0YLxf2C!(fo{(m^Kd3k(1sMTba=A?W}?(JaNV6b*JB99h$) z9Gm77JGRg%iWf|?$dY8aT=tgzUQN%FG{Z0?UWVqK(W#5t3Og1#XZALsrNiz^+b8slofl1rg%w?b zAeIvcU=oVT=nFSt0K;lV)KuC|$B*%{o^y+ij=PXE5E{b*Jq1IQ2cZolIG}1l{NCpa zI8c=!ev*w-aU%k=>d`S1o*3&-$zy{ur{Fz@L7>1R1374mppYBVEWQxL*X;6W?}$kp ztf|<8L42K5I-UR#-GqR3cM~%0@dF>{rdiI#m%Q?%V3fNDJ8~2e8~(VdqN0dHf-Vo|pk~K}AdYU_imLDm?Gycyq!0|GSt3Ju zGX$6MQUoJ%bT=*gB_GpWv9lFE!uflnz1}cOQy!Y`J}XSTm0*I<^Sf7M5IWkS^m{L6%p!4XS+EH=&(6VP(u@BqEUHs z;c*?qs)(2nP8EKXR?Fp{8n&usH$4Eps4AB0OPz^N4ovL)?%a52)iv$I{xHE`FMr*2 zEA&Wxu_|=1u6VV?fSOl6ynV)13bovLiJO1^{n^FWjM}f7@u^?yK0Pf<^GrKCYkpb% zHk`QAIz2qUn%H&AsFj`uhntGWL-mJhm(q>#;=+>M-s%15#?-E#gWzr#-qms)cf>apDew1Ikfulj9yo)3qMh=mD(P=vOKx+?V0PPhf>6`eM=X5K-<)* z`z_O*p>x}I+^b&h2hTMW%fG*MsU5g$BwzNI?_I^$!K>`#N?`7{fN-{>dG68Kj=819 zw&sslK5HyqnJ8@Axp;Y>_ua|!ACPy>lRHMXFCP-l{ld!|o}T&}$DFMw literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/toolbar/btn_cont_ruler.png b/apps/sn/public/images/map/toolbar/btn_cont_ruler.png new file mode 100644 index 0000000000000000000000000000000000000000..501e460a4d0f36061b18320b4e6306d110d79d02 GIT binary patch literal 1353 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE;=WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2v2c=CaI?h>{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH z)bz|eTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1n}DR9FEG$W1Lt zRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8ZIvL7itr6kaLzAERWQ{v(@i!swoov))H5`- zv@kN!Q7|$vG}AY*)HgKIH88X?u(UETRDc2{plwAdX;wilZcw{`JX@uVl9B=|ef{$C za=mh6z5JqdeM3u2OML?)eIp}XpbFjM%Dj@q3f;V7Wta&rsl~}fnFS@8`FRQ;6BCp2 zOG|8(fG&l2A-BNS7jAG~F*KlnL8f1kSfFpHXP}>(3-T9Ob#X~hD#969RTqa;7NqJ2 zr55Lx79|7YBTX5m85nl>EdnV7y2i@CC=(bdi8(I$$)&lec_p4Mwn{)5y_C!ps}w`? zM2n=P6kVfKLsQ)}1Cume%QO=MU86)xLo>rNUix*UGslHL)bWC?r2W2bKx~ zGV)9Ei!<^I6r7zwv2L!Q5uTZsl3!k|35q6&uU%4$GRsm^+=}vZ6~N(am5Id-#Q7hh zKZV@z(+4_AACy>-5)VuWm?A+;cvb*%;F&2k5150BfLZ0vpQ1np2F6TJ7srr_TWhYI z*JeqSIsS30b)C*9_JBE477JGwK0I>P_2l}=la*ZGIu;ffu%C*3o;2Aw{5w13m>iu%`!)67?woe5t5?B&d#byf3bzR#QbymF#J`{P~fVv}zi6i(AV z6XDA37SN%UBVK!hXTwU}t5I%e0#68hGf;odtDKsBrUi^>bP0l+XkKb|K|3 literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/toolbar/btn_cont_ruler_on.png b/apps/sn/public/images/map/toolbar/btn_cont_ruler_on.png new file mode 100644 index 0000000000000000000000000000000000000000..676a81bcc59f2fbb3855cc73866dbee66b17836c GIT binary patch literal 1339 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 U{IcV(Kcc@#wzpru)-!zkU$H`pp#T5? literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/toolbar/btn_cont_sketch.png b/apps/sn/public/images/map/toolbar/btn_cont_sketch.png new file mode 100644 index 0000000000000000000000000000000000000000..38a5f507f28bf136f1e37f4094f6331d3e13fafb GIT binary patch literal 15103 zcmeI3e^gWF8OL7=vy+OeipqXy(*Uj>Np2DXB)3T{5-6z#F+zn_gv-5e;2x6Pn0q0? z{o>eTTMl)ucszBjt=*2}%+*s*|8SLhSm};-b8~vub;Z@mVAl1h^RRi^QirR1ZxWK1 z5PaL6{`uydf%nul|;zmW|9$Z=IWJ?NUNe!n^o{qF8vk%KPt zgVl{P0QW3WzZu~919<>g3dFhwrNO;{u)HZfq= zPMmmCs}Tjec1wxd;0{*6cCmU#2yWg{Q^)V<;H`pots~nOVNn7}ojl~vCnN@Erv06;#B8|ylEM*K<#%R_V zjI6=R8jPCwN9)K&ku4;6S&y?SUJm_b*S0H4kY$)~IIIsB>!nZ|W3*bWjKRd1Ogf~{ z$=v~ki|7J!ek{p!9w(IfkQh`%DWFmFa;;LQV%KWbLWxiOzWl*Np@1A`hbS@;F31@5 z1}2?J;1ix;XUG>Fn!q#A2mLUh$jE0*>kGC^iX^v7bCgVU&siAFiQAp1op!u_f7;Tr zQrU$N#F3_T%5~jA$atVEb%uCY*@bQ;Ki%CcqBl7?Gcu_?bB-NG#5rtgPs|ow3b7fo zp?hU3LXcCWP@N?C9I;haJB?6NQK7D?GR*^9#DE}$<<&MO)smd=WH#vJ6zD)stIlB2 znTqR-rL3`pEwQdqSET_<5>uw+a7%*d?M|1&!kP_u4osPv1MMGyQ@GES1=nJE1fKOu zAwQ=$L_gOCnP8yJ#v~gtWnxva6_QU1p7PFwUc+F5}wwS#<^cp#VH%B45-MD>LYNy0^s=FngTKIygG5f64 z8$%*G={O&zQAhtpOQcCNt5mfpqxIR1ty{Euqi5M>xP4~pbcaujo=HJ2Btvz_*|pPK zE^&w@&M4Ir-MK8stEZWRS2qL{Y|M<-RIp~j-MfX2l|=fG%V zX0;_N$Mg;AoccPW`ZALNeHf$q8@J-!sn*6jTk-BxYtmUC5EX|hUM-~=bEzk9>{!^0 z9ulCVw4|iC#KxpHr#foI2=p~LMYMlqbyb?seMLQ~9chh?a~ZLYxG^?W*uV4WOvYN# z!vcCvVG<82GbcH*5x(Rgc}HJzVmuu!g3}C6cL`1lN;=*YVV~UH22p3RXI1OS< zaS;*W0*VW#L5wLbA|hNsap5$GF~vnhgbOGxoCYzbxQK{w0mX&WAjT9I5fLt+xNsW8 znBpQL!UYr;PJ_#0N`p10PKDMmP`H3r>X$BtKQ`-uZz5Y;N78)-15A6|N8L9gTnH@ zpO4+$6|-uPblACqUNOvNWxJ^Yi}VAIG@&e-CfLXiK` zhr5G&8(z3%+2dMS^LF9V!LOg`yyyZ?6}U5wZ@8i9nGgEDdDr@%z0=jd@fYWn+{%l) z){XyWY;5fN{F%pH&Bx3CY3<4EA8@_&iA`GF_^U&&4GfQukFVJG$Yn9VXwzq^!MFH3 z886#=|NLBY-_iNY`c7SZ?|m1z4!q#NN60gHN%$5xzRdefx672%GH~qJ$91JIG*z#9 z)_l!!w%1pBqW1C0uUT03Y7u%t@#OaJ9$ob4dad}VC*0ipw~-J2Q{QrL)=1%33SKYx z^?gTQtG%}?Z{+mkg9olGab>m~J!I{;{>QEQ z$-zyp>_2}ox2MMSy65n_yGKVy4{~|ip1$-cxAciaR(``4$H9ZQn>ZGElbZchmK54UG99#u;9T zx^d&V*3B&+KY!i$_SVAgZJq~DzX(RxzcD`b*{4;bXWq;NE7veL7hW5A2rWk7s;qIo Jx~^sC{{X4+y>I{k literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/toolbar/btn_cont_sketch_on.png b/apps/sn/public/images/map/toolbar/btn_cont_sketch_on.png new file mode 100644 index 0000000000000000000000000000000000000000..79fb54e0317a2ac148d5c32b46b6cba4c8aecc13 GIT binary patch literal 14933 zcmeI3du&rx9LFyYc?=OBfIL*1vJDs3-u9Muy_c>8SLVj(2HS9*#K7(C*>~E`#GxooL@^MEJR&3@Aj-hS2ok48a3En4AV}u9ZP%W49S015o@Q-- zJLmiT{m%WINAEv(`Ru~yho_87p(tv2ex9Qkevee&Lk7Xm#^p~BhhIYjdF3)i4SPa; z_oFs8jiD%Os#xk$T+UgXAo=vXM{)yw$QOWWin2`$1$dzvC>l4Y6#d!SzxVFfYD7=A zw#@7_I0HGLO3Z5rf|7>9QlX(*U_IJt_7q!)g9&^<;WZ(j*DrISY;8C%2V=FF)@s5M zr8-+XT`j0_IcIBfq#)3k^%k9AG+8xStlns5t<0264P!7`Xah?dr|1ku&cJd8qbB;& z+EZX;3wkQJVn=SY9Q-d^Tcs!gj;8DC>hyIcy%emZjV#O328L!B9aQM#dcVSlbbfha zBuRH32atuJ7*IsXuTk^zZmCAe)@s#4u~+oEe1TXYzZ_);DbgW6KpXW2I+@8M#5{qT zpf@};k3a)2@BzOfL!U9JFHj{Zl3XSAQ8L!uXJI%ePG_uk(((FyNlVMhj9Q2wiZrQH zF0Bs$x){h(O;7+cYT>0!Om_8(SP`F`9+}jhKF1D1VjniOCt?dPg~$xq;I(o&LBK0g zuvC(~_Q)!m-HlL_lcTPxEX}iJqTeIc$r&~}(Gs8UcsAhR6<~)>R%fv47*nay!ofcS zJ6T#l1OtI?Rteer9+$J7m304EcPYFYGI#GMC)DB6gQFlu;wdX!lBlcdYi-ICN>3A=q zQAdBjC6c7+RVq)E;rgsc)-7DU;j^p+yxg<3yTdDn&!hk!l!3bAvbEh?E_R5;&M4Ir z-nkqvsHd4-P&Wkd*ytXu@nOZBQJeUGCoqy9vG-l0t_t|?wxJ@a!m7TL$Wnz;#|Odm zO1LKOWv@rF_OvCYx6$h9?-hGaM5MLn{B*C_-t%cw4>b<11voA~JO@S_-K#BLIih!| zbLy=L>$4aGe9=brGipV<6RqWUx1!yN*0^)7UsUW&v|2(l;!;oE$gxlYZxVprVm6!1 zHaf96(J@;L0k6v;!u>0&tCE4&74{@{BsG@zWkfon#>iA5Kj-0@jI_d=1$duA$8J=5 zPI7D`Jm4UHMGrVJnvN7fX<%c53yTO95L_q?Y)o)r5upNt3#EaL2`(%mR6uZ{G_Wzj zg++u42riTcHYT{Rh)@B+h0?&r1Q!+&Dj>K}8rYcN!XiQi1Q$vJ8xveuM5ut^LTO-Q zf(wfX6%bq~4QxzsVG*GMf(xaAjR`I+B2++dp){~D!G%SH3J5Ng1~w+Ru!v9r!G+Sm z#sn7@5h@_KP#V~n;KCw81q2sL0~-@uSVX9R;6iC&V}c8d2o(@qC=F~(aA6Ul0)h*r zfsF|+EFx4uaG^A?@m+DH#2@_we)zm!9el8lJtQ08LxCD0uh>aZ4QUj$_%({U)djyV zQdAA>yR?9!xD6Ebq_lSa;arO9_es8EdTHpVrq*v)u9-7t@YU~rOxrnTeL=0;c)0(t zc8h29XwShTU}D$e#)l?n%&}DMe0S5Rw2XpbM>QKqy}2rHTlpKaOncUUAjrA<>pMGd zpV+roKHvGu$@MDmwi8gj4;!hpt=NTGO{& zpS;N5STtbjl9jGj=FaFl8`dlvwQ$*Gr+1udCc9#M&CLPyj^>v7HLR;~MBB#S+V{^q zld}4~5$^;nM{g7#>-TfZh85Q*jjb-bU7C5b{Pd;#YrDXfYU^sF_x6Od0~hi7KhkcU z>%aLR+f)?XTJlTbl7g$vTh9)Zetonsea{b%Wj6oAfArO{bEymG?bsE1so?XBqn-W( zLo-|2Pw!qjwBz91?FTlc4&J-xMn-ef$L1GLRh%g4C}6%Hahi1?QJ;Aj4fLPyJU3ts&XgR^pt literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/toolbar/btn_cont_zoomin.png b/apps/sn/public/images/map/toolbar/btn_cont_zoomin.png new file mode 100644 index 0000000000000000000000000000000000000000..ac32fbab0e40672e44a693e84bcd96418fb29c4d GIT binary patch literal 1456 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE;=WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2v2c=CaI?h>{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH z)bz|eTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1n}DR9FEG$W1Lt zRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8ZIvL7itr6kaLzAERWQ{v(@i!swoov))H5`- zv@kN!Q7|$vG}AY*)HgKIH88X?u(UETRDc2{plwAdX;wilZcw{`JX@uVl9B=|ef{$C za=mh6z5JqdeM3u2OML?)eIp}XpbFjM%Dj@q3f;V7Wta&rsl~}fnFS@8`FRQ;6BCp2 zOG|8(fG&l2A-BNS7jAG~F*KlnL8f1kSfFpHXP}>(3-T9Ob#X~hD#969RTqa;7NqJ2 zr55Lx79|7YBTX5m85nl>EdnV7y2i@CC=(bdi8(I$$)&lec_p4Mwn{)5y_C!ps}w`? zM2n=P6kVfKLsQ)}1Cume%QO=MU86)xLo>rNUWt*UGslHL)bWC?r2W2bKx~ zGV)9Ei!<^I6r7zwv2L!Q5uTZsl3!k|35q6&uU%4$GRsm^+=}vZ6~N(am5Id-#Q7hh zKZV@z(+4_AACy>-5)VuWm?A+;cvb*%;F&2k5150BfLSGky|Ijef$@T;i(^Q|tuGJ=)R@VI74AaU{le>72KO!7fuWa>2}Ie z&Px+q>%DM+(9x+=_UA4-6LjP~_xS^FpWfm5(#mg~{_M{4d)0MMmjtbBSuGTERP@RN z1F?^M`X71hg$<{^zNI_ERa>n<_W8xe^)HTY$rD?%=fwBwj6=S6j>=#EE_kbudwt2~ zhdUgqH>Jh6SqaA9FJPW;xMI8K?*qv%9IxvoUfk6m#j}uW_C>=zZK*sgdOk^x^Y>X5 z%8376awXZsAnoRX#fFV$p6mazL?*D_+jXv0qmM=Ps$R+8H@mXz+phg=e{Iov$>aB4 zyXU6QZr*a3$p7b&-Zrbwn!kC8%MIG^uZv%~?*Hql>V*eOV~$H1Wu;$a{HZSZ+uKl_Z)o)3-N?CmprWqEX-OmavF+I_O@d=LK}H)X%aoP2LLt$54! z_=IEhorfPd(*u@!W^m|CRK8UvAJ`|neGgruPotdUP@%jHkk2`@cIySj|5~^Nr*J`&x j@lL

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 Zco=fBV?=8EXZ`~fgPyK_F6*2UngAUz``rKl literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/toolbar/btn_cont_zoomout_on.png b/apps/sn/public/images/map/toolbar/btn_cont_zoomout_on.png new file mode 100644 index 0000000000000000000000000000000000000000..58dcbfdae612b1145683f6741dac9b41edf52d0b GIT binary patch literal 1376 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 K*j(7X|L7Y4DSLzf literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/toolbar/btn_edit_add_on.png b/apps/sn/public/images/map/toolbar/btn_edit_add_on.png new file mode 100644 index 0000000000000000000000000000000000000000..37a8362987b46888424750223931ff9dcabfd876 GIT binary patch literal 1168 zcmbVMTWB0r7@n|gX)cSP0UN7$nD|g7bD!P0kTu!PY?_5`8a4~rhX_48b0!%!GiNe$ z(%nQUSfjKLf`}l9l#0;yNvwrZkzz3|rD*Y?`k+Wl``!zEPHE31yU~Zx2M1=(`Oo>k z@4wHf>8V56zSsH~hRK#E?J8Xd(|7M4`u+6O8(F#xky4$^V2`w5jF_T}8wivGIFG6b zx+_aJ(I~@Yj`_7ZsaFo04i0#j>hSF#qG*O09cxF>X(9p|Xx9N3qO%>8Cuv<>m zE7QQjF#=sYa77Q3EVwI@2Zs8nDV z2#HKVXti2=OW|=mFGz-A2%;>=GDkJIWF;i9&4tNum%&Df6Z;YIaR^dI*ucxAz*0}Q zLI|QtWt%umI*Fnw6WTBmBwiGPAdPENJ0Vr{uNymRC$*Ib300Kf<=CP1@P@l!n!6Vp zN)@R$=8@Q^MS+Vpc9sJalCoW3=?(AtuBocBqBmrPQxr|(bWv3}J#WaI;yKWR5NUbY z>+}SZ{m{j&&<4lq3vYM?LWTf&yQ}8|FAyL9GQ99yF7QY z|Mi~x>u;U2Mz4PL&*V3&Bj3LN%IxBsXD{^+-R!mYt6$zz_Wt#%aDM2MBgKz1(uEJc z_yYj}YyQ@WQuA*5k0_U>?C%a9 GJ@FiJba;LM literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/toolbar/btn_edit_del.png b/apps/sn/public/images/map/toolbar/btn_edit_del.png new file mode 100644 index 0000000000000000000000000000000000000000..3bb372ab9ab05574c7ee2f65e5686429a25c7a91 GIT binary patch literal 1160 zcmbVMO>EOv9QPVjP}gb*RZxb8-dt2ZgyYY|vDHvYoV4k1i9)0nsgw3%zqF>cpJ%@k zx7r~f4pd^Ia6r>`X(tYF;jkkd3PhT=!{EY!kJF@yohEjeG$fF^=Qinfs5s1${oen* z|L^zz_EKqlq^IlSE{0)xilauEuD$WQtCN1eUizemF8fJ-lAOggQilOzhHYF$py-%dgaO^BQ zkun9-&!HJ-bTL3@7so5s;;g0F?9d4?80nP2MFfJ#o%2FH%CZ~0I^D;|JPS5d$ZVF~ zbZXKpfgBDHNF~#pCCV9~YDqDrWhCV|kOVQ!3mPvfoFM9grVAoyJuI~r*fqUu6k4{Z zlx1fK@pYcB*Xzl;oW#L2FKU{`3lc9$9M#~$1&_dp^TPf%gMmUTaD3um55$bHiswm| zrJinv;QFSyMeK#GMA4M-5%hU6De$fv$F-pyk}~?&jcv8V%7TyhG79m0V9|Qi`rBZd zyZ0N46{$D+nZTh%fpZ47=3V5GqLF3kP11I3T~Q=CQ+mQ|I@2#U;Q(wfA{H4D}t zL~2^9wRyI~=Y(`#lGVa+PEkcMuVwP-)G1jI3|gClVrXq_(F+OmEY!B`P}?nR{=HZ| z7a&M*P{DYv-36r?OmH}ZeUQt=Rae203CFW>Jv-p=e2p%C_+K|IHsyo#NwW`A_q-k7!56+pSTc!qzY$ zk4{iPM`bNKaEFfB?V>SUiC$FSt*;LyQXhPH@4*Z6W%lCJDRA@9%HP`V!#m$Dcq4o5 zN8c~^HTzc1zuH4Sy#cT8=ze$Ym+C<0u|%PCi)sF`YuPnd&y6&Gbv`rqNsm6i(%W2L z>K^*dx0!oauh-z{PbW*y4*uAj1_RGQVz%R}&TkKY_Yi|sVQ{Q*=7)>v9dG{nsQLS- w*68c*;Q!qJ&852yCh9t7i(?1QcQlv;Q+gt;UY>e{i(PPTN@e1(pX8m*%Mb6J~IF(|lb z43{vnXU;6+K91Wt?UXCDQaou`#Eqj!C*E*-BoPuEa?&CQ7=li%=G2SzsDMIO9>&5WKLb#bDyl3LKw0!~+o{s*)+1 z=9#A(A-I0AxJm4V%|x-3i4Ek7QXGn|8^yJ*9nunh@5YweVR^>KVhM+2DzI2RYCSD5 z%iZ>dB1PtnaVl_FQP8AGtSJ|Jv|y%rb`!T9+fY?mNmXSW zRHSQ?E~vHw1>IIvp_*W#4doO>NU~&A}bEddgOC_XrwCnm$i?I*y&E2*ybUfI-+WpTrld(s07Z+E1cl0mER`$L4Ez@!D z<2yHQzIxSuHa7qL7l6Av(Eg=)X?}V?w{MiY`mbEQaciwV`ZE;rL*~PQ(ev*BDED^b literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/toolbar/btn_edit_next.png b/apps/sn/public/images/map/toolbar/btn_edit_next.png new file mode 100644 index 0000000000000000000000000000000000000000..df4913c9011ad2d2444d0f997baa68357fd2e5ff GIT binary patch literal 1209 zcmbVMU1%Id9N*+>kk-ROqSzB*+$c>;_j_;mcF8rD+}@d!Ts*Fa4Wg}cyK}kiWp~!y zN$!&RQjrT4ltz$>FCtdaJ{0U@1r;npKolP=TA`o_3XLBDUy6k~o7_boLLXe%nfcHD zf4~3to~_J2k=&cw%P>r`G;LMsJ`%t84$<}1vyUX{c7PP-$T8d?Z5SeE(!q5EN*o7uL}@!z7m6+8miH&zLs$co^&O9WS70h8dse1ki3F0_teq^|S0BAAiaM*U7TS z(`B(7OY5P_iME%=ey$+BC#COya30t>cONGr>3 zJ2h9XfIJQnNb?$JOG*al1}~+JjI163vM6bSXb6(ZiIOQArYM2l!%}OZ(=e-6v1f}) zS++??UaxNqimr1RQB}B%X2_h;>VRCGi+BSI+IvZ}K^yz_taCs3z^xLN+wJpC)$k@0b76sWK>OvtAb z6w*;4UtN2fj@kDmYqHk4UcY_k&O{HxlZzFQ;lvYq=L6IQ8p^h3@Mkho-wHhU(9O8>{}< z`bYPvf2Gfb-PFaz)xXblUx8QU%AfnsU4DG@y=G!_325(^Oy{wKHzz;$bT!Pa{k$i6 z@~2_#EqMB!weX%(-?c8YbUpe3JpWB{bUoLc`F-_^jY4JS-G_@8&$p-S5$DZ)mu`P) tUAURM_0Y)agPRA6OGobiZSX+XMMa4i0rlnS%frK#s%`Uk>Gh@k)g literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/toolbar/btn_edit_next_on.png b/apps/sn/public/images/map/toolbar/btn_edit_next_on.png new file mode 100644 index 0000000000000000000000000000000000000000..4e5540b55aa8b04368d7faec600a7f4ea749959b GIT binary patch literal 1205 zcmbVMPiP!f7@uumsY$l2q#n|$3=<12Iy?V&c7|-z&CDiQ$;M^7ko6MscIIs|O=jLW z^OBiFP}4)%3Ldmdd+5PXiXbSYhay;7ArZ_)yi|jFDtJ>01rekW-z2-yL+HVQnfJc; zzTfZrKUb?$J8keOzIYLvmnvQ#;#A$6g4~&`@mX&m~O&3$15<8zka~bj$L4; zl?q?+4LI*itOoGn>QvoYU9dEp897f6$2uW!AqI5pE_$IJ7nnU>o$Qlij-mHd@Iryv zcdAjT(gq43tz>hoB}jQ%)v|)3F zNCjpdV_)aED2lR?ltsZDCuo|+@ggUREYV=Y6%T`$^}?Ypg9$?`aD40_k4_jt6D{Ea zLpnMU)nJI00*ln6HPi)@ z+&$Y+qDZ{a-v}I16tHL_YsrNkE}I30++=OX)@50g@=Z}If}%yP!IcFbe09Pa8&3b(KCl?RYkd!gEQP_M6l z>yKZI-{~7%+j+4a^=uqf?)`pj>!N(XRPuy1IGc!s&MO!x`{P@mgAF^tZXuKi8P; zfgx~>GS@#$J$dp1y?pt~t8dPv2k#!gv;*y+q6zJxZ)V9G5xjH>T-y?SSQyAcs<&TqlSan&ZZbod~&em;wjS`eA|p=lV?^_+EiO zoUg%JRKhKP|5A((E=@Mvr8(F1_~M6PtYa~P08<1y!F-rlodUngYq5QLEb?Ggh0YcD zHK(R)Q=mj*4DvZma3#e6x|x&mrXj0)fD9!~gr+E|0+cLhT2KPrhiBGeuW8loO4k;X z3Ve&w$P&eNyPaz*ITFu`l4+VEltoznQAga~YiNmCuD3&s@gCbGNK`{u@xK_0jTF3vpv7vU-Sd6e(#|c@8T~?3gNDs_% z_hLh-BJ;-jIQCgl(7a9Dg#d@NY8QBRlkj}-L8)U6V`_bhirmk zHY$8;*G)ENSF83!qjS&s_t~>zCf_%dIny_hxf9;|d+Q$!X|Q$r?bE-$vGQnC8$5FN zOK@n@gU8w76W-ZvgXdmxidP0!oU>nCKKE$fm90PBhS|&ow7nl5+oq{ApB}Gp=KcO# z@h3-i%~!H-@rzHn!4K*W@U_>!`F>~L=w|TSn=22;Zw$3wE0$-z+p+9?`|i)n&Z+F4 z@iO?c~0imVfMMS)aMi6=^rf-sL^bkBaF!SF3 zz5nm`|DN-s!^hIw4s7E%E?pY3D{S49yxpDb``P(}X}0XA#W8x4)M*n%nCo{*4TF-8 z#&HEBcjnBWxR>Kn(_VFqj+IXs4)HT6(aE&@kfAxQx6lfaGl?mv;c+i8`KLE-^1yRV z{#3RM%b|rQyrJ0$pPU`8IWxK+`i)R?o}oQ6NJpCqiA6Q~^o`)D0+s^@nHHBDZc-?7?+g zOfvZiN<%{wo6TmXsbokrE=szti%=G2SzsDMJQGmV5`y?po59Ah6L}%^NB|N>R3lT= zxp716I&=0r3@5(KZ$EqJEj%<%8gC6P!vrQ@=#TTd`_1IrS70Q zLRibm^)}CDcnfM4)N{FhOVuQ)sOO8h?0^EH&1y5K+IkyX3Sx=^2e)l|%r?X3`)#%O zMyz2)7*P^c32C&uV03~|5>Jp2SXNSX4fLGy0+%%7!%3OeqPB75O=EX3B0gBnv*B&x zgH~6Ou1UI}x(XC@S5<{tmWeKu^AI7)kyVXf$GdNvKan{lCe89%^R$mxM<&~iQDDNx zFyVkrP{c;%+VqzJ8?&n=yT97{r}p2KWBa*hM}D6lNh_bf{B&gLN??9_ zx~FULuepDFv%l?-8-<-eZCU>KczS;S_wOuzF!%R`U8$vX-1XqX!vjMX(c{iaW8bfH zm%h8)_0hiWuTslh;N{5seJ7sG-#Hh6o~7&Dvf1K<$@wZg1a~+A*;3?u+Nc z;L#7Ncy`CsrNz+(8oKz+RetOJyXAX-+=kXu?lLId+S_4eOUDam7Zy9aA@}uG?Zvf~ Rg;esdC>4k8p9ent+h znR&@ha%+)xgY}@G*Lo3p66;B@Xh21*7e(lyNC`c(;6>1bO9`xRlHKSb^x(kEd;j*V?6 zOc|DgB5u0#+abQNy->BcS8c=Lr_X_@*klAArU=B|nje{QoFED3TC^jF=T{SoNe$-18OPLg-K$1l$d0rCNfp$bI_+K}U)sCuL0hTH_A{(L2>d~0!gIVsL zY$#D=-k6J_%Zh^5EMjkX*rz2c&$AoRaUE0B6g5{@R6$jBUC2RA6>?ca5!8l_8VF%M zt2FvN$Ki`mSM|c2GE>xaS)Mg=v)N2Rh0tQPnbRzzk1hETMZS&uwq0hshn1g*HH#re zl!R46*7{wr)FhNdO%i}&F{!!^CYN2`A+6~3q)dlVTR3z#u`?GE4;&b6n$Gv|&i~Dy#GI0nX8BL^^p99aCflP?V8YQbVV_M< z$VTP0lgk}8X17b$Of|k&-|u#()0xzB>5o#w*Kck9y1584FSgI@{QUPodojKK&gVBC zy>L-HeHT8nm#Uu!_ebdbu$V?y<$|0Ze|7Ay)cQd6>+$AI=~L7hYrk>%%a`v+r@!Cr zHaqac-$o|A!u88Hg0@)ZF9{i()vKbgPQ8QE{2*}v48Fb4npVB&|uyV9v!-#y+t zQM@zs)Y-ksod>4|&s}@?sB2vv`=T?v_V&We#~?K|@W6>jo_>7tC9um~Y{B1eUfKO6 P`CpV~7p%_;m#+K+a+G{1 literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/toolbar/btn_edit_save_on.png b/apps/sn/public/images/map/toolbar/btn_edit_save_on.png new file mode 100644 index 0000000000000000000000000000000000000000..b035687d6f910df7610a77f62ca19b4fed5e856c GIT binary patch literal 1190 zcmbVMU1%Id9N%l&GffNzTks-EmOao`y1TOA3`5o*q!;$ z{C~gy_byLOKG)atcn`xcedP(eO4q~b+nuG~E6Y#z(Pe;)O_P(jL7Ff^%!rHYh%NhY z22~Ms7hhRNLk!b(&Z|w6>B`-D-0v{2`CjNX7n@Ne=<~8X)Jr+53TZPP( zxE-gaD^sk6Bg7VjBJW6w&T57r6%1WgkFhe4iXt#XN#%iL0>cCn+kQA|Epi)X)gEu# zqEd;QB_uROvDs`2O+~=bj3^m~Ap%*HWu9vA@nS$=!Uu7_!(gM>iM)__IABvoSjP*b z#8FRoLh!>%WtTXJ+litn6B8JUk^n^CPvhFwj!6~$>&Bkiacwa~Vim=BA#!Lv8u<>G z=I+6UQbp>Gc_Q*?QQ*9dodq8Sq->WsdLy`=YpSZO=yh4)6-Co{9jFSg7Y&(L8V+ng zh_s^I=R85k`41KIv7*znUX>G<;+vs4+K}=xappI>i+HPaz2VzYt zLXhC7hVgu-3#Midx49a@zJzQJ5k#x^3EZ5JiY)}&z$K~zg>9`>~Gyu`kVXS z`eEw&X!YUyS6_Q1zkc(=?Wfjqe;&M~=U;ywzMM$)f!>Y5!$0@GdvS1eX)xF2{E;`Z zzg^3JHM%6`R@eUC=(fJ@dFa^2k>$-?_V}eAf7)7G8UP<$`{K;mdr{BF`wwm$?SJ}) g6W&_6!(_6|=G)qd+b^A0(mzLeY|{Q{^z5tu01BFZ^#A|> literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/toolbar/btn_edit_slt.png b/apps/sn/public/images/map/toolbar/btn_edit_slt.png new file mode 100644 index 0000000000000000000000000000000000000000..aaf2bbd08f4f62a2763eb461660e9a74eed16ee0 GIT binary patch literal 1288 zcmbVMZ)h837{8?2cGI}hb{pF|eS6i}YA^REmt5{_)~5NhhAlOufrf$7H+OH^qq)26 z?z*I9j7~>Q9pZ+rh#$m#6F&$MnXpn^r5_xkPOyTCI4b%@VLB;HoYeQ)r23)kg9mr- z`@HY-d!FC(@8(m($2_|a?j{JrlNgGo@!IaZ&5ii`%KTvuUJlr?tUY4n?GiK*5mt;G z0tpR{qcnob^r;)Dk02UOtC_5wO`ecsL-RsM$6MBl7)=m;{pBK*Cy@lEny`P={trG%_=sk!L1lQ6c+}g1)kZ4QR-QpsW>iODc!RO}i4_JI6E$ zHdXA&5V=Jvn@oX-VItu71}K^J1%V)XS-%+M_+G#Ge0bQ)R4 zlqutSb_O%yM|@%inP*AefrF6ep(wB-#VbCB5*41Oa(*l-3>Rb|WMz&Q$QoYxzxksvDcWh4|1?ki z2zR8j-5v!jY!4IC@dTN8R1QrMBtf{k6VY&{{B7>u#zudG-}O)>yQuyJ0czO$jC9%;+mY`oDL?^yV;^~2?2=U4mUcH;5v$oqPEE57i#9WS{e& z^MC*U{Wl*Q8GbO(+1rUANFbe(vT*J8-i~(oeg4=z0l4gNhVsrnv*?s%3m|dTEC4jE z%VQu5WOa7xGtiG9{uwQock-EsMa9%ZvZoVr^%6uQNdJIal9dVIpan3d8By%|2a6c0 zsZne{mmxEy1Q^#+6$|XE4Cj=}gd(WezyoN%D?$T0aAefgCk{i<6W{3L;6N%?E?tEVU?R zrDW3=l%m+UEk!YS6H+x*WLcVt6lex#7@o%?B+KBD zut4KXQIU(X4EQizY}wfepCEaLA54bh36`g*At5pp<^~y(lwfU=tR%FsX~TA8Ljf({ z8uZ=7ayP|_2@A-MY2{3FvegA6B)qEg=&t>mp_*lTw^ydMs3l-&GeAvR zrjD-WS=2V*z!zCr;3)xTRffa`m1Xe)2St^nBcv=-3eECZ6R-Z?{1K28;Wf*Dnx}OH zJJQ>(j{+3dhY1*Pf-E>HQ*XWTHG=qh(^5R=ep6UpSsCzizRlI2@4evMow^cRdI727 z^O=Q+f7|@|__-rnk6wGXu9J^D1WykU4;MI=zzc{e#IscZUMsk41O!DM;&nSCM4IhyMZe52yhE literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/toolbar/btn_edit_snap.png b/apps/sn/public/images/map/toolbar/btn_edit_snap.png new file mode 100644 index 0000000000000000000000000000000000000000..fc91d430447fdb7d0632691591cb7ed3cb506a02 GIT binary patch literal 1185 zcmbVMU1%Id9N*-$*t9VPl_m{=b^BmS-S55I+a=e_<@RC^y!5ynfWi2m$GX6rI`4of zSc1TsfBPpmL{YIhyIjGQ!t1(;91cV}T!-*=~yY=gL)vwyhL1 z5ibY@FAMAT$ps&dFN~GVg=tf>nDhyHDAWmo12LdOXT}ZmFvV>1>SP}s^9;SMf~Ql= zj#HIFkU6UDWy9pDmta)q%R(5Zr1;JQ2ex~nWxo5f5MNzmutNr9NhT)%+mh8 z!LH_iXIC#Q->bg=#Y^8$O>%eUdN-c^|Dtf{K<1aLH{U#c_Qr5pd9P3D{JrD;JA+rA zFP!f=5sTm4_;4+pO&ob^;IqZ``evhY&^T=NU)Rq4_}9|Jz&DFqD|eR1@80Xl{%~R9 dTIVyp)W5Zt-@Se7jdRgYBcB^Hz8aZadI*!Age3p~ literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/toolbar/btn_edit_snap_on.png b/apps/sn/public/images/map/toolbar/btn_edit_snap_on.png new file mode 100644 index 0000000000000000000000000000000000000000..f856d8fbe60ad8b33078264059e53896c5767730 GIT binary patch literal 1185 zcmbVMPiPcZ7@u_8HPr-GDzpkM(}}bxI6H6t?9R?Kn`E=I(M5L~)};nYgKuWuW`|_v zO=jL^C#e>yP_VU!BI41i;6boOFH$^6MFcPE!4%peN(#0ILA(jtrf-tnw1?oK12gY^ z?|r}D_kWH}RCo7p-m#fsnEvt}qej#<7l_ z=MH2lpyC%%)7i5ap#6*0y0tiCX*M@9%nn65C2$deY~;>*p&sSARbHL$<70tiS5?SN zo?CNjvNFLIae&xNI?G$4oMTljEoQWwr0ilPAZ7)i38KOSQ3sk1M7HyA)LLLS^qMi= zu|=gk*CfQ(1)<$;r`vKG2h)P6X_^2eL6Uf?!G{YTff4V816>9Kg;wDB#K9gLGeQ%$ zNS>pfu7%+GmC8D?7j_awQzk^v7sNCWTsMwuRXZd#^sgHmYKQd&9|<)S;#OeMdNc;Q zV4Ay^8;TXFH~L3`LyH1u4Q#bsQA=vk<1+o85QSmUKw zy%-=!a8Sp1w%Y|0O-yju#6DXr##L9@!2^zG<97H#T&A_C4HP)@$Q}={%dX~GcQ)`r zZ75JvMU7W%8St8|D7=}Wq79@RfKap~Mddnp`~T)opiT*Kv;3!dx<|Al+5!U#zT*Br-j3Bu@4$_1lF<(aEW?M_(~>TT{=OOFQb1 zlPUbla(VPc^1T1am3QV7-;RRRo!89ImAS)%w>K^CWT*BXKUMhh;!X1{>EY1}ufJ!1 zH<-GUFvqzgUvIteao_1Lew_FXK78}uXV*t}y^2=GLZ@dq@z>pF=x%Sc>Bf^Yk98$8 z{H*WZ=w aL1wA??%|6+-#;7wG|Hu_@%`ArBmV$!4Sq`i literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/toolbar/close_icon.png b/apps/sn/public/images/map/toolbar/close_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..e8e76d5d7965dcc6a3f329e47961a1245dd7b4d1 GIT binary patch literal 313 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 literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/toolbar/img_base_map.png b/apps/sn/public/images/map/toolbar/img_base_map.png new file mode 100644 index 0000000000000000000000000000000000000000..7f96fcf5e98fee63a2e89b39189059f7d38d82ca GIT binary patch literal 4537 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 z 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 GLH`5!q(X53 literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/toolbar/img_settle_map.png b/apps/sn/public/images/map/toolbar/img_settle_map.png new file mode 100644 index 0000000000000000000000000000000000000000..1a93f50e8596c02600e6a18cf8a101c3155858e3 GIT binary patch literal 7264 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%0As}B0S2f>;59<-vShb+Zt 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 literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/toolbar/map_pin.png b/apps/sn/public/images/map/toolbar/map_pin.png new file mode 100644 index 0000000000000000000000000000000000000000..b6cc2f6aabbb4b374e65c571ff8fd91f3039d883 GIT binary patch literal 2362 zcmaJ@dpuO>8=s6@G(>hSYK%eDnyWE0XEJISGUYlXCFRV_kx_HmnW3SGGF@$MyJFi& zyDD82l}O1XWwK>0O168`%7zS+wyf=Urs((kqu;)t&w0=LKIi#9&-b}~K4*7C*iw{* zqXhziKyiZET=?w(KVIgh@SeYRPKH6C2#i%kNfH&CKpBK!2_!rS!x4e&Aua?8(!S9^ zz6bf?^+GWd`>OE@79$ieu`7K- ziJ{T}C`lNcE`y@d!=m}=8~A_#yVwuot7O0iM34f+C`B8^a)y$L{a}{?pABLH7V|+x zv4M&GNGdio0uvySK^PxA6~`xe(=jvvPx1liWQrGtOe9eWM1Vk|;D{s!5nvEWn5l(@ zy~zZL3@$rp$`^cNVv`gKDT6@Rv}qH5lQ&)>TTdVX06-v;31l)3*1*Zr#0pS}6U$wv zEwCXuUnZ0)gc32vU=id=QWQ)q%=BXjB57#oC&Oa-RHERN5tN{mK*AFVB9S4k5884C z7y2)a&uYt~)1(lA3&|xZGCo|7MAvCBoV$N_WKe|JFv4X*xG3O8wuGM|g2W0An~8SV>1lKLFguDCkzFDrg!<&ec> zy@=T_dbP1#wA`jltIgCi`_nqoI)GQ3+ePU-%WH_dQPX9pn?HFjw6ki>d&+hQ0`|(% zNBXh|KiJ?+IbU~-oj-4i9K08A1&_|5=!MzO=pz%8k7W%BJf2bJUo}pBeZQ;w$IiP( z4ski-6?17{%~I`ja#~W!W%<$%hS9t3&pIU<+FFD!j5l{$;^rbdtlY4Bt5Vr}Wo|xt zplIG`%y$vt<0pFltX}@$L4NU(ozJiGO1IaJ%1X-1Py6TPKE1k!o?3lkY^%-e;43H2 zZWlkYyoKIYQ`6LhA<*n&jPkV4S(EDRd6I{tKS!=n0$0bDt|Pd)yQ`O}hf-U*+&i)` z<`$#c;Lw!Udu(U7q3^j*u(@ZQUScRtSV(XOiRxbuPU>bxpdFx<=||qw=#MqcHU(D5 z!cwW57pTf5^e4|_=JdwD|3Y69m{q)Xkz#F1maZ9j=ERbV#kHMyoK3+oI}4SYX4k5$ z<8_Gam?9&Gbf%}BY(!~Xa_|6hf@v1^7(eS$sY%1YXy7}+{=ukvI<~p)Ot9ZY9`Zn! zS(PKox1_=J*~tWvs#+g%Ep@-M-`m#tRn9-sm+CXOs5uQ2T_}&nBS#0^S_-m#SP$1+ z92Nw*+PLZ3k*98ydVL@7J)XtmHV?Hv$v5*?+!!u$tDwxEu&aKe(Qq__ZQaJnJwv+S zLZxwb{N3a3JK-~@aNqgx187uUiG4NvSz?qExuuJKyT3xF; zdOJHClI81hFVbc%rIc;G%{UZ0!=={#QeHzw$n`O=Np4h> zi@Uq~@Suq5WZ6l3RAXKSQrZ3O|nm*cVSL;Okd1y}xWyhC} z7sSVo^;#nDR`*0k^9nAV6a79G!kS-1Y7yk-%tLTu(9Nfv&k339krtqf_jnFeS3lV$ZJbE*y^z_FZB+p^;SV=q$c~7-%BI(P+P>a zB;A(o7UWgOJnieQ^33@S%f+|#>Jv^6qzOfP)37ECdo%0DVE(CFH!U*CsHGu|^nL4A zM(evLzg_y>)1AhiHw*oIBaHogJ1IFnwH{?2IfZ`|7iS+SI@-GyZGG;`%NZHJ{;Ete zceZwaH!w1%YobcVOmo8sn0SIw?f*EI-GmH!u948<+lWe36)Pa?SC>zS($j&%o8)hleH+OkDd8(ZLdDhH{HXehQxNvhxWK^iWM1LBAL}-W8uSqtV Rco_a>IDuj8YX5|7{{e=c*p>hQ literal 0 HcmV?d00001 diff --git a/apps/sn/public/images/map/toolbar/toggle_off.png b/apps/sn/public/images/map/toolbar/toggle_off.png new file mode 100644 index 0000000000000000000000000000000000000000..d5dea9f6764543a8a2025d215fe00361460e3da5 GIT binary patch literal 1591 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 useContext(GisContext); + +function Gis({ treeData = [] }) { + const mapRef = useRef(); + const overviewMapRef = useRef(null); + const [mapObject, setMapObject] = useState({}); + const gisCore = useMemo(() => new GisApp.core({ targetId: mapRef.current }), []); + //const [treeData, setTreeData] = useState([]); + const checkedLayerIds = useRef([]); + let gisMap = null; + + useEffect(() => { + if (!mapRef.current) return; + + // EPSG:5179 등록 + proj4.defs([ + [ + 'EPSG:5179', + '+proj=tmerc +lat_0=38 +lon_0=127.5 +k=0.9996 +x_0=1000000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs', + ], + ]); + register(proj4); + + //맵 생성성 + const map = new OlMap({ + layers: [gisCore.baseLayers['base'], gisCore.baseLayers['satellite']], + renderer: 'webgl', + target: mapRef.current, + interactions: defaults({ doubleClickZoom: false }), + controls: defaultControls({ + zoom: false, + rotate: false, + attributionOptions: { + collapsible: false, + }, + }).extend([]), + view: new View({ + projection: GisApp.TO_PROJ, + zoom: gisCore.defaults.zoom, + center: olProj.transform( + [126.85306, 35.571634], + GisApp.FROM_PROJ, + GisApp.TO_PROJ + ), + minZoom: gisCore.defaults.minZoom, + maxZoom: gisCore.defaults.maxZoom, + }), + }); + + //미니맵 + const overviewMap = new OverviewMap({ + layers: [GisApp.Module.core.baseMiniMapLayers['base']], + view: new View({ + projection: GisApp.TO_PROJ, + minZoom: 9, + }), + collapsed: false, + collapseLabel: '\u00BB', + label: '\u00AB', + }); + + map.addControl(overviewMap); + gisCore.__proto__.map = map; + + gisCore.scaleControl(); + gisCore.changeBaseLayer('base'); + setMapObject({ map: map }); + }, []); + + useEffect(() => { + //if (!locgovCd) return null; + if (!treeData || treeData.length === 0) return; + + gisCore.deleteAllOverlay(); + gisCore.deleteAllLayer(); + + const layerCode = gisCore.convertLayerInfosToLayerCode(treeData, 'lyrSn'); + GisApp.layerCode = layerCode; + + //setTreeData(data); + const layerItems = getLayerItems(layerCode); + //setEditLayerItems(prev => [...layerItems]); + }, [treeData]); + + const getLayerItems= (layerCode) => { + const layerItems = Object.entries(layerCode) + .filter(([key, obj], idx) => obj?.updtPsblYn === 'Y') + .map(([key, obj]) => ({ + ...obj, + name: obj.lyrNm, + label: obj.lyrNm, + value: obj.lyrSn + '', + })) + .sort((a, b) => { + if (a.sortOrdr > b.sortOrdr) return 1; + if (a.sortOrdr < b.sortOrdr) return -1; + return 0; + }); + return layerItems; + }; + + if (mapObject.map) { + try { + gisMap = mapObject.map; + } catch (e) { + console.error('오류 발생:', e); // 시큐어코딩 관련 수정 : 오류 정보를 로그로 출력 + } + } + + const [isSidebarOpen, setIsSidebarOpen] = useState(true); + + return ( + + <> +

+
+ + + 레이어 + 시설검색 + + + + + + + + +
+
+ + + +
+ + + ); +} + +export default React.memo(Gis); diff --git a/packages/common/business_components/src/ui/map/GisContent.js b/packages/common/business_components/src/ui/map/GisContent.js new file mode 100644 index 000000000..2179a53d8 --- /dev/null +++ b/packages/common/business_components/src/ui/map/GisContent.js @@ -0,0 +1,61 @@ +import React, { useCallback, useContext, useEffect, useRef, useState } from 'react'; +import GisApp from './lib/gis.core'; +import { useGisContext } from './Gis'; +import GisLonLat from './GisLonLat'; +import GisSelect from './GisSelect'; +import GisToolBar from './GisToolBar'; +import './lib/css/gis.edit.css'; +import MapToggleBtn from './MapToggleBtn'; +//import GisEdit from './GisEdit'; + +export default function GisContent({ edit = false }) { + const { gisMap, gisCore } = useGisContext(); + const [visibleComponents, setVisibleComponents] = useState({}); + const addressResultLayer = useRef(null); + const [playShow, setPlayShow] = useState({ show: false }); + + //셀렉트 버튼 이벤트 + const clickFeature = useCallback(feature => { + if (feature) { + const layer = feature.getLayer(); + setVisibleComponents(prevState => ({ + ...prevState, + })); + } + }, []); + + 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 ( + <> + {/**/} + {/* */} + + + + {/* {edit && } */} + + ); +} diff --git a/packages/common/business_components/src/ui/map/GisEdit.js b/packages/common/business_components/src/ui/map/GisEdit.js new file mode 100644 index 000000000..7c961c865 --- /dev/null +++ b/packages/common/business_components/src/ui/map/GisEdit.js @@ -0,0 +1,173 @@ +import GisApp from './lib/gis.core'; +import React, { useContext, useEffect, useRef, useState } from 'react'; +import { GisContext, setTree } from './Gis'; +import Button from '../button/Button'; +import { gAlert, gConfirm } from './lib/util'; +import { fclApi } from '../../js/apis/fcl/fclApi'; + +export default React.memo(function GisEdit() { + const { editLayerItems = [], siteSn, locgovCd, checkedLayerIds } = useContext(GisContext); + const editModule = GisApp.Module.edit; + const ftrIdn = useRef(null); + const selectedLyrId = useRef(null); + if (editLayerItems.length > 0 && !selectedLyrId.current) { + selectedLyrId.current = editLayerItems[0].value; + } + const [btnEvt, setBtnEvt] = useState({ edit: false, modify: false, add: false, snap: false }); + const edit = () => { + const edit = !btnEvt.edit; + if (edit) { + setBtnEvt({ ...btnEvt, edit: edit }); + } else { + setBtnEvt({ edit: edit, modify: false, add: false, snap: false }); + editModule.clearUndoRedoFeature(); + } + editModule.removeInteraction(); + }; + + const modify = () => { + const modify = !btnEvt.modify; + setBtnEvt({ ...btnEvt, ...{ add: false }, modify }); + if (modify) { + editModule.setModify(); + } else { + editModule.removeModify(); + } + }; + + const add = () => { + let add = !btnEvt.add; + if (add) { + if (!checkedLayerIds?.current?.includes(selectedLyrId.current)) { + alert('트리에서 레이어 체크 후 추가 가능합니다.'); + return; + } + const errMsg = editModule.setDraw(selectedLyrId.current); + if (errMsg) { + alert(errMsg); + return; + } + } else { + editModule.removeDraw(); + } + setBtnEvt({ ...btnEvt, ...{ modify: false }, add }); + }; + + const del = () => { + editModule.deleteFeature(); + }; + + const undo = () => { + GisApp.Module.edit.undo(); + }; + + const redo = () => { + GisApp.Module.edit.redo(); + }; + + const snap = () => { + const snap = !btnEvt.snap; + setBtnEvt({ ...btnEvt, snap }); + if (snap) { + editModule.setSnap(); + } else { + editModule.removeSnap(); + } + }; + + const validateEditFeatures = editFeatures => { + if (editFeatures.length === 0) { + //gAlert('INFO', 'NO_CHANGED_DATA'); + return false; + } + return true; + }; + + const save = async () => { + const editFeatureInfo = editModule.getEditFeatureInfo(); + const editFeatures = Object.values(editFeatureInfo).map(value => ({ + siteSn, + locgovCd, + geom: value.geom, + flag: value.flag, + lyrId: value.lyr_id, + })); + if (!validateEditFeatures(editFeatures)) { + return; + } + if (!gConfirm('CONFIRM', 'SAVE_QUEST')) return false; + const result = await fclApi.saveEditFeatures(editFeatures); + if (result.code === 200) { + editModule.clearUndoRedo(); + } + }; + + useEffect(() => { + //setBtnEvt({ edit: false, modify: false, add: false, snap: false }); + editModule.setUndoInteraction(); + editModule.removeInteraction(); + }, [locgovCd]); + if (editLayerItems.length === 0) return; + return ( + <> +
+ + + + {btnEvt.edit && ( +
    +
  • +
    + 수정 +
    +
  • +
  • +
    + 추가 +
    +
  • +
  • +
    + 삭제 +
    +
  • +
  • +
    + 이전 +
    +
  • +
  • +
    + 다음 +
    +
  • +
  • +
    + 스냅 +
    +
  • +
  • +
    + 저장 +
    +
  • +
+ )} +
+ + ); +}); diff --git a/packages/common/business_components/src/ui/map/GisLonLat.js b/packages/common/business_components/src/ui/map/GisLonLat.js new file mode 100644 index 000000000..2cee2a9c8 --- /dev/null +++ b/packages/common/business_components/src/ui/map/GisLonLat.js @@ -0,0 +1,44 @@ +import React from 'react'; +import GisApp from './lib/gis.core'; +import { MousePosition } from 'ol/control'; +import { useContext, useEffect, useRef } from 'react'; +import { GisContext } from './Gis'; +export default React.memo(function GisLonLat() { + const { gisCore } = useContext(GisContext); + const labelLonLatRef = useRef(null); + + useEffect(() => { + if (!gisCore?.map || !labelLonLatRef.current) return; + + // 기존 MousePosition 제거를 위한 컨트롤 추적 + let existingMouseControls = gisCore.map + .getControls() + .getArray() + .filter(control => control instanceof MousePosition); + + // 기존 MousePosition 컨트롤 제거 + existingMouseControls.forEach(control => { + gisCore.map.removeControl(control); + }); + + // 새로운 MousePosition 컨트롤 추가 + const mousePosition = new MousePosition({ + coordinateFormat: function (coordinate) { + let lng = coordinate[0]; + let lat = coordinate[1]; + return `경도 : ${lng.toFixed(3)}   위도 : ${lat.toFixed(3)}`; + }, + projection: GisApp.FROM_PROJ, + className: 'custom-mouse-position', + target: labelLonLatRef.current, + }); + gisCore.map.addControl(mousePosition); + }, [gisCore.map]); + return ( + <> +
    +
  • +
+ + ); +}); diff --git a/packages/common/business_components/src/ui/map/GisSearch.js b/packages/common/business_components/src/ui/map/GisSearch.js new file mode 100644 index 000000000..c321d8efa --- /dev/null +++ b/packages/common/business_components/src/ui/map/GisSearch.js @@ -0,0 +1,9 @@ +import React from 'react'; + +export default function GisSearch() { + return ( +
+

범례 영역입니다 (향후 컴포넌트로 교체 가능)

+
+ ); +} \ No newline at end of file diff --git a/packages/common/business_components/src/ui/map/GisSelect.js b/packages/common/business_components/src/ui/map/GisSelect.js new file mode 100644 index 000000000..85354d8b5 --- /dev/null +++ b/packages/common/business_components/src/ui/map/GisSelect.js @@ -0,0 +1,36 @@ +import React from 'react'; +import GisApp from './lib/gis.core'; +import GisOlSelect from './lib/gis.select'; +import { useContext } from 'react'; +import { GisContext } from './Gis'; +export default React.memo(function GisSelect({ clickFeature }) { + const { gisMap } = useContext(GisContext); + const select = new GisOlSelect(gisMap); + GisApp.Module.select = select; + const reset = () => { + select.reset(); + }; + + select.getSelectedInfo(function (features) { + clickFeature(features[0]); + }); + return ( + <> +
+

선,면,다각형을 이용한 시설물 선택 영역

+
    +
  • +
    + 단일선택 +
    +
  • +
  • +
    + 새로고침 +
    +
  • +
+
+ + ); +}); diff --git a/packages/common/business_components/src/ui/map/GisToolBar.js b/packages/common/business_components/src/ui/map/GisToolBar.js new file mode 100644 index 000000000..c5c613cc9 --- /dev/null +++ b/packages/common/business_components/src/ui/map/GisToolBar.js @@ -0,0 +1,71 @@ +import React from 'react'; +import GisApp from './lib/gis.core'; +import GisOlMeasure from './lib/gis.measure'; +import { useContext } from 'react'; +import { useGisContext } from './Gis'; +export default React.memo(function GisToolBar() { + const { gisMap } = useGisContext(); + if (!gisMap) return <>; + const gisMeasuer = new GisOlMeasure(gisMap); + GisApp.Module.measure = gisMeasuer; + const zoomIn = () => { + if (gisMap.getView().getMaxZoom() > gisMap.getView().getZoom()) { + gisMap.getView().animate({ + zoom: gisMap.getView().getZoom() + 1, + duration: 250, + }); + } + }; + const zoomOut = () => { + if (gisMap.getView().getMaxZoom() > gisMap.getView().getZoom()) { + gisMap.getView().animate({ + zoom: gisMap.getView().getZoom() - 1, + duration: 250, + }); + } + }; + + const measure = type => { + gisMeasuer.addInteraction(type); + }; + + const reset = () => { + gisMeasuer.removeFeature(); + }; + return ( + <> +
+
+

toolbar 영역

+
    +
  • +
    + 확대 +
    +
  • +
  • +
    + 축소 +
    +
  • +
  • +
    measure(GisApp.measure.LineString)}> + 거리측정 +
    +
  • +
  • +
    measure(GisApp.measure.Polygon)}> + 면적측정 +
    +
  • +
  • +
    reset()}> + 리셋 +
    +
  • +
+
+
+ + ); +}); diff --git a/packages/common/business_components/src/ui/map/GisTree.js b/packages/common/business_components/src/ui/map/GisTree.js new file mode 100644 index 000000000..487e8bfec --- /dev/null +++ b/packages/common/business_components/src/ui/map/GisTree.js @@ -0,0 +1,234 @@ +import GisApp from './lib/gis.core'; +import { util } from './lib/util'; +import React, { useEffect, useState } from 'react'; +import { useGisContext } from './Gis'; +import { DndProvider } from "react-dnd"; +import { + Tree, + MultiBackend, + getBackendOptions +} from "@minoru/react-dnd-treeview"; +import { Tabs, TabsList, TabsTrigger, TabsContent } from "@common/components/ui/tabs"; + +export default React.memo(function GisTree({ checkedNodes = [], setCheckedNodes = () => {} }) { + const { gisCore, treeData, checkedLayerIds } = useGisContext(); + const [checked, setChecked] = useState([]); + const [expanded, setExpanded] = useState([]); + const [nodes, setNodes] = useState([]); + const [isSidebarOpen, setIsSidebarOpen] = useState(true); + + useEffect(() => { + if (treeData && treeData.length > 0) { + const nodeData = setNodeValues(treeData); + setNodes(nodeData); + gisCore.setAllLayersOnMap(false); + } + console.log(treeData) + }, [treeData]); + + useEffect(() => { + if (nodes.length > 0) { + const defaultChecked = getDefaultCheckedNodes(nodes); + setChecked(defaultChecked); + const defaultExpanded = Array.from(new Set([ + ...defaultChecked, + ...defaultChecked.flatMap((id) => getAncestors(id, nodes)) + ])); + setExpanded(defaultExpanded); + gisCore.setLayerOnMap(defaultChecked, true); + } + console.log(nodes) + }, [nodes]); + + const getDefaultCheckedNodes = (nodes, values = []) => { + for (let i = 0; i < nodes.length; i++) { + const node = nodes[i]; + if (node.data.initEprssYn === 'Y') { + values.push(node.data.lyrSn); + checkedLayerIds?.current.push(node.data.lyrSn + ''); + } + } + return values; + }; + + const getDescendants = (id, all) => { + const children = all.filter((n) => n.parent === id); + return children.reduce( + (acc, child) => acc.concat(child.id, ...getDescendants(child.id, all)), + [] + ); + }; + + const getAncestors = (id, all) => { + const node = all.find((n) => n.id === id); + if (!node || node.parent == null) return []; + return [node.parent, ...getAncestors(node.parent, all)]; + }; + + const isEveryChildChecked = (parentId, all, checked) => { + const children = all.filter((n) => n.parent === parentId); + return children.every((c) => checked.includes(c.id)); + }; + + const handleCheck = (id) => { + setChecked((prevChecked) => { + const isChecked = prevChecked.includes(id); + let newChecked = [...prevChecked]; + if (isChecked) { + const descendants = getDescendants(id, nodes); + newChecked = newChecked.filter((cid) => cid !== id && !descendants.includes(cid)); + const ancestors = getAncestors(id, nodes); + ancestors.forEach((p) => { + if (newChecked.includes(p)) { + newChecked = newChecked.filter((cid) => cid !== p); + } + }); + } else { + const descendants = getDescendants(id, nodes); + newChecked = Array.from(new Set([...newChecked, id, ...descendants])); + const ancestors = getAncestors(id, nodes); + ancestors.forEach((p) => { + if (isEveryChildChecked(p, nodes, newChecked)) { + newChecked.push(p); + } + }); + // setExpanded((prev) => Array.from(new Set([...prev, ...ancestors]))); + } + const allIds = nodes.map((n) => n.id); + const unchecked = allIds.filter((nid) => !newChecked.includes(nid)); + checkedLayerIds.current = newChecked; + gisCore.setLayerOnMap(newChecked, true); + gisCore.setLayerOnMap(unchecked, false); + return newChecked; + }); + }; + + const setNodeValues = (result) => { + return result.map((item) => { + const src = makeLegendSrc(item); + let label = item.lyrNm; + return { + id: item.lyrSn, + text: label, + parent: item.upperLyrSn, + droppable: !!item.children, + data: item, + icon: src ? {item.lyrNm} : '', + }; + }); + }; + + const findUpLyrId = (nodes, targetLyrId) => { + for (let i = 0; i < nodes.length; i++) { + const node = nodes[i]; + if (node.data && node.data.lyrSn === targetLyrId) { + return node.data.upperLyrSn; + } + if (node.children) { + const upLyrId = findUpLyrId(node.children, targetLyrId); + if (upLyrId) { + return upLyrId; + } + } + } + return null; + }; + + const makeLegendSrc = layerinfo => { + if(!layerinfo.gobjTy) return null; + + let src; + if (layerinfo.iconNm) { + src = GisApp.CONTEXT_LAYER_PATH + layerinfo.iconNm; + } else { + const ss = makeLegendImage(layerinfo); + src = ss.src; + } + return src; + }; + + const makeLegendImage = layerinfo => { + let image = document.createElement('img'); + let canvas = document.createElement('canvas'); + canvas.width = 16; + canvas.height = 16; + let ctx = canvas.getContext('2d'); + ctx.beginPath(); + + if (layerinfo.gobjTy === 'lineLabelPoligon') { + ctx.moveTo(1, 1); + ctx.lineTo(15, 1); + ctx.lineTo(15, 15); + ctx.lineTo(1, 15); + ctx.lineTo(1, 1); + } else if (layerinfo.gobjTy === 'line') { + ctx.moveTo(1, 15); + ctx.lineTo(5, 1); + ctx.lineTo(9, 15); + ctx.lineTo(15, 1); + } else { + ctx.moveTo(1, 1); + ctx.lineTo(15, 1); + ctx.lineTo(15, 15); + ctx.lineTo(1, 15); + ctx.lineTo(1, 1); + } + + if (layerinfo.gobjTy === 'lineLabelPoligon') { + ctx.fillStyle = layerinfo.polgnColor; + ctx.fill(); + ctx.lineWidth = 1; + ctx.strokeStyle = layerinfo.lnColor; + ctx.stroke(); + } + + if (layerinfo.gobjTy === 'line') { + ctx.lineWidth = 1; + ctx.strokeStyle = layerinfo.lnColor; + ctx.stroke(); + } + + image.src = canvas.toDataURL('image/png'); + return image; + }; + + if (!treeData || treeData.length === 0) return null; + + return ( + <> + + ( +
+ {node.droppable && ( + + )} + handleCheck(node.id)} + className="cursor-pointer" + /> + {node.icon && {node.icon}} + {node.text} +
+ )} + sort={(a, b) => { + const aOrder = parseInt(a.data?.sortOrdr ?? '0'); + const bOrder = parseInt(b.data?.sortOrdr ?? '0'); + return aOrder - bOrder; + }} + /> +
+ + ); +}); diff --git a/packages/common/business_components/src/ui/map/Google3DMap.js b/packages/common/business_components/src/ui/map/Google3DMap.js new file mode 100644 index 000000000..2ae6547dd --- /dev/null +++ b/packages/common/business_components/src/ui/map/Google3DMap.js @@ -0,0 +1,60 @@ +import React, { useEffect, useRef, useState } from 'react'; +import OLCesium from 'olcs/OLCesium'; +import olView from 'ol/View.js'; +import olSourceImageWMS from 'ol/source/ImageWMS.js'; +import olSourceOSM from 'ol/source/OSM.js'; +import olLayerImage from 'ol/layer/Image.js'; +import olLayerTile from 'ol/layer/Tile.js'; +import olMap from 'ol/Map.js'; +import { GLOBAL } from '../../js/consts/global'; + +const Google3DMap = () => { + const mapRef = useRef(null); + const [ol3d, setOl3d] = useState(null); + + useEffect(() => { + if (!mapRef.current) return; + + const customProjSource = new olSourceImageWMS({ + attributions: '©
National parks / geo.admin.ch', + crossOrigin: 'anonymous', + params: { LAYERS: 'ch.bafu.schutzgebiete-paerke_nationaler_bedeutung' }, + projection: 'EPSG:21781', + url: 'https://wms.geo.admin.ch/', + }); + + const { Cesium } = window; + Cesium.Ion.defaultAccessToken = GLOBAL.CESIUM_ION_TOKEN; + + const ol2d = new olMap({ + layers: [new olLayerTile({ source: new olSourceOSM() }), new olLayerImage({ source: customProjSource })], + target: mapRef.current, + view: new olView({ + center: [860434.6266531206, 6029479.0044273855], + zoom: 6, + }), + }); + + const ol3dInstance = new OLCesium({ + map: ol2d, + time: () => Cesium.JulianDate.now(), + }); + + const scene = ol3dInstance.getCesiumScene(); + Cesium.createWorldTerrainAsync().then(tp => { + scene.terrainProvider = tp; + }); + + ol3dInstance.setEnabled(true); + setOl3d(ol3dInstance); + + return () => { + ol3dInstance.setEnabled(false); + ol2d.setTarget(null); + }; + }, []); + + return
; +}; + +export default Google3DMap; diff --git a/packages/common/business_components/src/ui/map/MapToggleBtn.js b/packages/common/business_components/src/ui/map/MapToggleBtn.js new file mode 100644 index 000000000..fe8258ecb --- /dev/null +++ b/packages/common/business_components/src/ui/map/MapToggleBtn.js @@ -0,0 +1,32 @@ +import React, { useContext, useState } from 'react'; +import { Button } from "@common/components"; +import { GisContext } from './Gis'; +import GisApp from './lib/gis.core'; + +export default React.memo(function MapToggleBtn() { + const { gisCore } = useContext(GisContext); + const [activeMap, setActiveMap] = useState({ label: '일반', type: 'base' }); // 기본 선택값 + + const handleSelect = mapObj => { + setActiveMap(mapObj); + gisCore.changeBaseLayer(mapObj.type); + }; + + return ( +
+ +
    +
  • + +
  • +
  • + +
  • +
+
+ ); +}); diff --git a/packages/common/business_components/src/ui/map/lib/css/gis.common.css b/packages/common/business_components/src/ui/map/lib/css/gis.common.css new file mode 100644 index 000000000..de98d8a9b --- /dev/null +++ b/packages/common/business_components/src/ui/map/lib/css/gis.common.css @@ -0,0 +1,1037 @@ +@charset "UTF-8"; + +.custom-toolbar { + position: absolute; + top: -20px; + right: 0px; +} +.mapbtn { + position: absolute; + top: 10px; + right: 20px; +} +.mapbtn h3 { + overflow: hidden; + font-size: 0; + line-height: 0; + text-indent: -9999px; +} +.mapbtn > button { + overflow: hidden; + width: 40px; + height: 38px; + background: url(../images/toolbar/ico_gis_sprite.png) #fff no-repeat; + border: 1px solid #9aa7b8; + border-radius: 3px; + box-shadow: 0px 0px 5px #999; +} +.mapbtn .map1 { + background-image: url('../images/toolbar/img_map1.png'); + background-size: contain; + background-repeat: no-repeat; + background-position: center; + width: 60px; + height: 40px; +} +.mapbtn .map2 { + background-image: url('../images/toolbar/img_map2.png'); + background-size: contain; + background-repeat: no-repeat; + background-position: center; + width: 60px; + height: 40px; +} +.mapbtn > button > div { + display: none; + overflow: hidden; + text-indent: -9999px; +} +.mapbtn .viewer { + background-position: 0 -120px; +} +.mapbtn > a.danmyun { + background: url(../images/toolbar/ico_gis_sprite.png) #fff 0 -400px; +} +.mapbtn > a:hover { + margin: -1px; + border: 2px solid #1357ce; +} +.mapbtn .choice_map { + display: none; + position: absolute; + top: 0; + right: 20px; + width: 150px; +} +.mapbtn:hover ul.choice_map { + display: block; +} +.mapbtn ul.choice_map { + font-size: 0; +} +.mapbtn ul.choice_map li { + float: left; + margin-right: 5px; + background: #fff; + width: 60px; + text-align: center; + border: 2px solid transparent; + border-radius: 3px; + box-shadow: 0px 0px 5px #999; + overflow: hidden; +} +.mapbtn ul.choice_map li:last-child { + margin-right: 0; +} +.mapbtn ul.choice_map > li:hover { + border: 2px solid #1357ce; +} +.mapbtn ul.choice_map > li.on { + border: 2px solid #1357ce; +} +.mapbtn ul.choice_map li span { + font-size: 12px; + color: #999; + text-align: center; +} +.mapbtn ul.choice_map li.on span { + font-size: 12px; + color: #333; + text-align: center; +} + +.tool-bar { + position: absolute; + top: 140px; + right: 20px; + z-index: 2; +} +.tool-bar h3 { + overflow: hidden; + font-size: 0; + line-height: 0; + text-indent: -9999px; +} +.tool-bar .status { + margin-bottom: 10px; + overflow: hidden; + width: 40px; + height: 40px; + background: #fff; + border: 1px solid #9aa7b8; + border-radius: 3px; + box-shadow: 0px 0px 5px #999; + box-sizing: border-box; +} +.tool-bar .status div { + display: block; + width: 40px; + height: 40px; + background: url(../images/toolbar/ico_gis_sprite.png) no-repeat; + background-position: 0 -160px; + text-indent: -9999px; +} +.tool-bar .status div:hover { + background-position: -40px -160px; +} +.tool-bar .status div.on { + background: url(../images/toolbar/ico_gis_sprite.png) no-repeat; + background-position: 0 -200px; +} +.tool-bar .status div.on:hover { + background-position: -40px -200px; +} +.tool-bar ul { + display: inline-block; + overflow: hidden; + width: 40px; + background: #fff; + border: 1px solid #9aa7b8; + border-radius: 3px; + box-shadow: 0px 0px 5px #999; + font-size: 0; + box-sizing: border-box; + padding: 0px; +} +.tool-bar ul li { + height: 40px; + border-bottom: 1px solid #eeeeee; + box-sizing: border-box; +} +.tool-bar ul li:last-child { + border-bottom: 0 none; +} +.tool-bar ul li div { + width: 40px; + height: 40px; + display: inline-block; +} +.tool-bar ul li div span { + display: none; + overflow: hidden; + text-indent: -9999px; +} + +.ol-scale-line { + background: rgba(0, 60, 136, 0.3); + border-radius: 4px; + padding: 2px; + position: absolute; + bottom: 10px; + right: 200px; +} + +/* 로드뷰 관련 */ +#roadview-container { + width: 100%; + height: 100%; + z-index: 500; + display: block; + position: unset; + left: 50%; + top: 0px; +} +#roadview-container .roadview-container-1p { + width: 50%; + height: 100%; + float: left; + position: relative; +} +#roadview-container .roadview-container-2p { + width: 50%; + height: 100%; + float: left; + position: relative; +} +#roadview-container .roadview { + position: absolute; + top: 0; + right: 0; + left: 0; + bottom: 0; + z-index: 0; + background: #999; +} + +/* Map Contents: Map Control Bar */ +.map_control { + position: absolute; + right: 20px; + top: 200px; + display: block; +} +.control_icons { + background: rgba(255, 255, 255, 0.9); + border-radius: 4px; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); + padding: 10px; + display: block; +} +.control_icons li a { + display: block; + width: 40px; + height: 40px; + font-size: 0; +} +.control_icons li a:hover { + border-radius: 100%; + box-shadow: 0 3px 5px rgba(0, 0, 0, 0.1); +} +.btn_control_zoomin { + background: url(../images/toolbar/btn_cont_zoomin.png) no-repeat center; +} +.btn_control_zoomin:hover { + background: url(../images/toolbar/btn_cont_zoomin_on.png) no-repeat center #67aee3; +} +.btn_control_zoomout { + background: url(../images/toolbar/btn_cont_zoomout.png) no-repeat center !important; +} +.btn_control_zoomout:hover { + background: url(../images/toolbar/btn_cont_zoomout_on.png) no-repeat center #67aee3; +} +.btn_control_prev { + background: url(../images/toolbar/btn_cont_prev.png) no-repeat center; +} +.btn_control_prev:hover { + background: url(../images/toolbar/btn_cont_prev_on.png) no-repeat center #67aee3; +} +.btn_control_next { + background: url(../images/toolbar/btn_cont_next.png) no-repeat center; +} +.btn_control_next:hover { + background: url(../images/toolbar/btn_cont_next_on.png) no-repeat center #67aee3; +} +.btn_control_ruler { + background: url(../images/toolbar/btn_cont_ruler.png) no-repeat center center; +} +.btn_control_ruler:hover { + background: url(../images/toolbar/btn_cont_ruler_on.png) no-repeat center #67aee3; +} +.btn_control_ruler.active { + background: url(../images/toolbar/btn_cont_ruler_on.png) no-repeat center #67aee3; +} +.btn_control_area { + background: url(../images/toolbar/btn_cont_area.png) no-repeat center; +} +.btn_control_area:hover { + background: url(../images/toolbar/btn_cont_area_on.png) no-repeat center #67aee3; +} +.btn_control_area.active { + background: url(../images/toolbar/btn_cont_area_on.png) no-repeat center #67aee3; +} +.btn_control_save { + background: url(../images/toolbar/btn_cont_save.png) no-repeat center; +} +.btn_control_save:hover { + background: url(../images/toolbar/btn_cont_save_on.png) no-repeat center #67aee3; +} +.btn_control_sketch { + background: url(../images/toolbar/btn_cont_sketch.png) no-repeat center; +} +.btn_control_sketch:hover { + background: url(../images/toolbar/btn_cont_sketch_on.png) no-repeat center #67aee3; +} +.btn_control_print { + background: url(../images/toolbar/btn_cont_print.png) no-repeat center; +} +.btn_control_print:hover { + background: url(../images/toolbar/btn_cont_print_on.png) no-repeat center #67aee3; +} + +/*하단 */ +.map-scale-area { + position: absolute; + bottom: 40px; + right: 200px; + display: inline-block; + z-index: 101; + list-style: none; +} +.map-scale-area li { + float: left; + margin-right: 15px; + font-size: 12px; + font-weight: 600; + color: #333; + text-shadow: -2px 0 #fff, 0 2px #fff, 2px 0 #fff, 0 -2px #fff; + -moz-text-shadow: -2px 0 #fff, 0 2px #fff, 2px 0 #fff, 0 -2px #fff; + -webkit-text-shadow: -2px 0 #fff, 0 2px #fff, 2px 0 #fff, 0 -2px #fff; +} +.map-scale-area li:last-child { + margin-right: 0; +} +.map-scale-area .scale-bar { + margin-right: 12px; + margin-top: 5px; + padding: 0 10px; + border: 2px solid #333; + border-top: 0 none; + height: 9px; + position: relative; + z-index: 999; +} +.map-scale-area .scale-bar .line-text { + position: relative; + top: -11px; +} + +/* sprite */ +.sprite_gis { + display: inline-block; /* overflow: hidden; */ + background: url(../images/toolbar/ico_gis_sprite.png) 0 0 no-repeat; + line-height: 999px; + vertical-align: bottom; +} + +.select_control { + position: absolute; + top: 80px; + left: 250px; +} +.select_control h3 { + overflow: hidden; + font-size: 0; + line-height: 0; + text-indent: -9999px; +} +.select_control ul { + display: inline-block; + overflow: hidden; + height: 40px; + font-size: 0; + background: #fff; + border: 1px solid #9aa7b8; + border-radius: 3px; + box-shadow: 0px 0px 5px #999; + box-sizing: border-box; + padding: 0px; + margin: 0px; +} +.select_control ul li { + float: left; + width: 40px; + border-right: 1px solid #eeeeee; +} +.select_control ul li:last-child { + border-right: 0 none; +} +.select_control ul li div { + overflow: hidden; + width: 40px; + height: 40px; + background: url(../images/toolbar/ico_gis_sprite.png) no-repeat; +} +.select_control ul li div span { + display: none; + overflow: hidden; + text-indent: -9999px; +} +.select_control .sprite_gis.icon1 { + background-position: 0 0; +} +.select_control .sprite_gis.icon1:hover { + background-position: -40px 0; +} +.select_control .sprite_gis.icon2 { + background-position: 0 -40px; +} +.select_control .sprite_gis.icon2:hover { + background-position: -40px -40px; +} +.select_control .sprite_gis.icon3 { + background-position: 0 -80px; +} +.select_control .sprite_gis.icon3:hover { + background-position: -40px -80px; +} +.select_control .sprite_gis.icon4 { + background-position: 0 -360px; +} +.select_control .sprite_gis.icon4:hover { + background-position: -40px -360px; +} +.select_control .sprite_gis.icon4.active { + background-position: -40px -360px; +} + +/* 20230516 하수도 자산관리용 아이콘*/ +.sprite_gis.icon4 { + background-position: 0 -360px; +} +.sprite_gis.icon4:hover { + background-position: -40px -360px !important; + background-color: #67aee3; +} + +.select_control select { + float: right; + min-width: 100px; + height: 40px; + line-height: 40px; + margin-left: 10px; + padding-left: 10px; + font-size: 13px; + color: #666; + border: 1px solid #fff; + border-radius: 3px; + box-shadow: 0px 0px 5px #999; +} + +.select_control-left0 { + left: 0px; +} + +/*** result_conts ***/ +.result_conts { + position: absolute; + top: 92px; + left: -320px; + height: 540px; + bottom: 0; + width: 320px; + border-right: 1px solid #bdbdbd; + box-shadow: 0px 0px 10px #999; + background: #fff; + box-sizing: border-box; + z-index: 500; + -webkit-transition: left 0.2s ease-out, opacity 0.3s ease-out; + -moz-transition: left 0.2s ease-out, opacity 0.3s ease-out; + transition: left 0.2s ease-out, opacity 0.3s ease-out; +} +.result_conts button.toggle { + display: block; + width: 30px; + height: 50px; + position: absolute; + top: 50%; + right: -30px; + margin-top: -28px; + background: url(../images/toolbar/toggle_off.png); + outline: none; + border: none; +} +.result_conts.on button.toggle { + background: url(../images/toolbar/toggle_on.png); +} +.result_conts.on { + left: 0; +} + +.result_conts .cheader { + padding: 16px 20px; + border-bottom: 1px solid #dddddd; + font-size: 14px; + line-height: 18px; + box-sizing: border-box; +} +.result_conts .cheader span.title { + color: #666; +} +.result_conts .cheader span.title em { + padding-right: 5px; + color: #152346; + font-weight: bold; +} +.result_conts .cbody { + position: absolute; + top: 51px; + bottom: 0; + left: 0; + right: 0; + padding: 15px 10px 0; + overflow: hidden; + overflow-y: auto; +} +.result_conts .cbody ul.list { + position: absolute; + top: 54px; + bottom: 41px; + left: 10px; + right: 10px; + overflow: hidden; + overflow-y: auto; + color: #999; + list-style: none; + padding: 0px; +} +.result_conts .cbody ul.list li { + border-bottom: 1px dotted #bbbbbb; +} +.result_conts .cbody .list li a { + color: rgb(98, 89, 202); + display: block; + width: 100%; + padding: 19px 0 15px 10px; +} +.result_conts .cbody .list li a .zip { + display: inline-block; + padding: 0 5px; + border: 1px solid #152346; + font-size: 12px; + color: #152346; + margin-right: 10px; +} +.result_conts .cbody .list li a .zip2 { + display: inline-block; + padding: 0 5px; + border: 1px solid #cc33cc; + font-size: 12px; + color: #cc33cc; +} +.result_conts .cbody .list li a .addr { + font-size: 0.875rem; + display: block; + padding-top: 5px; + color: #989898; +} +.t_count { + font-size: 0.875rem; +} + +/** 시설물정보 검색결과 하수관용도별 색상구분 : 하수관로 **/ +.result_conts .cbody .list li a .addr .SBA000_facility_init { + color: #999999; +} +.result_conts .cbody .list li a .addr .SBA001_facility_init { + color: #cc9933; +} +.result_conts .cbody .list li a .addr .SBA002_facility_init { + color: #ff9900; +} +.result_conts .cbody .list li a .addr .SBA003_facility_init { + color: #0000ff; +} +.result_conts .cbody .list li a .addr .SBA004_facility_init { + color: #cc0000; +} +.result_conts .cbody .list li a .addr .SBA999_facility_init { + color: #222222; +} + +/** 시설물정보 검색결과 하수관용도별 색상구분 : 하수맨홀 **/ +.result_conts .cbody .list li a .addr .SMU000_facility_init { + color: #999999; +} +.result_conts .cbody .list li a .addr .SMU001_facility_init { + color: #0000ff; +} +.result_conts .cbody .list li a .addr .SMU002_facility_init { + color: #cc0000; +} +.result_conts .cbody .list li a .addr .SMU003_facility_init { + color: #ff9900; +} +.result_conts .cbody .list li a .addr .SMU004_facility_init { + color: #cc9933; +} +.result_conts .cbody .list li a .addr .SMU999_facility_init { + color: #222222; +} + +/** 시설물정보 검색결과 하수관용도별 색상구분 : 물받이 **/ +.result_conts .cbody .list li a .addr .SBD000_facility_init { + color: #999999; +} +.result_conts .cbody .list li a .addr .SBD001_facility_init { + color: #0000ff; +} +.result_conts .cbody .list li a .addr .SBD002_facility_init { + color: #cc0000; +} +.result_conts .cbody .list li a .addr .SBD003_facility_init { + color: #ff9900; +} +.result_conts .cbody .list li a .addr .SBD999_facility_init { + color: #222222; +} + +.result_conts .cbody .list li.on, +.result_conts .cbody .list li:hover { + background-color: #ebebeb; +} +.result_conts .cbody .list li.on a .zip, +.result_conts .cbody .list li:hover a .zip { + color: #fff; + background-color: #152346; +} +.result_conts .cbody .list li.on a .addr, +.result_conts .cbody .list li:hover a .addr { + color: #000; +} + +.result_conts .cbody .paginate { + position: absolute; + bottom: 0; + left: 20px; + right: 0; + padding: 10px 0; + font-size: 11px; + line-height: normal; + text-align: center; +} + +/*** 페이징 **/ +.paginate { + padding: 10px 0; + font-size: 11px; + line-height: normal; + text-align: center; +} +.result_conts .cbody .paginate .pagination .page-link { + font-size: 11px !important; +} + +/*** 검색결과 더보기 **/ +.result_facility { + position: absolute; + left: 320px; + bottom: 0; + width: 1280px; + height: 200px; + border-radius: 10px; + border-right: 1px solid #bdbdbd; + box-shadow: 0px 0px 10px #999; + background: #fff; + box-sizing: border-box; + z-index: 500; + -webkit-transition: left 0.2s ease-out, opacity 0.3s ease-out; + -moz-transition: left 0.2s ease-out, opacity 0.3s ease-out; + transition: left 0.2s ease-out, opacity 0.3s ease-out; +} + +.result_facility_popup { + width: 1130px; +} + +.result_facility .cheader { + padding: 16px 20px; + border-bottom: 1px solid #dddddd; + font-size: 35px; + line-height: 18px; + box-sizing: border-box; + color: #666; + text-align: center; +} + +/*** 상수도 시설현황 **/ +.fcltyLayerSmmyDiv { + position: absolute; + top: 10px; + left: 500px; + bottom: 0; + background: #fff; + width: 130px; + overflow-x: hidden; + height: 40px; + overflow-y: hidden; + border-radius: 5px; +} +.fcltyLayerSmmyHeaderArea { + background: #ffffff; + color: black; +} +.fcltyLayerSmmyHeaderArea span { + color: #000000; + font-size: 16px; + padding-left: 10px; + line-height: 40px; +} + +.assetsSmmyDiv { + position: absolute; + top: 55px; + left: 320px; + bottom: 0; + background: #fff; + width: 310px; + overflow-x: hidden; + height: 690px; + overflow-y: auto; + border-radius: 5px; +} +.assetsNotMappingDiv { + position: absolute; + top: 10px; + right: 20px; + bottom: 0; + background: #fff; + width: 180px; + overflow-x: hidden; + height: 70px; + overflow-y: hidden; + border-radius: 5px; +} +.assetsNotAcceptDiv { + position: absolute; + top: 80px; + right: 20px; + bottom: 0; + background: #fff; + width: 180px; + overflow-x: hidden; + height: 70px; + overflow-y: hidden; + border-radius: 5px; +} + +.puDiv { + position: relative; + width: 390px; + height: 180px; + background: #fff; + margin: 4px auto 10px; + padding: 0; + border-bottom: 0px; +} +.puDiv .puHeader { + display: block; + position: relative; + margin-left: 10px; +} +.puDiv .puContent { + display: block; + position: relative; + width: 395px; + padding: 2px; + text-align: center; + margin-left: 10px; +} +.puGrayTb { + position: relative; + width: 98.3%; + cellpadding: 0; + cellspcing: 0; + margin-top: 5px; + table-layout: fixed; + font-family: Verdana; +} +.puGrayTb th { + text-align: center; + height: 29px; + background: #b9d5ff; + color: #454545; + border: 1px solid #9d9d9d; + font-size: 12px; + font-weight: bold; +} +.puGrayTb td { + text-align: center; + height: 15px; + background: #fff; + color: #454545; + padding-left: 5px; + font-size: 12px; + border: 1px solid #cbcbcb; + font-weight: bold; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.puHeaderArea { + position: relative; + height: 40px; +} +.assetsSmmyHeaderArea { + background: #00c73c; + margin-bottom: 7px; +} +.assetsSmmyHeaderArea span { + color: #fff; + font-size: 16px; + padding-left: 10px; + line-height: 40px; +} +.puHeaderArea .close { + position: relative; + top: 5px; + float: right; + color: #fff; + background: url('../images/toolbar/icon-viewclose.png') no-repeat; + text-indent: -9999px; + width: 30px; + height: 30px; +} +.header h3:after { + content: ''; + display: block; + background: #00a0ea; + width: 20px; + height: 3px; + font-size: 0; + margin-top: 5px; +} + +.switch { + position: relative; + display: inline-block; + width: 40px; + height: 22px; + left: 10px; + bottom: 2px; +} +.switch input { + opacity: 0; + width: 0; + height: 0; +} +.slider { + position: absolute; + cursor: pointer; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: #ccc; + -webkit-transition: 0.4s; + transition: 0.4s; + border-radius: 34px; +} +.slider:before { + position: absolute; + content: ''; + height: 15px; + width: 16px; + left: 4px; + bottom: 3.55px; + background-color: white; + -webkit-transition: 0.4s; + transition: 0.4s; + border-radius: 50%; +} +input:checked + .slider { + background-color: #7e7d7d; +} +input:focus + .slider { + box-shadow: 0 0 1px #7e7d7d; +} +input:checked + .slider:before { + -webkit-transform: translateX(26px); + -ms-transform: translateX(26px); + transform: translateX(16px); +} +.value { + position: absolute; + top: -11px; + left: -44px; +} + +table.board-table th { + text-align: center; + padding: 4px 0 !important; + border: 1px solid #bdbdbd52; + color: #000000; + font-size: 11px; + width: 50px; + background: #ffffff; +} +table.board-table td { + text-align: center; + padding: 4px 0 !important; + border: 1px solid #f1eded; + color: #000000; + font-size: 11px; + width: 50px; + background: #ffffff; +} +table.board-table thead .red { + background: #ff0000; + color: #ffffff; + font-size: 12px; + text-align: center; + padding: 5px; + font-family: Verdana; +} +table.board-table thead .blue { + background: #2a63dd; + color: #ffffff; + font-size: 12px; + text-align: center; + padding: 5px; + font-family: Verdana; +} +table.board-table thead .green { + background: green; + color: #ffffff; + font-size: 12px; + text-align: center; + padding: 5px; + font-family: Verdana; +} +table.board-table thead .gray { + background: #c0c0c0; + color: #ffffff; + font-size: 12px; + text-align: center; + padding: 5px; + font-family: Verdana; +} +table.board-table tbody th td { + font-size: 13px; + font-weight: bold; + font-family: Verdana; +} + +.ol-custom-popup { + position: absolute; + background-color: #fff; + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2); + padding: 15px; + border-radius: 10px; + border: 1px solid #ccc; + bottom: 12px; + left: -50px; + min-width: 280px; + font-size: 15; +} +.ol-custom-popup:after, +.ol-popup:before { + top: 100%; + border: solid transparent; + content: ' '; + height: 0; + width: 0; + position: absolute; + pointer-events: none; +} +.ol-custom-popup:after { + border-top-color: #fff; + border-width: 10px; + left: 48px; + margin-left: -10px; +} +.ol-custom-popup:before { + border-top-color: #ccc; + border-width: 11px; + left: 48px; + margin-left: -11px; +} +.ol-custom-popup-closer { + text-decoration: none; + position: absolute; + top: 2px; + right: 8px; +} +.ol-custom-popup-closer:after { + content: '✖'; +} +.ol-overviewmap { + width: 150px; + position: absolute; + z-index: 1; + right: 0px; + bottom: 0px; +} +.ol-overviewmap .ol-overviewmap-map { + border: 1px solid #7b98bc; + height: 100px; + margin: 10px; +} +.ol-overviewmap-box { + border: 2px dotted rgba(0, 60, 136, 0.7); +} +.ol-overviewmap button { + display: none; +} +.ol-overviewmap-map canvas { + height: 100%; +} + +.gis-map canvas { + transform: matrix(1, 0, 0, 1, 0, 0) !important; + width: inherit; + height: inherit; +} + +.gis-content .evl-legends{ + bottom: -20px !important; + left: 1350px; + z-index: 101; +} + + +/* cesium-viewer-toolbar 숨기기 */ +.cesium-viewer-toolbar { + display: none; +} + +/* cesium-viewer-animationContainer 숨기기 */ +.cesium-viewer-animationContainer { + display: none; +} +.cesium-viewer-bottom { + display: none; +} +.cesium-viewer-timelineContainer { + display: none; +} +.cesium-credit-logoContainer{ + display: none !important; +} +.cesium-credit-wrapper{ + display: none !important; +} +.cesium-credit-expand-link{ + display: none !important; +} + + diff --git a/packages/common/business_components/src/ui/map/lib/css/gis.edit.css b/packages/common/business_components/src/ui/map/lib/css/gis.edit.css new file mode 100644 index 000000000..c2531e4b0 --- /dev/null +++ b/packages/common/business_components/src/ui/map/lib/css/gis.edit.css @@ -0,0 +1,192 @@ +@charset 'utf-8'; + +.edit_control { + position: absolute; + top: 20px; + left: 610px; +} +.edit_control h3 { + overflow: hidden; + font-size: 0; + line-height: 0; + text-indent: -9999px; +} +.edit_control ul { + float: left; + overflow: hidden; + height: 40px; + margin-left: 10px; + background: #fff; + font-size: 0; + border: 1px solid #9aa7b8; + border-radius: 3px; + box-shadow: 0px 0px 5px #999; + box-sizing: border-box; + padding: 0; + cursor: pointer; +} +.edit_control ul li { + display: inline-block; + width: 40px; + height: 40px; + border-right: 1px solid #eeeeee; +} +.edit_control ul li:last-child { + border-right: 0 none; +} +/*background 삭제*/ +/* .edit_control ul li a {overflow:hidden;width: 40px;height: 40px;background: url(../../images/om/ico_gis_sprite.png) no-repeat;} */ +.edit_control ul li a { + overflow: hidden; + width: 40px; + height: 40px; + display: inline-block; + padding: 0; +} +.edit_control ul li a span { + display: none; + overflow: hidden; + text-indent: -9999px; +} +.edit_control select { + float: left; + min-width: 150px; + height: 40px; + line-height: 40px; + margin-left: 10px; + padding-left: 10px; + font-size: 13px; + color: #666; + border: 1px solid #fff; + border-radius: 3px; + box-shadow: 0px 0px 5px #999; +} + +.edit_control input { + float: left; + min-width: 150px; + height: 40px; + line-height: 40px; + margin-left: 10px; + padding-left: 10px; + font-size: 13px; + color: #666; + border: 1px solid #fff; + border-radius: 3px; + box-shadow: 0px 0px 5px #999; +} + +.edit_control button { + float: left; + min-width: 80px; + height: 40px; + margin-left: 5px; + font-size: 13px; + color: #fff; + text-align: center; + border-radius: 3px; + cursor: pointer; +} +.edit_control button:hover { + background: #1357ce; +} + +.edit_toolbar { + position: absolute; + left: 280px; + top: 52px; +} +.btn_edit_slt { + background: url(../images/toolbar/btn_edit_slt.png) no-repeat center; + height: 40px; +} +.btn_edit_slt:hover { + background: url(../images/toolbar/btn_edit_slt_on.png) no-repeat center; + height: 40px; +} +.btn_edit_slt.active { + background: url(../images/toolbar/btn_edit_slt_on.png) no-repeat center; + height: 40px; +} +.btn_edit_add { + background: url(../images/toolbar/btn_edit_add.png) no-repeat center; + height: 40px; +} +.btn_edit_add:hover { + background: url(../images/toolbar/btn_edit_add_on.png) no-repeat center; + height: 40px; +} +.btn_edit_add.active { + background: url(../images/toolbar/btn_edit_add_on.png) no-repeat center; + height: 40px; +} + +.btn_edit_del { + background: url(../images/toolbar/btn_edit_del.png) no-repeat center; + height: 40px; +} + +.btn_edit_del:hover { + background: url(../images/toolbar/btn_edit_del_on.png) no-repeat center; + height: 40px; +} + +.btn_edit_prev { + background: url(../images/toolbar/btn_edit_prev.png) no-repeat center; + height: 40px; +} + +.btn_edit_prev:hover { + background: url(../images/toolbar/btn_edit_prev_on.png) no-repeat center; + height: 40px; +} + +.btn_edit_next { + background: url(../images/toolbar/btn_edit_next.png) no-repeat center; + height: 40px; +} + +.btn_edit_next:hover { + background: url(../images/toolbar/btn_edit_next_on.png) no-repeat center; + height: 40px; +} + +.btn_edit_snap { + background: url(../images/toolbar/btn_edit_snap.png) no-repeat center; + height: 40px; +} + +.btn_edit_snap:hover { + background: url(../images/toolbar/btn_edit_snap_on.png) no-repeat center; + height: 40px; +} + +.btn_edit_snap.active { + background: url(../images/toolbar/btn_edit_snap_on.png) no-repeat center; + height: 40px; +} + +.btn_edit_save { + background: url(../images/toolbar/btn_edit_save.png) no-repeat center; + height: 40px; +} + +.btn_edit_save:hover { + background: url(../images/toolbar/btn_edit_save_on.png) no-repeat center; + height: 40px; +} + +.btn_edit_transform { + background: url(../images/toolbar/btn_edit_slt.png) no-repeat center; + height: 40px; +} + +.btn_edit_transform:hover { + background: url(../images/toolbar/btn_edit_slt_on.png) no-repeat center; + height: 40px; +} + +.btn_edit_transform.active { + background: url(../images/toolbar/btn_edit_slt_on.png) no-repeat center; + height: 40px; +} diff --git a/packages/common/business_components/src/ui/map/lib/css/gis.roadview.css b/packages/common/business_components/src/ui/map/lib/css/gis.roadview.css new file mode 100644 index 000000000..917d1b778 --- /dev/null +++ b/packages/common/business_components/src/ui/map/lib/css/gis.roadview.css @@ -0,0 +1,7 @@ +@charset 'utf-8'; +/* 로드뷰 관련 */ +.roadview-container {width: 100%; height: 100%; z-index:500; display:block;position: absolute; left: 0px;top: 0px;} +.roadview-container .roadview-container-1p {width: 310px; height: 190px; bottom: 15px; left: 15px; top: auto; border-radius: 2px; overflow: hidden; z-index: 1000; position: absolute;} +.roadview-container .roadview-container-2p {width: 100%; height:100%; float:left; position:relative;} +.roadview-container .roadview {position:absolute; top:0; right:0; left:0; bottom:0; z-index:0; background:#999;} + diff --git a/packages/common/business_components/src/ui/map/lib/css/gis.sketch.css b/packages/common/business_components/src/ui/map/lib/css/gis.sketch.css new file mode 100644 index 000000000..e69c02a7a --- /dev/null +++ b/packages/common/business_components/src/ui/map/lib/css/gis.sketch.css @@ -0,0 +1,206 @@ +/* http://meyerweb.com/eric/tools/css/reset/ + v2.0 | 20110126 + License: none (public domain) +*/ + +html, +body, +div, +span, +applet, +object, +iframe, +h1, +h2, +h3, +h4, +h5, +h6, +p, +blockquote, +pre, +a, +abbr, +acronym, +address, +big, +cite, +code, +del, +dfn, +em, +img, +ins, +kbd, +q, +s, +samp, +small, +strike, +strong, +sub, +sup, +tt, +var, +b, +u, +i, +center, +dl, +dt, +dd, +ol, +ul, +li, +fieldset, +form, +label, +legend, +table, +caption, +tbody, +tfoot, +thead, +tr, +th, +td, +article, +aside, +canvas, +details, +embed, +figure, +figcaption, +footer, +header, +hgroup, +menu, +nav, +output, +ruby, +section, +summary, +time, +mark, +audio, +video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline; +} +/* HTML5 display-role reset for older browsers */ +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +menu, +nav, +section { + display: block; +} +body { + line-height: 1; +} +ol, +ul { + list-style: none; +} +blockquote, +q { + quotes: none; +} +blockquote:before, +blockquote:after, +q:before, +q:after { + content: ""; + content: none; +} +table { + border-collapse: collapse; + border-spacing: 0; +} + +body { + background-color: #e6e6fc; + display: flex; + flex-direction: column; + align-items: center; + padding: 50px 0px; +} + +.canvas { + width: 800px; + height: 500px; + background-color: white; + border-radius: 15px; + box-shadow: 6px 6px 5px grey; +} + +.controls .controls__colors { + display: flex; +} +.controls__colors .controls__color { + width: 50px; + height: 50px; + border-radius: 25px; + margin-right: 5px; + cursor: pointer; + box-shadow: 3px 3px 5px grey; +} + +.jscolor { + color: transparent; + font-size: 0; + line-height: 0; + + width: 50px; + height: 50px; + border-radius: 25px; + border-width: 0px; + margin-right: 5px; + cursor: pointer; + box-shadow: 3px 3px 5px grey; +} + +.controls { + display: flex; + flex-direction: column; + align-items: center; +} + +.controls .controls__btns { + margin-top: 20px; + margin-bottom: 30px; +} + +.controls__btns button:active { + transform: scale(0.98); +} + +.controls__btns button { + all: unset; + cursor: pointer; + background-color: white; + padding: 5px 0px; + width: 80px; + text-align: center; + border-radius: 10px; + box-shadow: 3px 3px 3px grey; + border: 2px solid rgba(0, 0, 0, 0.2); + color: rgba(0, 0, 0, 0.8); + text-transform: uppercase; + font-weight: 600; + font-size: 12px; +} + +.controls .controls__range { + margin-top: 20px; +} diff --git a/packages/common/business_components/src/ui/map/lib/css/gis.tooltip.css b/packages/common/business_components/src/ui/map/lib/css/gis.tooltip.css new file mode 100644 index 000000000..043d842e2 --- /dev/null +++ b/packages/common/business_components/src/ui/map/lib/css/gis.tooltip.css @@ -0,0 +1,35 @@ +@charset 'utf-8'; + +.ol-tooltip { + position: relative; + background: rgba(0, 0, 0, 0.5); + border-radius: 4px; + color: white; + padding: 4px 8px; + opacity: 0.7; + white-space: nowrap; + font-size: 12px; +} +.ol-tooltip-measure { + opacity: 1; + font-weight: bold; +} +.ol-tooltip-static { + background-color: #ffcc33; + color: black; + border: 1px solid white; +} +.ol-tooltip-measure:before, +.ol-tooltip-static:before { + border-top: 6px solid rgba(0, 0, 0, 0.5); + border-right: 6px solid transparent; + border-left: 6px solid transparent; + content: ""; + position: absolute; + bottom: -6px; + margin-left: -7px; + left: 50%; +} +.ol-tooltip-static:before { + border-top-color: #ffcc33; +} \ No newline at end of file diff --git a/packages/common/business_components/src/ui/map/lib/gis.core.js b/packages/common/business_components/src/ui/map/lib/gis.core.js new file mode 100644 index 000000000..faebb90d3 --- /dev/null +++ b/packages/common/business_components/src/ui/map/lib/gis.core.js @@ -0,0 +1,923 @@ +import MousePosition from 'ol/control/MousePosition'; +import ScaleLine from 'ol/control/ScaleLine'; +import Feature from 'ol/Feature'; +import WKT from 'ol/format/WKT'; +import LinearRing from 'ol/geom/LinearRing'; +import Draw from 'ol/interaction/Draw'; +import TileLayer from 'ol/layer/Tile'; +import * as olProj from 'ol/proj'; +import VectorSource from 'ol/source/Vector'; +import XYZ from 'ol/source/XYZ'; +import GeoSJON from 'ol/format/GeoJSON'; +import { Fill, Stroke, Style } from 'ol/style'; +import CircleStyle from 'ol/style/Circle'; +import VectorLayer from 'ol/layer/Vector'; +import { Point } from 'ol/geom'; +import { boundingExtent } from 'ol/extent'; +import olSourceImageWMS from 'ol/source/ImageWMS'; +import { GeoJSON } from 'ol/format'; +import GisOlEditLayer from './gis.edit'; +import GisOlLayer from './gis.layer'; + +const GisApp = {}; +/** + * GisApp 전역변수 생성 + */ +//레이어 정보 +GisApp.layerInfos = []; +//기본정보 +//GisApp.GEOSERVER_URL = 'http://rsone.iptime.org:10010/geoserver/hasudo/ows'; +//GisApp.GEOSERVER_WMS_URL = 'http://rsone.iptime.org:10010/geoserver/hasudo/wms'; +GisApp.GEOSERVER_URL = '/sn/geoserver/hasudo/ows'; +GisApp.GEOSERVER_WMS_URL = '/sn/geoserver/hasudo/wms'; + +//맵 정보 +GisApp.EMAP_URL = '/emap/'; +GisApp.EMAP_SATELLITE_URL = '/emap/satellite/'; +GisApp.VWORLD_URL = 'https://xdworld.vworld.kr/2d/Base/service/{z}/{x}/{y}.png'; +GisApp.VWORLD_SATELLITE_URL = 'https://xdworld.vworld.kr/2d/Satellite/service/{z}/{x}/{y}.jpeg'; +GisApp.GOOGLE_API_KEY = 'AIzaSyCf1sgeELFalfPuqlykRKBMj6X9u_DQH6M'; +GisApp.GOOGLE_ROADMAP_URL = `https://mt1.google.com/vt/lyrs=m&x={x}&y={y}&z={z}&key=${GisApp.GOOGLE_API_KEY}`; +GisApp.GOOGLE_SATELLITE_URL = `https://mt1.google.com/vt/lyrs=s&x={x}&y={y}&z={z}&key=${GisApp.GOOGLE_API_KEY}`; +GisApp.GOOGLE_HYBRID_URL = `https://mt1.google.com/vt/lyrs=y&x={x}&y={y}&z={z}&key=${GisApp.GOOGLE_API_KEY}`; +GisApp.GOOGLE_3D_URL = `https://tile.googleapis.com/v1/3dtiles/root.json?key=${GisApp.GOOGLE_API_KEY}`; +GisApp.OPENSTREET_URL = '//tile.openstreetmap.org/{z}/{x}/{y}.png'; +GisApp.BASE_MAP_TYPES = []; + +GisApp.FROM_PROJ = 'EPSG:4326'; +GisApp.TO_PROJ = 'EPSG:3857'; +GisApp.TO_DATA_PROJ = 'EPSG:4326'; +GisApp.CONTEXT_LAYER_PATH = '/sn/images/map/layericon/'; +GisApp.layerCode = {}; +GisApp.hlLayerId = 'LightFeatureList'; +GisApp.hLayerId = 'highLightFeature'; +GisApp.wtlkgAnal = 'wtlkgAnal'; + +GisApp.Module = { + core: null, + select: null, + measure: null, + layer: null, + style: null, + edit: null, +}; + +/** + * GisApp.layerInfos Set + */ +GisApp.setLayerInfos = function (layerInfos) { + GisApp.layerInfos = layerInfos; +}; + +/** + * GisApp core + * @requires gis.layer.js + */ +GisApp.core = function (options) { + GisApp.core.prototype.initialize(options); +}; + +GisApp.core.prototype = { + defaults: { + target: '', + centerX: 37.2806094, + centerY: 127.0032502, + zoom: 11, + minZoom: 5, + maxZoom: 22, + }, + options: { + /*1: { zoom: 16, minZoom: 10, maxZoom: 22, centerX: 35.3227711, centerY: 129.1836202, dataProj: 'EPSG:5186' }, + 4: { zoom: 16, minZoom: 10, maxZoom: 22, centerX: 35.0140499, centerY: 126.7110757, dataProj: 'EPSG:5186' }, + 14: { zoom: 16, minZoom: 10, maxZoom: 22, centerX: 34.9390499, centerY: 127.6960757, dataProj: 'EPSG:5186' },*/ + }, + epsg_5179: null, + map: null, // ol.Map + view: {}, // ol.view + interactions: {}, // interaction 모음 객체 + selectedFeature: null, // 현재 선택된 feature + baseLayers: {}, + baseMiniMapLayers: {}, + layers: {}, + initialize: function (options) { + let option = this.options['1']; + if (option) { + Object.assign(this.defaults, option); + GisApp.TO_DATA_PROJ = option.dataProj; + } + Object.assign(this.defaults, options); + GisApp.Module.core = this; + GisApp.Module.layer = new GisOlLayer(this.defaults); + GisApp.Module.edit = new GisOlEditLayer(this.defaults); + + this.baseMiniMapLayers['base'] = this.getBaseMap('minimap-base'); + this.baseLayers['base'] = this.getBaseMap('base'); + this.baseLayers['satellite'] = this.getBaseMap('satellite'); + this.baseLayers['3d'] = this.getBaseMap('3d'); + }, + layerType: { + point: 'POINT', + line: 'LINE', + poligon: 'POLIGON', + }, + chgMngFcltOptions: function (fcltCd) { + let option = this.options[fcltCd]; + Object.assign(this.defaults, option); + this.setCenter(Number(this.defaults.centerX), Number(this.defaults.centerY)); + this.setZoom(15); + }, + getBaseMap: function (_id) { + let url = GisApp.VWORLD_URL; + if (_id === 'satellite') { + url = GisApp.VWORLD_SATELLITE_URL; + } + let baseMap = new TileLayer({ + id: _id, + visible: true, + type: 'base', + source: new XYZ({ + url: url, + crossOrigin: 'anonymous', + }), + zIndex: 0, + }); + return baseMap; + }, + /** + * [사용]테이블명으로 레이어 아이디 조회 + */ + getLayerCodeByTbNm: function (_tableNm) { + let returnLayerCode = null; + for (let i in GisApp.layerCode) { + let layerCode = GisApp.layerCode[i]; + if (layerCode.tableName === _tableNm) { + returnLayerCode = layerCode; + } + } + return returnLayerCode; + }, + /** + * [사용]베이스 레이어 변경 + * Parameters: + * _title - {String} 베이스 레이어 이름 + * + * Returns: + */ + changeBaseLayer: function (_id) { + this.map.getLayers().forEach(function (layer) { + let type = layer.get('type'); + let id = layer.get('id'); + if (type == 'base') { + if (id == _id) { + layer.setVisible(true); + } else { + layer.setVisible(false); + } + } + }); + }, + /** + * [사용]지도 중심좌표 설정 + */ + setCenter: function (x, y, transYn) { + if (!x || !y) return; + let view = this.map.getView(); + + if (!transYn) { + // 값이 없으면 + let center = olProj.transform([Number(y), Number(x)], GisApp.FROM_PROJ, GisApp.TO_PROJ); + const style = new Style({ + image: new CircleStyle({ + radius: 5, + fill: new Fill({ + color: 'rgba(255,0,0,1)', + }), + stroke: new Stroke({ + color: 'rgba(255,0,0,1)', + width: 2, + }), + }), + }); + + // 빨간색 점 추가 (스타일 적용) + let redPoint = new Feature({ + geometry: new Point(center), + }); + + let redPointLayer = new VectorLayer({ + source: new VectorSource({ + features: [redPoint], + }), + style: style, + }); + redPointLayer.set('id', 'redPointLayer'); + // 이전에 만들었던 빨간색 점 레이어 삭제 + this.deleteLayer('redPointLayer'); + + // 새로운 빨간색 점 레이어를 맵에 추가 + this.map.addLayer(redPointLayer); + view.setCenter(center); + } else { + view.setCenter([Number(x), Number(y)]); + } + }, + + /** + * [사용]주소검색 결과 지도이동 + */ + setAddressResult: function (x, y, geom, addressName) { + if (!x || !y) return; + let view = this.map.getView(); + let center = olProj.transform([Number(y), Number(x)], GisApp.FROM_PROJ, GisApp.TO_PROJ); + + const style = [ + new Style({ + image: new CircleStyle({ + radius: 5, + fill: new Fill({ + color: 'rgba(255,0,0,1)', + }), + stroke: new Stroke({ + color: 'rgba(255,0,0,1)', + width: 2, + }), + }), + }), + new Style({ + stroke: new Stroke({ + color: 'blue', + width: 3, + }), + fill: new Fill({ + color: 'rgba(0, 0, 255, 0.1)', + }), + }), + ]; + + // 빨간색 점 추가 (스타일 적용) + let redPoint = new Feature({ + geometry: new Point(center), + }); + let redArea = new WKT().readFeature(geom, { + dataProjection: GisApp.FROM_PROJ, + featureProjection: GisApp.TO_PROJ, + }); + + let redPointLayer = new VectorLayer({ + source: new VectorSource({ + features: [redPoint, redArea], + }), + style: style, + }); + + redPointLayer.set('id', 'redPointLayer'); + // 이전에 만들었던 빨간색 점 레이어 삭제 + this.deleteLayer('redPointLayer'); + + // 새로운 빨간색 점 레이어를 맵에 추가 + this.map.addLayer(redPointLayer); + + view.animate({ center: center, zoom: 19 }); + return redPointLayer; + }, + /* + * [사용]zoom 설정 + */ + setZoom: function (zoom) { + if (!zoom) return; + this.map.getView().setZoom(zoom); + }, + /* + * [사용]zoom 정보 반환 + */ + getZoom: function () { + return this.map.getView().getZoom(); + }, + /** + * [사용]레이어 맵에 추가(외부에서 생성된 layer를 파라미터로 받아 맵에 추가) + */ + setWfsLayerOnMap: function (layer) { + this.deleteLayer(layer.get('id')); + this.map.addLayer(layer); + return layer; + }, + /** + * [사용]레이어 생성(지오서버에서 WFS 방식으로 레이어정보 가져와 레이어 생성) + */ + getWfsLayer: function (layerCodeObj) { + return GisApp.Module.layer.getWfsLayer(layerCodeObj); + }, + /** + * [사용]레이어 맵에 추가(getWfsLayer 사용하여 레이어 생성) + */ + addWfsLayer: function (layerCodeObj) { + let layer = this.getWfsLayer(layerCodeObj); + this.deleteLayer(layer.get('id')); + this.map.addLayer(layer); + return layer; + }, + /** + * [사용]레이어 맵에 추가(getWmsLayer 사용하여 레이어 생성) + */ + addWmsLayer: function (layerCodeObj) { + let layer = GisApp.Module.layer.getWmsLayer(layerCodeObj); + this.deleteLayer(layer.get('id')); + this.map.addLayer(layer); + return layer; + }, + /** + * [사용]레이어 삭제 + */ + deleteLayer: function (layerId) { + const map = this.map; + if (!layerId) return; + map.getLayers().forEach(function (layer) { + let deleteLayer = null; + if (layer != null && layer.get('id') != null) { + let vlayerId = layer.get('id'); + if (vlayerId) { + if (vlayerId === layerId) { + deleteLayer = layer; + } else if (`${vlayerId}`.includes(`${layerId}`)) { + deleteLayer = layer; + } + if (deleteLayer) { + map.removeLayer(deleteLayer); + } + } + } + }); + }, + /** + * [사용]레이어 전체 삭제 + */ + deleteAllLayer: function () { + const map = this.map; + map.getLayers().forEach(function (layer) { + if (layer?.get('type') !== 'base') { + map.removeLayer(layer); + } + }); + //맵에 보이지 않는 레이어 삭제 + GisApp.Module.layer?.layers.forEach(function (layer) { + map.removeLayer(layer); + }); + }, + /** + * [사용]레이어이름으로 레이어 조회 반환 + */ + getLayerById: function (layerId) { + if (!layerId) return; + let layer = null; + this.map.getAllLayers().forEach(function (el) { + if (el != null && el?.get('id') != null) { + let vlayerId = el?.get('id'); + if (Number(vlayerId) === Number(layerId)) { + layer = el; + } + } + }); + if (layer != null) { + GisApp.Module.layer.layers.forEach(function (el) { + if (el != null && el?.get('id') != null) { + let vlayerId = el?.get('id'); + if (Number(vlayerId) === Number(layerId)) { + layer = el; + } + } + }); + } + return layer; + }, + /** + * [사용]오버레이 전체 삭제 + */ + deleteAllOverlay: function () { + let map = this.map; + let overlays = map.getOverlays(); + if (overlays != null) { + let overlayArray = overlays.getArray(); + let overlaySize = overlayArray.length; + if (overlaySize > 0) { + for (let i = overlaySize - 1; i >= 0; i--) { + let overlay = overlayArray[i]; + map.removeOverlay(overlay); + } + } + } + Object.values(GisApp.Module.style.overlays).forEach(overlay => { + if (overlay) { + map.removeOverlay(overlay); + } + }); + GisApp.Module.style.overlays = {}; + }, + /** + * [사용]오버레이 아이디로 삭제 + */ + deleteOverlay: function (_id) { + let map = this.map; + let overlays = map.getOverlays(); + if (overlays != null) { + let overlayArray = overlays.getArray(); + let overlaySize = overlayArray.length; + if (overlaySize > 0) { + for (let i = overlaySize - 1; i >= 0; i--) { + let overlay = overlayArray[i]; + let id = overlay.getId(); + if (id === _id) { + map.removeOverlay(overlay); + delete GisApp.Module.style.overlays[_id]; + } + } + } + } + }, + /** + * [사용]맵 이벤트 삭제 + */ + removeMapEventFnNm: function (handlerNm, fnNm) { + let map = this.map; + for (let i in map.listeners_[handlerNm]) { + let listener = map.listeners_[handlerNm][i]; + if (listener.name == fnNm) { + map.listeners_[handlerNm].splice(i, 1); + } + } + }, + /** + * [사용]위경도 -> 시분초 변환 + */ + coordTrans: function (coord) { + let str = String(coord); /* String 변환 */ + let split = str.split('.'); /* 소수점 split */ + let hour = split[0]; /* 시간 */ + let minute = parseFloat((coord - parseInt(split[0]).toFixed(6)) * 60).toFixed(6); + let min = String(minute).split('.')[0]; + let second = parseFloat((minute - parseInt(min)) * 60).toFixed(2); + return hour + '도 ' + min + '분 ' + second + '초'; + }, + /** + * [사용]시분초 -> 위경도 변환 + */ + coordTransrate: function (degree, minute, second) { + let min = (Number(minute) / 60).toFixed(2); + let sec = (Number(second) / 3600).toFixed(4); + return degree + Number(min) + Number(sec); + }, + /** + * [사용]마우스 좌표 위치 + */ + mousePositionControl: function () { + let element = document.getElementById('label_lonlat'); + let me = this; + let mousePosition = new MousePosition({ + coordinateFormat: function (coordinate) { + let text = ''; + if (element) { + let lng = coordinate[0]; + let lat = coordinate[1]; + text += '경도 : ' + lng.toFixed(7) + ' ( ' + me.coordTrans(lng) + ' ) '; + text += '위도 : ' + lat.toFixed(7) + '( ' + me.coordTrans(lat) + ' )'; + } + return text; + }, + projection: GisApp.FROM_PROJ, + className: 'custom-mouse-position', + target: document.getElementById('label_lonlat'), + }); + this.map.addControl(mousePosition); + }, + /** + * [사용]스케일 표시 + */ + scaleControl: function () { + let scale = new ScaleLine({ + minWidth: 100, + units: 'metric', + }); + this.map.addControl(scale); + }, + /** + * [사용]레이어 맵에 셋팅 + * + * Parameters: + * layerList - {Array} [layerNm : GisApp.layerCode 키] + * visible - {Boolean} 레이어 visible 여부 + * + * Returns: + */ + setLayerOnMap: function (layerIds, visible, addQurryFlter) { + for (let i in layerIds) { + let id = layerIds[i]; + let layer = this.getLayerById(id); + if (layer) { + layer.setVisible(visible); + } else if (visible) { + const layerCode = GisApp.layerCode[id]; + const queryFlter = layerCode?.flterSql || '' + ' ' + (addQurryFlter || ''); + layerCode['flterSql'] = queryFlter; + //layer = this.addWmsLayer(layerCode); + layer = this.addWfsLayer(layerCode); + } + } + if (GisApp.Module.select) { + this.setSelectInteraction(); + } + if (GisApp.Module.edit.snap) { + GisApp.Module.edit.setSnap(); + } + }, + /** + * [사용]shp 파일 다운로드 + */ + getShapeLayer: function (option) { + GisApp.Module.layer.getShapeLayer(option); + }, + /** + * [사용]레이어 셀렉트 가능하게 셋팅 + */ + setSelectInteraction: function () { + let layers = this.map.getLayers(); + if (layers) { + for (let i in layers.array_) { + let layer = layers.array_[i]; + if (layer.get('chcYn') === 'Y') { + GisApp.Module.select.addLayer(layer); + } + } + } + }, + /** + * [사용]layerInfos(array) To layerCode(Object) + */ + convertLayerInfosToLayerCode: function (array, key, parentName) { + let initialValue = {}; + + for (let i = 0; i < array.length; i++) { + let item = {}; + Object.assign(item, array[i]); + if (parentName) { + item.parentName = parentName; + } + initialValue[item[key]] = item; + + if (item.children && item.children.length > 0) { + let child = this.convertLayerInfosToLayerCode(item.children, key, item.name); + Object.assign(initialValue, child); + } + if (initialValue[item[key]].children) { + delete initialValue[item[key]].children; + } + } + return initialValue; + }, + /** + * [사용]피처 좌표값 WKT포맷으로 변경 + */ + convertFeatureGeomToWKT: function (feature) { + let geometry = feature.getGeometry(); + const wktGeom = this.convertGeomToWkt(geometry); + return wktGeom; + }, + /** + * [사용]WKT포맷 Geometry로 변경 + */ + convertWktToGeom: function (wtkGeom) { + let format = new WKT(); + let geom = format.readGeometry(wtkGeom); + return geom; + }, + /** + * [사용]좌표와 properties의 키값으로 피처 검색 + */ + getFeatureGeomProp: function (geometry, ftrIds, ftrCde) { + let returnFeature; + this.map.getLayers().forEach(function (layer) { + let type = layer.get('type'); + if (type != 'base') { + let source = layer.getSource(); + + let type = geometry.getType(); + let coordinates = geometry.getCoordinates(); + if (type.toUpperCase() === 'POINT') { + coordinates = [coordinates]; + } else { + coordinates = coordinates[0]; + } + let featureFtrIds; + let featureFtrCde; + for (let i in coordinates) { + let coordinate = coordinates[i]; + let feature = source.getClosestFeatureToCoordinate(coordinate); + if (feature) { + let properties = feature.getProperties(); + featureFtrIds = properties['FTR_IDS']; + featureFtrCde = properties['FTR_CDE']; + if (ftrIds == featureFtrIds && ftrCde == featureFtrCde) { + returnFeature = feature; + } + } + } + } + }); + return returnFeature; + }, + /** + * [사용]관리번호로 피처검색 + */ + getFeatureByFtrIdn: function (typeName, ftrIdn) { + let returnFeature; + this.map.getLayers().forEach(function (layer) { + let layerTypeName = layer.get('typeName'); + if (layerTypeName === typeName) { + layer + .getSource() + .getFeatures() + .forEach(feature => { + let featureFtrIdn = feature.get('ftrIdn'); + if (featureFtrIdn === ftrIdn) { + returnFeature = feature; + } + }); + } + }); + return returnFeature; + }, + /** + * [사용]맵 이벤트 추가 + */ + addMapEvent: function (evtNm, id, callback) { + if (id) { + let evt = this.map.on(evtNm, callback); + evt.listener.id = id; + } + }, + /** + * [사용]맵 이벤트 삭제 + */ + removeMapEvent: function (evtNm, id) { + if (id) { + let listeners = this.map.listeners_[evtNm]; + for (let i in listeners) { + let listenter = listeners[i]; + if (listenter.id == id) { + listeners.splice(i, 1); + } + } + } + }, + /** + * [사용]마커 그리기 추가 + */ + drawMarker: function (layer, callback) { + let map = this.map; + let drawSource = layer.getSource(); + let draw = new Draw({ + type: 'Point', + source: drawSource, + condition: function (evt) { + return true; + }, + }); + map.addInteraction(draw); + draw.on('drawend', function (event) { + callback(event); + map.removeInteraction(draw); + }); + }, + /** + * [사용]피처 삭제 + */ + deleteFeature: function (layerId, featureId) { + if (!layerId || !featureId) return; + let layer = this.getLayerById(layerId); + if (layer != null) { + let feature = layer.getSource().getFeatureById(featureId); + if (feature != null) { + layer.getSource().removeFeature(feature); + } + } + }, + /** + * [사용]레이어 + */ + fitExtent: function (extent, zoom) { + let map = this.map; + let mapSize = map.getSize(); + if (!zoom) { + zoom = this.getZoom(); + } + if (extent) { + //map.getView().fit(extent, { size: [mapSize[0], mapSize[1]] }); + this.map.getView().fit(extent, { + maxZoom: 18, // 너무 확대되지 않도록 최대 줌 제한 + duration: 500, // 부드러운 애니메이션 효과 (밀리초 단위) + }); + } + this.setZoom(zoom); + }, + getGeomLineOfFeature: function (feature) { + if (!feature) { + return; + } + let geometry = feature.getGeometry(); + let type = geometry.getType(); + if (!(type == 'LineString' || type == 'MultiLineString')) { + return; + } + let geomLienString = geometry; + if (type != 'LineString') { + //lienString = geometry.getLineString(); + } + return geomLienString; + }, + getCenterGeomLineOfFeature: function (feature) { + if (!feature) { + return; + } + let center = []; + let geomLienString = this.getGeomLineOfFeature(feature); + let coords = geomLienString.getCoordinates(); + let coordCnt = coords.length; + if (coordCnt == 1) { + coords = coords[0]; + } + //라인 한개 + if (coordCnt == 2) { + return geomLienString; + } + //멀티라인 + let centerCnt = Math.floor(coordCnt / 2); + let lineCoordinates = []; + lineCoordinates.push(coords[centerCnt - 1]); + lineCoordinates.push(coords[centerCnt]); + geomLienString = new LinearRing(lineCoordinates); + return geomLienString; + }, + getCenterOfLineGeom: function (geom) { + let center = []; + let extent = geom.getExtent(); + let x = extent[0] + (extent[2] - extent[0]) / 2; + let y = extent[1] + (extent[3] - extent[1]) / 2; + center.push(x); + center.push(y); + return center; + }, + /** + * 1 -> 01 두자리수로 변환 + */ + fillZeroToZoomLevel: function (n, digits) { + let zero = ''; + n = n.toString(); + if (digits > n.length) { + for (let i = 0; digits - n.length > i; i++) { + zero += '0'; + } + } + return zero + n; + }, + convertGeoJsonToFeature: function (data, dataProjection) { + let format = new GeoSJON(); + let feature = format.readFeature(data, { + dataProjection: dataProjection || GisApp.TO_DATA_PROJ, + featureProjection: GisApp.TO_PROJ, + }); + return feature; + }, + convertGeoJsonToFeatures: function (data, dataProjection) { + let format = new GeoSJON(); + const features = []; + for (let obj of data) { + let feature = null; + try { + feature = format.readFeature(obj, { + dataProjection: dataProjection || GisApp.TO_DATA_PROJ, + featureProjection: GisApp.TO_PROJ, + }); + } catch (error) { + console.log(obj); + } + features.push(feature); + } + return features; + }, + + /** + * [사용]WKT포맷 Geometry로 feature 생성 + */ + convertWktToFeature: function (wtkGeom, dataProjection) { + let format = new WKT(); + let feature = format.readFeature(wtkGeom, { + dataProjection: dataProjection || GisApp.TO_DATA_PROJ, + featureProjection: GisApp.TO_PROJ, + }); + return feature; + }, + + /** + * [사용]geometry를 WKT포맷으로 변경 + */ + convertGeomToWkt: function (geometry) { + let format = new WKT(); + let wktGeom = format.writeGeometry(geometry, { + dataProjection: GisApp.TO_DATA_PROJ, + featureProjection: GisApp.TO_PROJ, + }); + return wktGeom; + }, + /** + * [사용]레이어 전체 표시 컨트롤 + */ + setAllLayersOnMap: function (visible) { + this.map.getLayers().forEach(function (el) { + if (el !== null && el.get('id') !== null) { + let layerId = el.get('id'); + if ('base' !== layerId && 'satellite' !== layerId && 'minimap-base' !== layerId) { + el.setVisible(visible); + } + } + }); + }, + fitExtentZoomFeatures: function (features, zoom, paddingX = 0, paddingY = 0) { + if (!features.length) return; + // Feature들의 경계를 계산하여 extent 생성 + const extent = this.getExtentFeatures(features); + if (zoom) { + //const paddingX = 0; // X축 이동량 (양수는 오른쪽, 음수는 왼쪽) + //const paddingY = -10000; // Y축 이동량 (양수는 아래쪽, 음수는 위쪽) + extent[0] -= paddingX; + extent[1] -= paddingY; + this.fitExtent(extent, zoom); + } else { + this.map.getView().fit(extent, { + maxZoom: 18, // 너무 확대되지 않도록 최대 줌 제한 + duration: 500, // 부드러운 애니메이션 효과 (밀리초 단위) + }); + } + }, + getExtentFeatures: function (features) { + if (!features.length) return; + let extent = []; + const allCoordinates = features + .map(feature => { + const geometry = feature.getGeometry(); + if (!geometry || typeof geometry.getCoordinates !== 'function') { + return null; // geometry가 없거나 getCoordinates() 메서드가 없으면 null 반환 + } + return geometry.getCoordinates(); + }) + .filter(coords => coords !== null); + function extractCoordinatePairs(arr) { + let result = []; + + function recursiveFlatten(subArray) { + if (!Array.isArray(subArray)) return; + + for (let item of subArray) { + if (Array.isArray(item) && item.length === 2 && typeof item[0] === 'number' && typeof item[1] === 'number') { + // [숫자, 숫자] 형태의 배열이면 추가 + result.push(item); + } else { + // 그렇지 않다면 재귀 호출 + recursiveFlatten(item); + } + } + } + + recursiveFlatten(arr); + return result; + } + + const flattenCoord = extractCoordinatePairs(allCoordinates); + extent = boundingExtent(flattenCoord); + return extent; + }, +}; + +/** + * [사용]피처 레이어 검색 + */ +Feature.prototype.getLayer = function () { + let map = GisApp.Module.core.map; + let this_ = this, + layer_; + let sameFeature = function (feature) { + return this_ === feature ? true : false; + }; + map.getLayers().forEach(function (layer) { + let source = layer.getSource(); + if (source instanceof VectorSource) { + let features = source.getFeatures(); + if (features.length > 0) { + let found = features.some(sameFeature); + if (found) { + layer_ = layer; + } + } + } + }); + return layer_; +}; + +export default GisApp; diff --git a/packages/common/business_components/src/ui/map/lib/gis.edit.js b/packages/common/business_components/src/ui/map/lib/gis.edit.js new file mode 100644 index 000000000..ce3fae555 --- /dev/null +++ b/packages/common/business_components/src/ui/map/lib/gis.edit.js @@ -0,0 +1,521 @@ +import GisApp from './gis.core'; +import Draw from 'ol/interaction/Draw.js'; +import Modify from 'ol/interaction/Modify.js'; +import Collection from 'ol/Collection.js'; +import Snap from 'ol/interaction/Snap.js'; +import { click, always } from 'ol/events/condition'; +import UndoRedo from 'ol-ext/interaction/UndoRedo.js'; +import Transform from 'ol-ext/interaction/Transform.js'; +import { gAlert } from './util'; +import VectorSource from 'ol/source/Vector.js'; +import VectorLayer from 'ol/layer/Vector'; + +const GisOlEditLayer = function (options) { + this.initialize(options); +}; + +GisOlEditLayer.prototype = { + defaults: {}, + editFlag: false, + draw: null, + modify: null, + snap: null, + undoredo: null, + transform: null, + drawType: { + point: 'Point', + line: 'MultiLineString', + poligon: 'MultiPolygon', + }, + selectedLayerId: null, //셀렉트 박스에서 선택된 레이어 ID + targetElement: null, + editFeatureInfo: {}, + addFeatureNo: 1, + initialize: function (options) { + Object.assign(this.defaults, options); + }, + /** + * [공통] Interaction 추가 + */ + addInteration: function () { + this.setUndoInteraction(); + }, + /** + * [공통] Interaction 삭제 + */ + removeInteraction: function () { + this.removeDraw(); + this.removeModify(); + this.removeSnap(); + this.clearUndoRedoFeature(); + }, + /** + * [공통] Interaction Active 컨트롤 + */ + setInteractionActive: function (active) { + this.setDrawActive(active); + this.setModifyActive(active); + this.setActiveUndo(active); + }, + /** + * [그리기] 기능 추가 + */ + setDraw: function (lyrId) { + if (!lyrId) return '레이어를 선택해주십시오.'; + const core = GisApp.Module.core; + const layer = core.getLayerById(lyrId); + const layerCode = GisApp.layerCode[lyrId]; + if (!layer) return '트리에서 레이어 체크 후 추가 가능합니다.'; + const lyrTy = layerCode.gobjTy; + + //초기화 + this.removeModify(); + this.removeTransform(); + if (GisApp.Module.select) { + GisApp.Module.select.setActive(false); + } + + const originalSource = layer.getSource(); + const drawSource = new VectorSource({ + features: originalSource.getFeatures(), // 기존 feature들 복사 + }); + + // 새로운 임시 레이어 추가 (draw 전용) + const drawLayer = new VectorLayer({ + source: drawSource, + minZoom: 1, // 이 레이어만 minZoom을 1로 설정 + style: layer.getStyle(), + }); + core.map.addLayer(drawLayer); + + //그리기 기능 추가 + const me = this; + + if (me.draw) { + core.map.removeInteraction(me.draw); + } + const drawType = this.drawType[lyrTy]; + this.draw = new Draw({ + type: drawType, + source: drawSource, + condition: function (evt) { + return true; + }, + }); + core.map.addInteraction(this.draw); + + //그리기 기능 이벤트 + this.draw.on('drawstart', function (event) {}); + + const drawFeatureCallback = function (event) { + me.setActiveUndo(true); + const drawFeature = event.feature; + drawFeature.setId(lyrId + '_feature_' + me.addFeatureNo++); + + const properties = {}; + properties['lyr_id'] = lyrId; + drawFeature.setProperties(properties); + + me.setAddFeatureUndo(layer, drawFeature); + me.setActiveUndo(false); + }; + + this.draw.on('drawend', function (event) { + drawFeatureCallback(event); + }); + + /*drawSource.listeners_.addfeature = null; + let addfeatureCallback = function(event){ + } + drawSource.on('addfeature', addfeatureCallback);*/ + }, + /** + * [그리기] 기능 제거 + */ + removeDraw: function () { + let core = GisApp.Module.core; + core.map.removeInteraction(this.draw); + if (GisApp.Module.select) { + GisApp.Module.select.setActive(true); + } + }, + /** + * [그리기] 기능 활성화 + */ + setDrawActive: function (active) { + if (this.draw) { + this.draw.setActive(active); + if (!active) { + /* $('#selectEditLayer').css('display', 'none'); + $('.btn_edit_add').removeClass('active'); */ + } + } + }, + /** + * [히스토리] UndoInteraction 추가 + */ + setUndoInteraction: function () { + let core = GisApp.Module.core; + if (!this.undoredo) { + this.undoredo = new UndoRedo(); + core.map.addInteraction(this.undoredo); + } + }, + /** + * [히스토리] UndoInteraction 제거 + */ + removeUndoInteraction: function () { + let core = GisApp.Module.core; + if (this.undoredo) { + core.map.removeInteraction(this.undoredo); + this.undoredo = null; + } + }, + /** + * [히스토리] UndoInteraction 활성화 + */ + setActiveUndo: function (active) { + if (this.undoredo) { + this.undoredo.setActive(active); + } + }, + /** + * [히스토리] 피처 추가 + */ + setAddFeatureUndo: function (layer, addFeature) { + if (this.undoredo) { + let obj = {}; + obj.target = layer.getSource(); + obj.feature = addFeature; + obj.type = 'addfeature'; + obj.feature.set('uploadType', 'addFeature'); + this.undoredo._onAddRemove(obj); + } + }, + /** + * [히스토리] 피처 삭제 + */ + setRemoveFeatureUndo: function (layer, removeFeature) { + if (this.undoredo) { + let obj = {}; + obj.target = layer.getSource(); + obj.feature = removeFeature; + obj.type = 'removefeature'; + if (obj.feature.get('uploadType') !== 'addFeature') { + obj.feature.set('uploadType', 'removeFeature'); + } + this.undoredo._onAddRemove(obj); + } + }, + /** + * [히스토리] 이전 + */ + undo: function () { + if (this.undoredo) { + if (this.undoredo.hasUndo() === 0) { + gAlert('INFO', 'NO_PREV_HISTORY'); + return; + } + this.setActiveUndo(true); + this.undoredo.undo(); + this.setActiveUndo(false); + } + }, + /** + * [히스토리] 다음 + */ + redo: function () { + if (this.undoredo) { + if (this.undoredo.hasRedo() === 0) { + gAlert('INFO', 'NO_NEXT_HISTORY'); + return; + } + this.setActiveUndo(true); + this.undoredo.redo(); + this.setActiveUndo(false); + } + }, + /** + * [히스토리] 초기화 + */ + clearUndoRedo: function () { + if (this.undoredo) { + const undoStack = this.undoredo._undoStack.array_; + for (let i in undoStack) { + const undo = undoStack[i]; + if (undo.feature) { + undo.feature.set('uploadType', null); + } + } + this.undoredo.clear(); + } + }, + /** + * [히스토리] 피처 초기화 + */ + clearUndoRedoFeature: function () { + if (this.undoredo) { + this.setActiveUndo(true); + const undoStack = [...this.undoredo._undoStack.array_]; + for (let i in undoStack) { + const undo = undoStack[i]; + if (undo.feature) { + this.undoredo.undo(); + } + } + this.setActiveUndo(false); + this.undoredo.clear(); + } + }, + /** + * [삭제] 피처 삭제 + */ + deleteFeature: function () { + //초기화 + this.removeDraw(); + this.removeModify(); + this.removeTransform(); + + //삭제 기능 실행 + let me = this; + let core = GisApp.Module.core; + let select = GisApp.Module.select; + select.getSelectedFeatures().forEach(function (selectedFeature) { + let selectedFeatureId = selectedFeature.getId(); + let layers = core.map.getLayers(); + for (let i in layers.array_) { + let layer = layers.array_[i]; + if (layer.get('mdfcnYn') === 'Y' && select.getVisible(layer)) { + layer + .getSource() + .getFeatures() + .forEach(function (feature) { + let featureId = feature.getId(); + if (selectedFeatureId === featureId) { + me.setActiveUndo(true); + feature.setProperties({ lyr_id: layer.get('id') }); + layer.getSource().removeFeature(feature); + me.setRemoveFeatureUndo(layer, feature); + me.setActiveUndo(false); + } + }); + } + } + }); + }, + /** + * [수정] 피처 수정 기능 셋팅 + */ + setModify: function () { + //초기화 + this.removeDraw(); + this.removeTransform(); + + //수정기능 추가 + let me = this; + let core = GisApp.Module.core; + let select = GisApp.Module.select; + let selectedFeatures = select.getSelectedFeatures(); + + this.modify = new Modify({ + features: selectedFeatures, + }); + core.map.addInteraction(this.modify); + + select.selectInteraction.on('change:active', function () { + selectedFeatures.forEach(function (each) { + selectedFeatures.remove(each); + }); + }); + + this.modify.on('modifystart', function (event) {}); + + this.modify.on('modifyend', function (event) { + let features = event.features.getArray(); + for (let i = 0; i < features.length; i++) { + let feature = features[i]; + let layer = select.selectInteraction.getLayer(feature); + feature.setProperties({ lyr_id: layer.get('id') }); + } + }); + }, + /** + * [수정] 피처 수정 기능 제거 + */ + removeModify: function () { + if (this.modify) { + let core = GisApp.Module.core; + core.map.removeInteraction(this.modify); + this.modify = null; + } + }, + /** + * [수정] 기능 활성화 + */ + setModifyActive: function (active) { + if (this.modify) { + this.modify.setActive(active); + } + }, + /** + * [크기조절] 피처 크기조절 기능 셋팅 + */ + setTransform: function () { + //초기화 + this.removeDraw(); + this.removeModify(); + + let me = this; + let core = GisApp.Module.core; + let select = GisApp.Module.select; + + this.transform = new Transform({ + enableRotatedTransform: false, + addCondition: click, + filter: function (f, l) { + return f.getGeometry().getType() !== 'Point'; + }, + // layers: [vector], + hitTolerance: select.defaults.hitTolerance, + translateFeature: true, + scale: true, + rotate: true, + keepAspectRatio: always, + translate: true, + stretch: true, + }); + this.transform.on(['rotateend', 'translateend', 'scaleend'], function (event) { + let features = event.features.getArray(); + for (let i = 0; i < features.length; i++) { + let feature = features[i]; + let layer = feature.getLayer(); + feature.setProperties({ lyr_id: layer.get('id') }); + } + }); + + core.map.addInteraction(this.transform); + }, + /** + * [크기조절] 피처 크기조절 기능 제거 + */ + removeTransform: function () { + if (this.transform) { + let core = GisApp.Module.core; + core.map.removeInteraction(this.transform); + this.transform = null; + } + }, + /** + * [크기조절] 피처 크기조절 기능 활성화 + */ + setTransformActive: function (active) { + if (this.transform) { + this.transform.setActive(active); + } + }, + /** + * [스냅] 기능 추가 + */ + setSnap: function (active) { + //초기화 + this.removeSnap(); + + //스냅 기능 추가 + let core = GisApp.Module.core; + let select = GisApp.Module.select; + core.map.removeInteraction(this.snap); + let features = []; + let layers = core.map.getLayers(); + for (let i in layers.array_) { + let layer = layers.array_[i]; + if (select.getVisible(layer) && layer.get('type') !== 'base') { + if (layer.getSource().getFeatures().length > 0) { + features = features.concat(layer.getSource().getFeatures()); + } + } + } + let snapCollection = new Collection(features); + this.snap = new Snap({ + features: snapCollection, + pixelTolerance: 30, + }); + core.map.addInteraction(this.snap); + }, + /** + * [스냅] 기능 제거 + */ + removeSnap: function () { + if (this.snap) { + let core = GisApp.Module.core; + core.map.removeInteraction(this.snap); + this.snap = null; + } + }, + /** + * [스냅] 스냅에 피처 추가 + */ + addSnap: function (layers) { + let me = this; + if (me.snap) { + for (let i in layers) { + let source = layers[i].getSource(); + source.listeners_.addfeature = null; + source.on('addfeature', function (event) { + me.snap.addFeature(event.feature); + }); + } + } + }, + /** + * [스냅] 기능 활성화 + */ + setSnapActive: function (active) { + if (this.snap) { + this.snap.setActive(active); + } + }, + + /** + * [저장] 피처 수정 정보 셋팅 + */ + setEditFeatureInfo: function (flag, feature) { + const featureId = feature.getId(); + const properties = feature.getProperties(); + + //신규 추가 후 삭제시에 editFeatureInfo에서 제거 + if (properties.uploadType === 'addFeature' && flag === 'delete') { + delete this.editFeatureInfo[featureId]; + return; + } + + //좌표값 WKT포멧으로 변경 + const pGeom = GisApp.Module.core.convertFeatureGeomToWKT(feature); + const param = { + flag, + ...properties, + geom: pGeom, + }; + this.editFeatureInfo[featureId] = param; + }, + getEditFeatureInfo: function () { + const undoStack = this.undoredo._undoStack.array_; + this.editFeatureInfo = {}; + for (let i in undoStack) { + const undo = undoStack[i]; + if (undo.feature) { + const feature = undo.feature; + const properties = feature.getProperties(); + if (properties.uploadType === 'addFeature') { + this.setEditFeatureInfo('insert', feature); + } else if (properties.uploadType === 'removeFeature') { + this.setEditFeatureInfo('delete', feature); + } else if (undo.type === 'changegeometry') { + this.setEditFeatureInfo('update', feature); + } + } + } + return this.editFeatureInfo; + }, +}; + +export default GisOlEditLayer; diff --git a/packages/common/business_components/src/ui/map/lib/gis.layer.js b/packages/common/business_components/src/ui/map/lib/gis.layer.js new file mode 100644 index 000000000..3e0f6d1a1 --- /dev/null +++ b/packages/common/business_components/src/ui/map/lib/gis.layer.js @@ -0,0 +1,557 @@ +import Feature from 'ol/Feature.js'; +import GeoJSON from 'ol/format/GeoJSON.js'; +import Point from 'ol/geom/Point.js'; +import VectorLayer from 'ol/layer/Vector'; +import VectorImageLayer from 'ol/layer/VectorImage.js'; +import { all, bbox } from 'ol/loadingstrategy'; +import { transform } from 'ol/proj'; +import Cluster from 'ol/source/Cluster.js'; +import VectorSource from 'ol/source/Vector.js'; +import VectorTile from 'ol/source/VectorTile.js'; +import CircleStyle from 'ol/style/Circle.js'; +import Fill from 'ol/style/Fill.js'; +import Icon from 'ol/style/Icon.js'; +import Stroke from 'ol/style/Stroke.js'; +import Style from 'ol/style/Style.js'; +import Text from 'ol/style/Text.js'; +import { createXYZ } from 'ol/tilegrid'; +import GisApp from './gis.core.js'; +import GisOlStyle from './gis.style.js'; +import Tile from 'ol/layer/Tile.js'; +import TileWMS from 'ol/source/TileWMS.js'; +import gisCore from './gis.core.js'; + +/** + * GisApp.layer + * @requires gis.core.js + * @requires gis.style.js + */ +const GisOlLayer = function (options) { + this.initialize(options); +}; + +GisOlLayer.prototype = { + layers: [], + cesiumLayers: [], + defaults: {}, + storageNm: 'hasudo:', + defaultLayerOptions: { + name: '', + zIndex: 2, + opacity: 1, + flterSql: null, + minZoom: '15', + }, + initialize: function (options) { + Object.assign(this.defaults, options); + this.gisStyle = new GisOlStyle(); + GisApp.Module.style = this.gisStyle; + }, + gisStyle: null, + /** + * [사용]빈 레이어 생성 + */ + makeLayer: function (options) { + let layerOptions = { + ...this.defaultLayerOptions, + ...options, + minZoom: options?.minViewSize ? options?.minViewSize : options?.minZoom, + zIndex: options?.drawOrdr ? options?.drawOrdr : 1, + }; + let returnLayer = new VectorImageLayer(layerOptions); + this.layers.push(returnLayer); + return returnLayer; + }, + /** + * gisStyle 반환 + */ + getGisStyle: function () { + return this.gisStyle; + }, + /** + * [사용]WFS 벡터 소스 반환 + */ + getVectorSourceGeoserver: function (options) { + const url = GisApp.GEOSERVER_URL; + const toProj = GisApp.TO_PROJ; + const lyrTyNm = options.lyrTyNm; + const params = {}; + params['TYPENAME'] = this.storageNm + lyrTyNm; + params['SERVICE'] = 'WFS'; + params['VERSION'] = '1.1.0'; + params['REQUEST'] = 'GetFeature'; + params['SRS'] = toProj; + params['OUTPUTFORMAT'] = 'application/json'; + if (options?.flterSql && options?.flterSql?.trim() !== 'null') { + params['CQL_FILTER'] = options?.flterSql; + } + const strParams = new URLSearchParams(params).toString(); + let source = new VectorSource({ + format: new GeoJSON(), + url: function (extent) { + return url + '?' + strParams; + }, + strategy: all, + }); + return source; + }, + /** + * [사용]WFS 벡터 소스 반환 + */ + getVectorTileSource: function (options) { + let url = GisApp.GEOSERVER_URL; + let toProj = GisApp.TO_PROJ; + let params = {}; + params['TYPENAME'] = this.storageNm + options.typeName; + params['SERVICE'] = 'WFS'; + params['VERSION'] = '1.1.0'; + params['REQUEST'] = 'GetFeature'; + params['SRS'] = toProj; + params['OUTPUTFORMAT'] = 'application/json'; + let strParams = new URLSearchParams(params).toString(); + + let source = new VectorTile({ + format: new GeoJSON(), + + tileUrlFunction: function (tileCoord, pixelRatio, projection) { + let filterStr = '&CQL_FILTER=bbox(GEOM,' + source.getTileGrid().getTileCoordExtent(tileCoord).join(',') + ",'" + projection.getCode() + "')"; + if (options.flterSql) { + filterStr += ' AND ' + options.flterSql; + } + let paramWithUrl = url + '?' + strParams + filterStr; + return paramWithUrl; + }, + tileGrid: createXYZ, + }); + + return source; + }, + /** + * [사용]WFS 레이어 생성 + */ + getWfsLayer: function (option) { + option = option || {}; + //레이어 생성 + let returnLayer = this.makeLayer(option); + //레이어 소스 생성 + let source = this.getVectorSourceGeoserver(option); + returnLayer.setSource(source); + //스타일 추가 + returnLayer.setStyle(this.gisStyle.getLayerStyleFunction(returnLayer, option)); + returnLayer.set('id', option.id + ''); + return returnLayer; + }, + /** + * [사용]WMS 레이어 생성 + */ + getWmsLayer: function (options) { + let layerOptions = Object.assign({}, this.defaultLayerOptions, options); + let url = GisApp.GEOSERVER_WMS_URL; + let toProj = GisApp.TO_PROJ; + const lyrTyNm = options.lyrTyNm; + let params = {}; + params['LAYERS'] = this.storageNm + lyrTyNm; + params['SERVICE'] = 'WMS'; + params['VERSION'] = '1.1.1'; + params['REQUEST'] = 'GetMap'; + params['SRS'] = toProj; + params['FORMAT'] = 'image/png'; + params['TILED'] = true; + const wmsLayer = new Tile({ + ...layerOptions, + id: layerOptions?.id, + source: new TileWMS({ + url, + params, + serverType: 'geoserver', + }), + }); + wmsLayer.setZIndex(options.draw0rdr); + wmsLayer.setMinZoom(options.minViewSize); + this.layers.push(wmsLayer); + return wmsLayer; + }, + /** + * [사용]WFS 레이어 생성 + */ + getWfsEmptyLayer: function (option) { + option = option || {}; + //레이어 생성 + let returnLayer = this.makeLayer(option); + let vectorSource = new VectorSource({ + strategy: all, + }); + returnLayer.setSource(vectorSource); + //스타일 추가 + returnLayer.setStyle(this.gisStyle.getLayerStyle(returnLayer, option)); + returnLayer.set('id', option.id + ''); + let map = GisApp.Module.core.map; + map.addLayer(returnLayer); + return returnLayer; + }, + /** + * 피처 리스트로 레이어 생성 + */ + getLayerByFeature: function (feature, layerOptions, layerStyle) { + if (!layerOptions || !layerOptions.id) { + return null; + } + let vectorSource = new VectorSource({ + strategy: all, + }); + if (feature) { + if (Object.prototype.toString.call(feature).slice(8, -1).indexOf('Object') > -1) { + vectorSource.addFeature(feature); + } else { + vectorSource.addFeatures(feature); + } + } + GisApp.Module.core.deleteLayer(layerOptions.id); + layerOptions.source = vectorSource; + let layer = new VectorImageLayer(layerOptions); + layer.setStyle(layerStyle); + layer.set('id', layerOptions.id + ''); + return layer; + }, + /** + * 피처 하이라이트 + */ + highLightFeature: function (hlFeature, layerOptions, styleOptions, customStyleFunction) { + const color = styleOptions.color || 'rgba(135, 116, 243, 0.4)'; + const width = styleOptions.width || 10; + const featureKey = styleOptions.featureKey || ''; + const fitExtent = layerOptions.fitExtent || 'true'; + + const styleFunction = function (feature, resolution) { + const featureStyle = feature.getStyle(); + if (featureStyle) return null; + const style = new Style({ + image: new CircleStyle({ + fill: new Fill({ + color: color, + }), + radius: width, + }), + stroke: new Stroke({ + color: color, + width: width, + }), + }); + + const getFeatureText = function (feature) { + if (featureKey) { + let text = feature.get(featureKey); + if (text) return text; + } + return ''; + }; + const text = new Text({ + stroke: new Stroke({ + color: 'white', + width: 2, + }), + fill: new Fill({ + color: 'black', + }), + font: '12px Verdana', + text: getFeatureText(feature), + }); + style.setText(text); + return style; + }; + let actualStyleFunction = customStyleFunction || styleFunction; + GisApp.Module.core.deleteLayer(layerOptions.id); + let layer = this.getLayerByFeature(hlFeature, layerOptions, actualStyleFunction); + if (hlFeature && hlFeature.length > 0) { + let map = GisApp.Module.core.map; + map.addLayer(layer); + if (fitExtent === 'true') { + GisApp.Module.core.fitExtent(layer.getSource().getExtent()); + } + } + return layer; + }, + /** + * 마커 레이어 맵에 추가 + */ + addMarkerLayer: function (lat, lon, fromProj, layerOptions) { + let p = transform([Number(lon), Number(lat)], fromProj, GisApp.TO_PROJ); + let feature = new Feature({ + geometry: new Point(p), + }); + let layer = this.getMarkerLayer(layerOptions); + layer.getSource().addFeature(feature); + let map = GisApp.Module.core.map; + map.addLayer(layer); + GisApp.Module.core.fitExtent(feature.getGeometry().getExtent()); + return layer; + }, + /** + * 마커 레이어 생성 + */ + getMarkerLayer: function (layerOptions) { + let imgSrc = GisApp.CONTEXT_PATH + 'images/marker/marker-icon.png'; + let style = new Style({ + image: new Icon({ + anchor: [0.5, 46], + anchorXUnits: 'fraction', + anchorYUnits: 'pixels', + src: imgSrc, + }), + }); + let layer = this.getLayerByFeature(null, layerOptions, style); + return layer; + }, + /** + * 피처 생성 + */ + getFeatureCoord: function (coord) { + let feature = new Feature({ + geometry: new Point(coord), + }); + return feature; + }, + /** + * 피처 생성(lat,lon) + */ + getFeatureLonLat: function (lat, lon) { + let p = transform([Number(lon), Number(lat)], GisApp.FROM_PROJ, GisApp.TO_PROJ); + let feature = new Feature({ + geometry: new Point(p), + }); + return feature; + }, + addPolygonLayer: function (features, option) { + const map = GisApp.Module.core.map; + option = Object.assign( + { + gobjTy: 'lineLabelPoligon', + minZoom: option?.minZoom || '10', + lblAtrbNm: option?.lblAtrbNm || 'fclty_nm', + lnWdth: option?.lnWdth || '2', + lnColor: option?.lnColor || 'rgba(0, 0, 0, 1)', + polgnColor: option?.polgnColor || 'rgba(255, 0, 0, 0.2)', + clickPsblYn: option?.clickPsblYn || 'N', + fondNm: '18px "맑은 고딕",Malgun Gothic', + }, + option + ); + features[0].set('overLayId', option?.overlayId || null); + features[0].set('html', option?.html || null); + //레이어 생성 + let vectorLayer = this.makeLayer(option); + //레이어 소스 생성 + const vectorSource = new VectorSource({}); + vectorSource.addFeatures(features); + vectorLayer.setSource(vectorSource); + //스타일 추가 + vectorLayer.setStyle(this.gisStyle.getLayerStyleFunction(vectorLayer, option)); + vectorLayer.set('id', option?.id + ''); + GisApp.Module.core.deleteLayer(option?.id); + map.addLayer(vectorLayer); + }, + addLayerByLyrTyNm: function (id, lyrTyNm, addQurryFlter) { + const map = GisApp.Module.core.map; + const layerCode = GisApp.layerCode; + const matched = Object.values(layerCode).find(obj => obj.lyrTyNm === lyrTyNm); + matched['id'] = id; + let layer = GisApp.Module.core.getLayerById(matched?.id); + if (layer) { + layer.setVisible(true); + } else { + const queryFlter = layerCode?.flterSql || '' + ' ' + (addQurryFlter || ''); + matched['flterSql'] = queryFlter; + layer = this.getWfsLayer(matched); + GisApp.Module.core.deleteLayer(id); + map.addLayer(layer); + } + }, + /** + * 클러스터 레이어 맵에 추가 + */ + addClusterLayer: function (features, { layerId, color }) { + const map = GisApp.Module.core.map; + const vectorSource = new VectorSource({}); + vectorSource.addFeatures(features); + const clusterLayerId = layerId + 'Cluster'; + const vectorLayerId = layerId + 'Vector'; + // 클러스터 레이어 생성 + const clusterLayer = new VectorLayer({ + id: clusterLayerId, + source: new Cluster({ + distance: 100, // 클러스터링 거리 + source: vectorSource, + geometryFunction: function (feature) { + let geometry = feature.getGeometry(); + let type = geometry.getType(); + let coordinates; + if (type === 'Point') { + coordinates = geometry.getCoordinates(); + } else if (type === 'LineString' || type === 'MultiLineString') { + let totalX = 0; + let totalY = 0; + let totalPoints = 0; + geometry.getCoordinates().forEach(line => { + line.forEach(point => { + totalX += point[0]; + totalY += point[1]; + totalPoints++; + }); + }); + coordinates = [totalX / totalPoints, totalY / totalPoints]; + } + return new Point(coordinates); + }, + }), + style: feature => { + const clusterSize = feature.get('features').length; + return new Style({ + image: new CircleStyle({ + radius: 10, + fill: new Fill({ color }), + }), + stroke: new Stroke({ + color, + width: 10, + }), + text: new Text({ + text: clusterSize.toString(), + fill: new Fill({ + color: 'white', + }), + stroke: new Stroke({ + color: 'black', + width: 4, + }), + }), + }); + }, + }); + + const vectorLayer = new VectorLayer({ + id: vectorLayerId, + zIndex: 1, + source: vectorSource, + style: new Style({ + image: new CircleStyle({ + radius: 10, + fill: new Fill({ color }), + }), + stroke: new Stroke({ + color, + width: 10, + }), + }), + }); + GisApp.Module.core.deleteLayer(clusterLayerId); + GisApp.Module.core.deleteLayer(vectorLayerId); + map.addLayer(clusterLayer); + map.addLayer(vectorLayer); + function handleZoomEnd() { + const findClusterLayer = map + ?.getLayers() + ?.getArray() + .find(function (layer) { + return layer.get('id') === clusterLayerId; + }); + const findVectorLayer = map + ?.getLayers() + ?.getArray() + .find(function (layer) { + return layer.get('id') === vectorLayerId; + }); + if (!findClusterLayer) { + GisApp.Module.core.deleteLayer(vectorLayerId); + } + if (!findVectorLayer) { + GisApp.Module.core.deleteLayer(vectorLayerId); + } + const zoomLevel = map.getView().getZoom(); + if (zoomLevel >= 18) { + vectorLayer.setVisible(true); + clusterLayer.setVisible(false); + } else { + clusterLayer.setVisible(true); + vectorLayer.setVisible(false); + } + if (!findClusterLayer && !findVectorLayer) { + map.getView().un('change:resolution', handleZoomEnd); + } + } + // 줌 이벤트 핸들러 등록 + map.getView().un('change:resolution', handleZoomEnd); + map.getView().on('change:resolution', handleZoomEnd); + handleZoomEnd(); + }, + setLayersToCesium: function (ol3dInstance) { + let me = this; + //const { Cesium } = window; + const cesiumScene = ol3dInstance.getCesiumScene(); // Cesium Scene 가져오기 + me.cesiumLayers.forEach(cesiumLayer => { + cesiumScene.imageryLayers.remove(cesiumLayer); + }); + const layers = GisApp.Module.core.map + .getAllLayers() + .filter(layer => layer.get('type') !== 'base') + .sort((a, b) => { + const orderA = a.getProperties().drawOrdr || 0; + const orderB = b.getProperties().drawOrdr || 0; + return orderA - orderB; // 낮은 값이 먼저 오도록 정렬 + }); + + layers.forEach(layer => { + const properties = layer.getProperties(); + let cesiumLayer = null; + if (properties?.lyrTyNm) { + const visible = layer.getVisible(); + const lyrTyNm = properties.lyrTyNm; + // OpenLayers에서 레이어의 가시성 확인 + const { Cesium } = window; + const wmsUrl = GisApp.GEOSERVER_WMS_URL; + const wmsProvider = new Cesium.WebMapServiceImageryProvider({ + url: wmsUrl, + layers: GisApp.Module.layer.storageNm + lyrTyNm, // WMS 레이어 이름 + parameters: { + service: 'WMS', + version: '1.1.1', + request: 'GetMap', + format: 'image/png', + transparent: true, + styles: lyrTyNm, + }, + }); + cesiumLayer = cesiumScene.imageryLayers.addImageryProvider(wmsProvider); + cesiumLayer['properties'] = properties; + me.cesiumLayers.push(cesiumLayer); + if (properties?.visible) { + const zoomLevel = getOpenLayersZoom(cesiumScene); + cesiumLayer.show = zoomLevel >= Number(properties?.minZoom); + } else { + cesiumLayer.show = false; + } + } + }); + if (me.cesiumLayers.length > 0) { + cesiumScene._moveEndListener = () => { + const zoomLevel = getOpenLayersZoom(cesiumScene); // 대략적인 줌 계산 + me.cesiumLayers.forEach(cesiumLayer => { + const properties = cesiumLayer.properties; + if (properties?.visible) { + console.log('zoomLevel >= minZoom==', properties?.lyrTyNm, zoomLevel >= properties?.minZoom); + cesiumLayer.show = zoomLevel >= Number(properties?.minZoom); + } + }); + }; + cesiumScene.camera.moveEnd.addEventListener(cesiumScene._moveEndListener); + } + }, +}; + +function getOpenLayersZoom(cesiumScene) { + const cameraHeight = cesiumScene.camera.positionCartographic.height; + const maxResolution = 156543.03392804097; // OpenLayers 기본 해상도 (Google Mercator 기준) + const tileSize = 256; // 기본 타일 크기 + return Math.ceil(Math.log2(maxResolution / (cameraHeight / tileSize))); +} + +export default GisOlLayer; diff --git a/packages/common/business_components/src/ui/map/lib/gis.measure.js b/packages/common/business_components/src/ui/map/lib/gis.measure.js new file mode 100644 index 000000000..6fc427bed --- /dev/null +++ b/packages/common/business_components/src/ui/map/lib/gis.measure.js @@ -0,0 +1,204 @@ +import Style from 'ol/style/Style'; +import VectorLayer from 'ol/layer/Vector'; +import VectorSource from 'ol/source/Vector'; +import Fill from 'ol/style/Fill.js'; +import Stroke from 'ol/style/Stroke'; +import CircleStyle from 'ol/style/Circle'; +import { getLength, getArea } from 'ol/sphere'; +import Draw from 'ol/interaction/Draw'; +import Polygon from 'ol/geom/Polygon'; +import LineString from 'ol/geom/LineString'; +import { unByKey } from 'ol/Observable'; +import Overlay from 'ol/Overlay'; +import GisApp from './gis.core'; +//import DOMPurify from 'dompurify'; +const GisOlMeasure = function (options) { + GisApp.measure = {}; + GisApp.measure.helpTooltipElement = null; + GisApp.measure.helpTooltip = null; + GisApp.measure.sketch = null; + GisApp.measure.measureTooltipElement = null; + GisApp.measure.measureTooltip = null; + GisApp.measure.continueLineMsg = '선 그리기 종료를 위해 마우스를 더블클릭하세요.'; + GisApp.measure.Polygon = 'Polygon'; + GisApp.measure.LineString = 'LineString'; + + this.initialize(options); +}; + +GisOlMeasure.prototype = { + map: null, + draw: null, + vector: null, + type: null, + initialize: function (map) { + let me = this; + let source = new VectorSource(); + let vector = new VectorLayer({ + source: source, + style: new Style({ + fill: new Fill({ + color: 'rgba(255, 255, 255, 0.2)', + }), + stroke: new Stroke({ + color: '#ffcc33', + width: 2, + }), + image: new CircleStyle({ + radius: 7, + fill: new Fill({ + color: '#ffcc33', + }), + }), + }), + }); + me.map = map; + me.vector = vector; + me.map.addLayer(vector); + me.map.removeInteraction(this.draw); + }, + pointerMoveHandler: function (evt) { + if (evt.dragging) { + return; + } + let helpMsg = '시작점을 선택하세요'; + if (GisApp.measure.sketch) { + helpMsg = GisApp.measure.continueLineMsg; + } + if (GisApp.measure.helpTooltipElement) { + //GisApp.measure.helpTooltipElement.innerHTML = DOMPurify.sanitize(helpMsg); + GisApp.measure.helpTooltipElement.innerHTML = helpMsg; + GisApp.measure.helpTooltip.setPosition(evt.coordinate); + GisApp.measure.helpTooltipElement.classList.remove('hidden'); + } + }, + formatLength: function (line) { + let length = getLength(line); + let output; + if (length > 1000) { + output = Math.round((length / 1000) * 100) / 100 + ' ' + 'km'; + } else { + output = Math.round(length * 100) / 100 + ' ' + 'm'; + } + return output; + }, + formatArea: function (polygon) { + let area = getArea(polygon); + let output; + if (area > 10000) { + output = Math.round((area / 1000000) * 100) / 100 + ' ' + 'km2'; + } else { + output = Math.round(area * 100) / 100 + ' ' + 'm2'; + } + return output; + }, + addInteraction: function (type) { + let me = this; + me.map.removeInteraction(me.draw); + me.map.on('pointermove', me.pointerMoveHandler); + me.type = type; + + let source = me.vector.getSource(); + me.draw = new Draw({ + source: source, + type: type, + style: new Style({ + fill: new Fill({ + color: 'rgba(255, 255, 255, 0.2)', + }), + stroke: new Stroke({ + color: 'rgba(0, 0, 0, 0.5)', + lineDash: [10, 10], + width: 2, + }), + image: new CircleStyle({ + radius: 5, + stroke: new Stroke({ + color: 'rgba(0, 0, 0, 0.7)', + }), + fill: new Fill({ + color: 'rgba(255, 255, 255, 0.2)', + }), + }), + }), + }); + + me.map.addInteraction(me.draw); + me.createMeasureTooltip(); + me.createHelpTooltip(); + + let listener; + me.draw.on('drawstart', function (evt) { + let tooltipCoord = evt.coordinate; + GisApp.measure.sketch = evt.feature; + listener = GisApp.measure.sketch.getGeometry().on('change', function (evt) { + let geom = evt.target; + let output; + if (geom instanceof Polygon) { + output = me.formatArea(geom); + tooltipCoord = geom.getInteriorPoint().getCoordinates(); + } else if (geom instanceof LineString) { + output = me.formatLength(geom); + tooltipCoord = geom.getLastCoordinate(); + } + //GisApp.measure.measureTooltipElement.innerHTML = DOMPurify.sanitize(output); + GisApp.measure.measureTooltipElement.innerHTML = output; + GisApp.measure.measureTooltip.setPosition(tooltipCoord); + }); + }); + + me.draw.on('drawend', function () { + GisApp.measure.measureTooltipElement.className = 'ol-tooltip ol-tooltip-static'; + GisApp.measure.measureTooltip.setOffset([0, -7]); + GisApp.measure.sketch = null; + // unset tooltip so that a new one can be created + GisApp.measure.measureTooltipElement = null; + me.createMeasureTooltip(); + unByKey(listener); + me.removeInteraction(); + }); + }, + removeInteraction: function () { + this.map.removeInteraction(this.draw); + this.map.removeOverlay(GisApp.measure.helpTooltip); + }, + removeFeature: function () { + let source = this.vector.getSource(); + let features = this.vector.getSource().getFeatures(); + for (let i in features) { + let feature = features[i]; + source.removeFeature(feature); + } + }, + createHelpTooltip: function () { + let me = this; + if (GisApp.measure.helpTooltipElement) { + GisApp.measure.helpTooltipElement.parentNode.removeChild(GisApp.measure.helpTooltipElement); + } + GisApp.measure.helpTooltipElement = document.createElement('div'); + GisApp.measure.helpTooltipElement.className = 'ol-tooltip hidden'; + GisApp.measure.helpTooltip = new Overlay({ + element: GisApp.measure.helpTooltipElement, + offset: [15, 0], + positioning: 'center-left', + }); + me.map.addOverlay(GisApp.measure.helpTooltip); + }, + createMeasureTooltip: function () { + let me = this; + if (GisApp.measure.measureTooltipElement) { + GisApp.measure.measureTooltipElement.parentNode.removeChild(GisApp.measure.measureTooltipElement); + } + GisApp.measure.measureTooltipElement = document.createElement('div'); + GisApp.measure.measureTooltipElement.className = 'ol-tooltip ol-tooltip-measure'; + GisApp.measure.measureTooltip = new Overlay({ + id: 'measure', + element: GisApp.measure.measureTooltipElement, + offset: [0, -15], + positioning: 'bottom-center', + }); + me.map.addOverlay(GisApp.measure.measureTooltip); + }, +}; + +export default GisOlMeasure; 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 new file mode 100644 index 000000000..d48c67a5e --- /dev/null +++ b/packages/common/business_components/src/ui/map/lib/gis.select.js @@ -0,0 +1,407 @@ +import GisApp from './gis.core'; +import _ from 'lodash'; +import Style from 'ol/style/Style.js'; +import { click, mouseOnly, never } from 'ol/events/condition'; +import DragBox from 'ol/interaction/DragBox.js'; +import Draw from 'ol/interaction/Draw.js'; +import Select from 'ol/interaction/Select.js'; +import VectorLayer from 'ol/layer/Vector.js'; +import Overlay from 'ol/Overlay.js'; +import VectorSource from 'ol/source/Vector.js'; +import CircleStyle from 'ol/style/Circle.js'; +import Fill from 'ol/style/Fill.js'; +import Stroke from 'ol/style/Stroke.js'; +//import DOMPurify from 'dompurify'; + +const GisOlSelect = function (map, options) { + GisApp.select = {}; + GisApp.select.helpTooltipElement = null; + GisApp.select.helpTooltip = null; + GisApp.select.helpMsg = null; + this.initialize(map, options); +}; + +GisOlSelect.prototype = { + map: null, + defaults: { + hitTolerance: 10, + useAreaControl: false, + }, + selectInteraction: null, + dragBox: null, + dragPolygon: null, + selectedFeatures: [], + selectFeatureFlag: false, + initialize: function (map, options) { + this.map = map; + _.extend(this.defaults, options); + this.setInteraction(); + this.pointerMoveEventHandler(); + }, + /** + * SELECT 이벤트 등록 + */ + setInteraction: function () { + let me = this; + let map = this.map; + if (this.selectInteraction) { + this.removeInteration(); + } + let baseStyle = new Style({ + stroke: new Stroke({ + color: 'rgba(135, 116, 243, 0.4)', + width: 10, + }), + }); + + this.selectInteraction = new Select({ + style: function (feature) { + let styles = []; + let layer = feature.getLayer(); + let style = GisApp.Module.style.getLayerStyle(layer, null); + if (style) { + styles.push(style); + } + styles.push(baseStyle); + return styles; + }, + layers: function (layer) { + let clickPsblYn = layer?.get('clickPsblYn'); + return clickPsblYn === 'Y'; + }, + condition: click, + hitTolerance: me.defaults.hitTolerance, + }); + map.addInteraction(this.selectInteraction); + + this.selectedFeatures = this.selectInteraction.getFeatures(); + }, + /** + * SELECT 피처 초기화 + */ + reset: function () { + let me = this; + if (GisApp.Module.edit) { + GisApp.Module.edit.setDrawActive(false); + } + if (GisApp.Module.draw) { + GisApp.Module.draw.setDrawActive(false); + } + me.setActive(true); + me.removeHelpTooltip(); + + let map = this.map; + map.removeInteraction(me.dragBox); + map.removeInteraction(me.dragPolygon); + + this.selectInteraction.addCondition_ = never; + this.selectFeatureFlag = false; + + if (GisApp.Module.measure) { + GisApp.Module.measure.removeFeature(); + GisApp.Module.core.deleteOverlay('measure'); + } + + GisApp.Module.core.deleteLayer(GisApp.hLayerId); + GisApp.Module.core.deleteLayer(GisApp.hlLayerId); + + this.resetSelectedFeature(); + }, + /** + * 단일 SELECT 이벤트 등록 + */ + setSingleInteration: function () { + this.reset(); + this.selectInteraction.addCondition_ = click; + this.selectFeatureFlag = true; + }, + /** + * 박스 SELECT 이벤트 등록 + */ + setBoxInteration: function () { + //초기화 + this.reset(); + this.selectFeatureFlag = true; + + let me = this; + let map = this.map; + me.dragBox = new DragBox({ + condition: mouseOnly, + }); + map.addInteraction(this.dragBox); + GisApp.select.helpMsg = '직사각형 시작점을 클릭하고 드래그하세요.'; + me.createHelpTooltip(); + me.dragBox.on('boxend', function () { + let rotation = map.getView().getRotation(); + let oblique = rotation % (Math.PI / 2) !== 0; + let candidateFeatures = oblique ? [] : me.selectedFeatures; + let extent = me.dragBox.getGeometry().getExtent(); + let layers = map.getLayers(); + for (let i in layers.array_) { + let layer = layers.array_[i]; + if (layer?.get('clickPsblYn') == 'Y' && me.getVisible(layer)) { + layer.getSource().forEachFeatureIntersectingExtent(extent, function (feature) { + candidateFeatures.push(feature); + }); + } + } + + if (oblique) { + let anchor = [0, 0]; + let geometry = me.dragBox.getGeometry().clone(); + geometry.rotate(-rotation, anchor); + let extent$1 = geometry.getExtent(); + candidateFeatures.forEach(function (feature) { + let geometry = feature.getGeometry().clone(); + geometry.rotate(-rotation, anchor); + if (geometry.intersectsExtent(extent$1)) { + me.selectedFeatures.push(feature); + } + }); + } + me.selectInteraction.dispatchEvent({ + type: 'select', + selected: me.selectedFeatures, + deselected: [], + }); + map.removeInteraction(me.dragBox); + }); + + me.dragBox.on('boxstart', function () { + me.removeHelpTooltip(); + me.selectedFeatures.clear(); + }); + }, + /** + * 폴리곤 SELECT 이벤트 등록 + */ + setPolygonInteration: function () { + this.reset(); + this.selectFeatureFlag = true; + + let me = this; + let map = this.map; + + //폴리곤 레이어 생성 + let polygonSource = new VectorSource({ + useSpatialIndex: false, + }); + let polygonLayer = new VectorLayer({ + source: polygonSource, + }); + map.addLayer(polygonLayer); + + //폴리곤 draw 객체 생성 + me.dragPolygon = new Draw({ + source: polygonSource, + type: 'Polygon', + condition: mouseOnly, + }); + map.addInteraction(me.dragPolygon); + + //툴팁 추가 + GisApp.select.helpMsg = '시작점을 클릭하세요.'; + me.createHelpTooltip(); + + me.dragPolygon.on('drawstart', function () { + me.removeHelpTooltip(); + me.selectedFeatures.clear(); + }); + + me.dragPolygon.on('drawend', function (evt) { + setTimeout(function () { + let polygon = evt.feature.getGeometry(); + let layers = map.getLayers(); + for (let i in layers.array_) { + let layer = layers.array_[i]; + if (layer?.get('clickPsblYn') == 'Y' && me.getVisible(layer)) { + let features = layer.getSource().getFeatures(); + for (let j = 0; j < features.length; j++) { + if (polygon.intersectsExtent(features[j].getGeometry().getExtent())) { + me.selectedFeatures.push(features[j]); + } + } + } + } + me.selectInteraction.dispatchEvent({ + type: 'select', + selected: me.selectedFeatures, + deselected: [], + }); + map.removeInteraction(me.dragPolygon); + map.removeLayer(polygonLayer); + }, 300); + }); + return me.dragPolygon; + }, + /** + * 레이어 추가 + */ + addLayer: function (layer) { + if (layer) { + layer.set('clickPsblYn', 'Y'); + } + }, + /** + * 레이어 삭제 + */ + removeLayer: function (layer) { + if (layer) { + layer.set('clickPsblYn', 'N'); + } + }, + /** + * 선택된 객체 초기화 + */ + resetSelectedFeature: function () { + const selectedFeatures = this.selectedFeatures; + selectedFeatures.forEach(feature => { + selectedFeatures.remove(feature); + }); + }, + /** + * SELECT 이벤트 활성화 + */ + setActive: function (active) { + this.selectInteraction.setActive(active); + }, + /** + * SELECT 이벤트 삭제 + */ + removeInteration: function () { + let map = this.map; + map.removeInteraction(this.selectInteraction); + this.selectInteraction = null; + + //포인터 변경 삭제 + this.removePointerMoveEventHandler('pointerMoveForSelect'); + }, + /** + * 피처 위에 마우스 오버시 포인터 변경 + */ + pointerMoveEventHandler: function () { + let me = this; + let map = this.map; + let pointerMoveForSelect = function (evt) { + let hit = this.forEachFeatureAtPixel( + evt.pixel, + function (feature, layer) { + let returnFlag = true; + if (layer?.get('clickPsblYn') === 'N') { + returnFlag = false; + } + return returnFlag; + }, + { hitTolerance: me.defaults.hitTolerance } + ); + + if (hit && me.selectInteraction.getActive()) { + this.getTargetElement().style.cursor = 'pointer'; + } else { + this.getTargetElement().style.cursor = ''; + } + }; + map.on('pointermove', pointerMoveForSelect); + }, + /** + * 포인터 이벤트 삭제 + */ + removePointerMoveEventHandler: function (fnNm) { + GisApp.Module.core.removeMapEventFnNm('pointermove', fnNm); + }, + /** + * 선택된 피처 정보 반환(callback) + */ + getSelectedInfo: function (callback) { + let me = this; + this.selectInteraction.on('select', function (e) { + if (!e.auto) { + let features = me.selectInteraction.getFeatures(); + let layers = []; + for (let i in features.array_) { + let feature = features.array_[0]; + let layer = me.selectInteraction.getLayer(feature); + layers.push(layer); + } + callback(features.array_, layers); + } + }); + }, + /** + * 선택된 피처 정보 반환 + */ + getSelectedFeatures: function () { + return this.selectInteraction.getFeatures(); + }, + /** + * 마지막으로 선택된 피처 정보 반환 + */ + getLastSelectedFeatures: function () { + return this.selectInteraction.getFeatures(); + }, + /** + * 툴팁 생성 + */ + createHelpTooltip: function () { + let me = this; + let map = this.map; + GisApp.select.helpTooltipElement = document.createElement('div'); + GisApp.select.helpTooltipElement.className = 'ol-tooltip hidden'; + GisApp.select.helpTooltip = new Overlay({ + element: GisApp.select.helpTooltipElement, + offset: [15, 0], + positioning: 'center-left', + }); + map.addOverlay(GisApp.select.helpTooltip); + map.on('pointermove', me.pointerMoveTooltipHandler); + }, + /** + * 툴팁 삭제 + */ + removeHelpTooltip: function () { + if (GisApp.select.helpTooltipElement) { + let map = this.map; + this.removePointerMoveEventHandler('pointerMoveTooltipHandler'); + map.removeOverlay(GisApp.measure.helpTooltip); + GisApp.select.helpTooltipElement.remove(); + } + }, + /** + * 툴팁용 포인터 move 이벤트 + */ + pointerMoveTooltipHandler: function (evt) { + if (evt.dragging) { + return; + } + //GisApp.select.helpTooltipElement.innerHTML = DOMPurify.sanitize(GisApp.select.helpMsg); + GisApp.select.helpTooltipElement.innerHTML = GisApp.select.helpMsg; + GisApp.select.helpTooltip.setPosition(evt.coordinate); + GisApp.select.helpTooltipElement.classList.remove('hidden'); + }, + getVisible: function (layer) { + let maxZoom = layer.getMaxZoom(); + let minZoom = layer.getMinZoom(); + let map = this.map; + let curZoom = map.getView().getZoom(); + if (layer.getVisible() && maxZoom > curZoom && minZoom < curZoom) { + return true; + } + return false; + }, + /** + * 피처 셀렉트 + */ + selectFeature: function (feature, auto) { + let me = this; + me.selectedFeatures.clear(); + me.selectedFeatures.push(feature); + me.selectInteraction.dispatchEvent({ + type: 'select', + selected: me.selectedFeatures, + deselected: [], + auto: auto, + }); + }, +}; + +export default GisOlSelect; diff --git a/packages/common/business_components/src/ui/map/lib/gis.style.js b/packages/common/business_components/src/ui/map/lib/gis.style.js new file mode 100644 index 000000000..df9be2daa --- /dev/null +++ b/packages/common/business_components/src/ui/map/lib/gis.style.js @@ -0,0 +1,402 @@ +import GisApp from './gis.core.js'; +import Style from 'ol/style/Style.js'; +import Fill from 'ol/style/Fill.js'; +import Icon from 'ol/style/Icon.js'; +import Circle from 'ol/style/Circle.js'; +import Stroke from 'ol/style/Stroke.js'; +import Text from 'ol/style/Text.js'; +import Point from 'ol/geom/Point.js'; +import RegularShape from 'ol/style/RegularShape.js'; +import Overlay from 'ol/Overlay'; +import _ from 'lodash'; +//import DOMPurify from 'dompurify'; +import { createPortal } from 'react-dom'; +import ReactDOM from 'react-dom/client'; +import React from 'react'; + +const GisOlStyle = function () { + this.initialize(); +}; + +GisOlStyle.prototype = { + overlays: {}, + hiddenOverlays: {}, + initialize: function () { + this.layericonPath = GisApp.CONTEXT_LAYER_PATH; + }, + getRGBAToString: function (r, g, b, a) { + let rgba = 'rgba({r}, {g}, {b}, {a})'; + return rgba.replace('{r}', r).replace('{g}', g).replace('{b}', b).replace('{a}', a); + }, + getFillColor: function (layer) { + let r = layer.get('fillColorR'); + let g = layer.get('fillColorG'); + let b = layer.get('fillColorB'); + let a = layer.get('fillColorA'); + return this.getRGBAToString(r, g, b, a); + }, + getFontLineColor: function (layer) { + let r = layer.get('fontOutlineColorR'); + let g = layer.get('fontOutlineColorG'); + let b = layer.get('fontOutlineColorB'); + let a = layer.get('fontOutlineColorA'); + return this.getRGBAToString(r, g, b, a); + }, + getFontFillColor: function (layer) { + let r = layer.get('fontColorR'); + let g = layer.get('fontColorG'); + let b = layer.get('fontColorB'); + let a = layer.get('fontColorA'); + return this.getRGBAToString(r, g, b, a); + }, + point: function (layer, options, feature, resolution) { + let symbol = layer.get('iconNm'); + let maticKey = layer.get('maticKey'); + let maticVal1 = layer.get('maticVal1'); + let image; + let style = new Style({ + fill: new Fill(), + }); + + let text = this.getText(layer, feature, resolution); + style.setText(text); + + if (symbol) { + let rotation = 0; + if (feature) { + let angDir = feature.get('angDir'); + if (angDir) { + rotation = (angDir * Math.PI) / 180; + } + } + image = new Icon({ + crossOrigin: 'anonymous', + scale: 1.2, + src: this.layericonPath + symbol, + rotation: rotation, + }); + } else { + image = new Circle({ + fill: new Fill({ + color: '#4848B4', + }), + radius: 5, + }); + } + + const overlayHtml = feature.get('html'); + if (overlayHtml) { + this.setOverlay(layer, feature, overlayHtml); + } + + let baseResolution = 20; + let minScale = 0.3; + let maxScale = 1.5; + let scale = baseResolution / resolution > maxScale ? maxScale : baseResolution / resolution; + scale = Math.max(minScale, Math.min(maxScale, scale)); + image.setScale(scale); + style.setImage(image); + _.extend(style, options); + return style; + }, + line: function (layer, options, feature, resolution) { + let linewidth = layer.get('lnWdth'); + let lineColor = layer.get('lnColor'); + let style = new Style({ + stroke: new Stroke({ + color: lineColor, + width: linewidth, + }), + text: new Text(), + }); + + if (GisApp.Module.toolbar && GisApp.Module.toolbar.defaults.blockDiagramVisible) { + let blockDiagramLayerId = GisApp.Module.toolbar.getBlockDiagramLayerId(layer.get('lyrId')); + if (blockDiagramLayerId) { + style = this.getArrowStyle(feature, lineColor, linewidth); + } + } + return style; + }, + poligon: function (layer, options, feature, resolution) { + const style = new Style(); + const color = layer.get('polgnColor'); + const fill = new Fill({ + color, + }); + style.setFill(fill); + _.extend(style, options); + return style; + }, + lineLabelPoligon: function (layer, options, feature, resolution) { + let style = new Style(); + const polgnColor = layer.get('polgnColor'); + let fill = new Fill({ + color: polgnColor, + }); + let lnWdth = layer.get('lnWdth'); + let lineColor = layer.get('lnColor'); + let lineDash = layer.get('lineDash'); + let stroke = new Stroke({ + color: lineColor || '#000000', + width: lnWdth, + lineDash: lineDash ? [10, 5] : null, + }); + let text = this.getText(layer, feature, resolution); + if (text) { + style.setText(text); + } + const overlayHtml = feature.get('html'); + if (overlayHtml) { + this.setOverlay(layer, feature, overlayHtml); + } + style.setFill(fill); + style.setStroke(stroke); + _.extend(style, options); + return style; + }, + imagePoligon: function (layer, options, feature, resolution) { + let style = new Style(); + let symbol = layer.get('iconNm'); + let retGeom = feature.getGeometry().getInteriorPoint(); + let image = new Icon({ + crossOrigin: 'anonymous', + imgSize: [20, 20], + src: this.layericonPath + symbol, + }); + + let scale = 0.5 / resolution > 1 ? 1 : 0.5 / resolution; + image.setScale(1); + style.setGeometry(retGeom); + style.setImage(image); + + _.extend(style, options); + return style; + }, + setOverlay: function (layer, feature, overlayHtml) { + const layerFeature = layer.getSource().getFeatures()[0]; + const layerCoordinate = layerFeature ? layerFeature.getGeometry().getCoordinates() : null; + + const properties = feature.getProperties(); + const overLayId = feature?.get('overLayId'); + const overLayMinZoom = layer.get('overLayMinZoom') || '12'; + const overLayOffset = layer?.get('overLayOffset'); + let findoOverlay = this.overlays[overLayId]; + if (findoOverlay) { + const zoom = GisApp.Module.core.map.getView().getZoom(); + if (Number(overLayMinZoom) < zoom) { + findoOverlay.options.element.style.display = 'block'; + } else { + findoOverlay.options.element.style.display = 'none'; + } + return findoOverlay; + } + let overlayContainer = document.createElement('div'); + document.body.appendChild(overlayContainer); + + if (typeof overlayHtml === 'string') { + //const sanitizedHtml = DOMPurify.sanitize(overlayHtml); + overlayContainer.innerHTML = sanitizedHtml; + } + // React 컴포넌트일 경우 createPortal() 사용 + else if (React.isValidElement(overlayHtml)) { + ReactDOM.createRoot(overlayContainer).render(createPortal(overlayHtml, overlayContainer)); + } + + // 오버레이 생성 + let overlay = new Overlay({ + element: overlayContainer, + positioning: 'bottom-center', + stopEvent: false, + offset: overLayOffset ? overLayOffset : [0, 0], // 오프셋 설정 (위치 조정) + }); + this.overlays[overLayId] = overlay; + + // feature의 좌표 가져오기 + let geometry = feature.getGeometry(); + let coordinate; + // Point인 경우 + if (geometry.getType() === 'Point') { + coordinate = geometry.getCoordinates(); + } + // LineString 또는 MultiLineString인 경우 + else if (geometry.getType() === 'LineString' || geometry.getType() === 'MultiLineString') { + coordinate = geometry.getFlatMidpoint(); // 선의 중간 좌표를 가져옴 + } + // Polygon 또는 MultiPolygon인 경우 + else if (geometry.getType() === 'Polygon' || geometry.getType() === 'MultiPolygon') { + coordinate = geometry.getExtent(); + const center = [(coordinate[0] + coordinate[2]) / 2, (coordinate[1] + coordinate[3]) / 2]; + coordinate = center; + } else { + console.error('Unsupported geometry type: ' + geometry.getType()); + return; + } + overlay.setPosition(coordinate); + GisApp.Module.core.map.addOverlay(overlay); + const zoom = GisApp.Module.core.map.getView().getZoom(); + if (Number(overLayMinZoom) < zoom) { + overlay.options.element.style.display = 'block'; + } else { + overlay.options.element.style.display = 'none'; + } + }, + label: function (layer, options, feature, resolution) { + let textBaseline = layer.get('textBaseline') || 'bottom'; + let textAlign = layer.get('textAlign') || 'center'; + let fontExtnColor = layer.get('fontExtnColor'); + let fontExtnWdth = Number(layer.get('fontExtnWdth') || '3.5'); + let fontIntnColor = layer.get('fontIntnColor'); + let style = new Style(); + let prop = feature.getProperties(); + let label = prop[layer.get('lblAtrbNm')]; + + let text = new Text({ + stroke: new Stroke({ + width: fontExtnWdth, + color: fontExtnColor, + }), + fill: new Fill({ + color: fontIntnColor, + }), + font: layer.get('font'), + textBaseline: textBaseline, + textAlign: textAlign, + text: label, + }); + style.setStroke(null); + style.setFill(null); + style.setText(text); + _.extend(style, options); + + return style; + }, + getText: function (layer, feature, resolution) { + let textBaseline = layer.get('textBaseline') || 'middle'; + let textAlign = layer.get('textAlign') || 'center'; + let fontExtnColor = layer.get('fontExtnColor'); + let fontExtnWdth = Number(layer.get('fontExtnWdth') || '1'); + let fontIntnColor = layer.get('fontIntnColor'); + let minViewSize = layer.get('minViewSize'); + if (feature == null) { + return; + } + let prop = feature.getProperties(); + let label = prop[layer.get('lblAtrbNm')]; + let scaleFactor = 1 / resolution; // 해상도가 낮아질수록 글자 크기 증가 + const zoom = GisApp.Module.core.map.getView().getZoom(); + if (zoom < minViewSize - 3) { + label = ''; + } + let text = new Text({ + stroke: new Stroke({ + color: '#FFFFFF', // 흰색 테두리 + width: fontExtnWdth, + }), + fill: new Fill({ + color: fontIntnColor, + width: fontExtnWdth, + }), + font: `${layer.get('fontNm')}`, // 동적으로 폰트 크기 적용 + textBaseline: textBaseline, + textAlign: textAlign, + overflow: true, + text: label, + offsetY: 20, + }); + + return text; + }, + getArrowStyle: function (feature, lineColor, linewidth) { + let styles = [ + new Style({ + stroke: new Stroke({ + color: lineColor, + width: linewidth, + }), + }), + ]; + let geomLienString = GisApp.Module.core.getGeomLineOfFeature(feature); + if (geomLienString) { + let startCoord = geomLienString.getFirstCoordinate(); + let endCoord = geomLienString.getLastCoordinate(); + + let dx = endCoord[0] - startCoord[0]; + let dy = endCoord[1] - startCoord[1]; + let rotation = Math.atan2(dy, dx); + + let centerCoord = GisApp.Module.core.getCenterOfLineFeature(feature); + styles.push( + new Style({ + geometry: new Point(centerCoord), + image: new RegularShape({ + fill: new Fill({ color: lineColor }), + points: 3, + radius: 6, + rotation: -rotation, + angle: Math.PI / 2, + }), + }) + ); + } + return styles; + }, + //레이어 스타일 반환 + getLayerStyle: function (layer, options) { + let gobjTy = layer.get('gobjTy'); + if (!gobjTy) return; + let style = this[gobjTy](layer, options); + return style; + }, + getLayerStyleFunction: function (layer, options) { + let gobjTy = layer.get('gobjTy'); + let styleFunction = function (feature, resolution) { + return this[gobjTy](layer, options, feature, resolution); + }.bind(this); + return styleFunction; + }, + adjustOverlayPosition: function (overlay, coordinate) { + const overlays = this.overlays; + let adjustedCoordinate = [...coordinate]; // 초기 좌표 설정 + const minDistance = 100000; // 최소 거리 (필요시 조정) + let offset = overlay.getOffset() || [0, 0]; + + let closestOverlay = null; + let closestDistance = Infinity; + + // 모든 오버레이의 위치를 비교하여 가장 가까운 오버레이 찾기 + Object.values(overlays).forEach(existingOverlay => { + if (existingOverlay) { + const existingCoordinate = existingOverlay.getPosition(); + const existingOffset = existingOverlay.getOffset() || [0, 0]; + + // 현재 오버레이의 좌표 가져오기 + const overlayCoordinate = overlay.getPosition(); + if (!overlayCoordinate || !existingCoordinate) return; + + // 거리 계산 (유클리드 거리) + const distance = Math.sqrt(Math.pow(overlayCoordinate[0] - existingCoordinate[0], 2) + Math.pow(overlayCoordinate[1] - existingCoordinate[1], 2)); + + // 가장 가까운 오버레이 업데이트 + if (distance > 0 && distance < closestDistance) { + closestDistance = distance; + closestOverlay = existingOverlay; + } else { + offset = [50, 50]; + } + } + }); + + // 가장 가까운 오버레이가 있으면 offset 조정 + if (closestOverlay && closestDistance < minDistance) { + const closestOffset = closestOverlay.getOffset() || [0, 0]; + // X, Y 좌표를 기존 offset 값의 반대로 설정 + offset = [-closestOffset[0], -closestOffset[1]]; + } + + // 최종 offset 적용 + overlay.setOffset(offset); + }, +}; + +export default GisOlStyle; diff --git a/packages/common/business_components/src/ui/map/lib/images/marker/marker-icon-boon.png b/packages/common/business_components/src/ui/map/lib/images/marker/marker-icon-boon.png new file mode 100644 index 0000000000000000000000000000000000000000..f65ce99f2fa2ad3f1b1718d40c99823d4191f6b7 GIT binary patch literal 4504 zcmd^D3vd(185U58V7HJ;S{u{M zw9}btq|<8m+kf}}_xr!y)sl*7lOD*<&33t550p+0R65`2Gc;=udajSiOVQW;#^hSd zLja^e-CQ5qP17tk}J+ZKX&@NX&Vaxzh1GKRatWzU?_ow^Y z-Iyx--PLS4QErsLdUbM(39DMB1*Mh-Ns!%z3E=7i0!#uP=@ z8v_Oc65WC2<#&gM!)df-SHdpedNgbWn+@o#gq9vPC5Yg8sX1Bpghu2}GBEehc|s%d zE8Shyw5Vm9z}C&4jdTNKxM*}+j*L-J0|L@%?~Hog)~$NIm(Zn~GpyUH(n~~~mJBG2 zsl7m*mLyb`L`65l07Xg-gF5InB6Us#4Y3^YRt7c*02}(<4kK}r!YL|92qMdf6g3tV z2qFpAWmRduCuoTYk;R^%j8CN4?pEVa-3;owmdcybu4Ta}pNGI6t5zej-eir5Po%tD zER9$;h)A$B;CCZGJgO>-yv(x{%ZKm~AQ_w_7zXDf~sN1}w|(HcVYtM8qW|OI@)Lt88G} zQKQ1t6;(s)Rbi?TI}?(OW>qxQOF-QiGAkkza#Vtd^$De_KtiLbArqL*7|D8^74Hf~ ziLU8pxh|s->F)KVB_-*pOaTUnAhAP8By0qUiiiNR8*>;dq5z>_1II(Zn@m>LI0>yq z6O}YlNA&WN&NB(9?F-P=J~N^sa#L>1VZ9iiMitU{G-Dsj(rmK6LXAPKCZM8~x8hS_ zGg@l9weY;7peS){)z)BAj*B!qS<+NT6h#e0>JR~O87d&E+3xZ26)EsKN~@^|8!sig zdAk`yltm;CKvQjm@j)3PrOtjq{M=@Q}c;I4?i~7dV#YC_zvF!KAF|U!B&8>6pFJ+KXb72*PC5 zLh9R`jB6GAZdZik;w}Oy!4M0eSUFQeir-_PIGJQ&i1Oha%L=$cFajQ8DTuQ&A@hVp z_$V4>Y@&ZtJw!~*)VmC2O28~#v73Mii|P=4Q@L_CbxL%T>Jcv>I!}1rj-v@SBu7rU zBk7SwXvR|{(a8WNK*tDZqWo7JN&v&qR4JY`-WZ-vN6gkUni?Z=axYFpdLOmVAd;j+ zDo8GIo@F5pD8`3}2vj0DC~!O{3lf2{?CwG2Q}X`*8bpPpl@LHX5k&w2=Qsx7JS{<7 z;T0dt2{K8r|3g9Sn-lk_Ku%)zlvpfCC+y<$714jHByaROsJiTzofAY*F5S-o4^&-ELb*_v2OQ3g;Blmq+v?ef>n+qu*_! z%VpK6cecA+{nwNRih}&|xvTxlX3l)*?WgHWPrb3QGyl1V$#vR6C>7P?Wo6s9KXy5& zeY9iw=G^RJZBuR5A7SvuDJg1mUgGHwxQ@ zFX>5*zCE{})bM5c#v8Q{-8nI4=H8!#dgJt8*%6 z`0gyh`k();x@^I|jsYKFLq<+K|H6#(KYF4t=aH7|wb=nHd+4HTtAt;otN*o9Z`Q@B zbzeJC-&wumlz5;j>*~I?QF!Mb>dx{Rhc~Vs{^+0a)_2?9Ke&wQH*&>n&!ho4eEXIU zI~s>C+@JO4#rul}&bs=3)3DLaE7!d`zrA37+aH5R9vT0=*-Hi$y?$Tg4@(Do8@@gG z^G*2$Tl1cI<7Da3+-J6Zy!7SwF1*;ddd9CmAJMwt$|oQGpy6=GaBglt{x=6=TZk}d zHb!*gJRPw-#((HPCpSG_k?ge$H%JCC+HS%pbM>HtyQl?_4hXasA5tW4Z6` zXe--yai{C|hYywg`JVD-2$t}9cgp8aOkC)0CB7Os!pEL=BYQl z&(k_juN+(W*8@3b=l;C@7YmjguU&i=YZJCKueK)-xjkobVet0#y{-=mS5TAQ9(CnH Rv-96c>4a&4SBmE?`UjOS7Rvwt literal 0 HcmV?d00001 diff --git a/packages/common/business_components/src/ui/map/lib/images/marker/marker-icon-hab.png b/packages/common/business_components/src/ui/map/lib/images/marker/marker-icon-hab.png new file mode 100644 index 0000000000000000000000000000000000000000..2ef70877e542f1198840ae841158dd62d2f583c1 GIT binary patch literal 4633 zcmd^D32YSC8D6Lb1_E))5mX?aEQou&bM742_*!hQ!Nl06<_gUmZ|o_vJIl=2UKCujHW`J5eF2DeIFeI?0YRDrEJOq)sz1ef`(V8jQRNh8 zF`b9y1u{XYnp0(f!m7zdQq>%ZlbxyKk>nr`1NeX?AVHtzH~C=`z%nE*a$^w!BXAeS!9Ntkc#`2s7Kyx^a5_U) z_ySK>WHR_G#aU`u0p8`RsHjM)Ad_^X#D#Ml3_!RD0)+_Ftn^z#5cQiwqY*s7lngas zsk$GrBMPEkW~DgcQbRe&QY>nq%+NwHWyu9J-~)ckbm2+3omMzsUmyndn-NYSyRM)R zfIzG*FfZ@fP@gY`Hmw5Cnp=l~&7#Txa1{VkFEbaFr5f7FEDsQIm|0I zT-CHP(=r50H#!c|2GB0WK%4DoH!JLbKr)tHpj5YXvsCYdx>$F+=$5K3SelQp+qq{-lI!pw!-c4 z;UboG3C4)+2Tw49n+2qdvbZ3koSPC*K>-}9$Py+HA|Z&39F6vdp+X-Kw6;;p%3wI! zLtrdNP#l?&<;lQt4yV#tn!`LKPGf8)8x2qZ{IY7-Xr?BZW{NXl=(@r~EkRpq<$^D? z1j8x|{R*CXf#zc1fvqc=_Gr{ zTdBy@HQmV5WjG_*_PRGSGq#jmAt3mn*+C>UHVlVNC;-Titymrs1j!cc3{#wVSirq9#(vj==Y7l7CJSyCI zGqe=CUC;D3JuGWGC@dUHwKNd1<8;l6v^3Q=MP3v9B~XB<3>2YEvz+5YJCf|OomNvJ zHq;6abF~QuB@0FD0ft%*g93sfz}pC5!1`BgNeF>}rb?lraRt#>IU<(cuB+THN6z9Hr1M#yOCpX- zxI)1*fTd}G3IydwMGUrZ25=0^$ee`1Dhsc;GZNXTz5lFQAG1=)Dp`knIos|5aIaP&;;cwcaFk zTE24FyQ8Jhws>Qejr>O$fA{&GyGb-hafG5!C=f9gbt@EsiZ~&mG%GM9!vVlhA!GkO zY|?X+d9ho$&RwY8t?M&f=)Y84=rj)>QLcYKy+VC$p0=Rxhc3ZKIJ+5pc!WPF_VUl? zHhj70tABFunUBq5w?-Uv#CJKmkJ>!{^5J=|U;e58mV3+B|8=f*zqo5lpGgyXrXhD4 z7E-ytNh}_4?f5_LI;YfbnpV8aeXin0-N`MiyJG6(w-YncdUUz;bf)TVQEzUb{hD4d z_E?P|`94_K*!@=G)cU?zkCwb&KQiInVG}D{d+P37{nEGl(cq~!UdkGEeEx~Me@@mf zTo@jAs%6UGuYHiwQUU6kcNdM^v1QC4B<{*$>B9{#&uv&!`~JH(XAU}4^?>-=&6IBG zGw_Y!TPI$-aPh&02?MU?)|{?Rp4alx(AxQ*Zd&8=j=FT|e5y9Mc+iPc8~5)&uw>uE zjr}rakM7?q{`Kn*yG`1?K%R6z?)ovl>Zf&2AN-a{i{ErZp51kJ&T?}#>)uf_f6U{A zSK`K}O>V5X`$bsJ;Np@-apWsx^ckO*)!jq zEsI0W23MNnryTvtuLsZ1=-w3)@xw2wO4cjmDy99#6K6rsnte47yFE^5Y#i9Uw`u(0 z1?O&(Gpie}FZ+7WPmc5NHD1|!=9RA2)65%ng)3Jd*)V#<*4nfCXYKrS*?Lh!z12e9 zP%rt1U*K6|Mn4#^jT-l3?n%zlgk`Ia6wfKY-h1iwk}3-a2o6YDRXURNHT{ z@cERw{koQJ|K?G)y8XUcm4%wK3Kf~ literal 0 HcmV?d00001 diff --git a/packages/common/business_components/src/ui/map/lib/images/marker/marker-icon.png b/packages/common/business_components/src/ui/map/lib/images/marker/marker-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..950edf24677ded147df13b26f91baa2b0fa70513 GIT binary patch literal 1466 zcmV;r1x5OaP)P001cn1^@s6z>|W`000GnNklGNuHDcIX17Zdjl&3`L?0sTjIws<{((Dh&g-s0<@jYQyl?D*X^?%13;ml^gy> ziMrY_^1WI=(g@LMizu=zCoA>C`6|QEq1eV92k*7m>G65*&@&6)aC&e}G zI)pf-Za|N`DT&Cn1J|o`19mumxW~hiKiKyc-P`S@q)rdTo84@QI@;0yXrG%9uhI>A zG5QHb6s4=<6xy{1 z@NMxEkryp{LS44%z$3lP^cX!9+2-;CTt3wM4(k*#C{aiIiLuB>jJj;KPhPzIC00bL zU3a#;aJld94lCW=`4&aAy8M7PY=HQ>O%$YEP4c4UY#CRxfgbE~(|uiI=YS8q;O9y6 zmIkXzR`}p7ti|PrM3a}WMnR=3NVnWdAAR>b9X@)DKL6=YsvmH%?I24wdq?Gh54_;# z$?_LvgjEdspdQlft#4CQ z`2Zyvy?*)N1Ftw|{_hakhG9WjS?Az@I@+IZ8JbWewR!XUK4&6346+d#~gsE0SY(LX8&JfY>Aj)RxGy96nwhs2rv zzW6pTnMpFkDSkT*a*6Dx|u@ds6ISVn0@^RmIsKZ5Y;bazbc;tTSq(kg(=481ODrPyNB6n z-$+U}(w$m6U6H$w17Bw+wDaFIe~GvNMYvnw31MpY0eQKT9l>SU``8k7w4)z!GZKMI z#_cEKq7k~i%nlK@6c-K?+R;B#5$?T#YpKD`t_4bAs^#E+@5QW$@OX3*`;(#{U^d-vY)&xEE>n5lYl&T?Am{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH z)bz|eTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1n}DR9FEG$W1Lt zRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8ZIvL7itr6kaLzAERWQ{v(@i!swoov))H5`- zv@kN!Q7|$vG}AY*)HgKIH88X?u(UETRDc2{plwAdX;wilZcw{`JX@uVl9B=|ef{$C za=mh6z5JqdeM3u2OML?)eIp}XpbFjM%Dj@q3f;V7Wta&rsl~}fnFS@8`FRQ;6BCp2 zOG|8(fG&l2A-BNS7jAG~F*KlnL8f1kSfFpHXP}>(3-T9Ob#X~hD#969RTqa;7NqJ2 zr55Lx79|7YBTX5m85nl>EdnV7y2i@CC=(bdi8(I$$)&lec_p4Mwn{)5y_C!ps}w`? zM2n=P6kVfKLsQ)}1Cume%QO=MU86)xLo>rUF`Z*UGslHL)bWC?r2W2bKx~ zGV)9Ei!<^I6r7zwv2L!Q5uTZsl3!k|35q6&uU%4$GRsm^+=}vZ6~N(am5Id-#Q7hh zKZV@z(+4_AACy>-5)VuWm?A+;cvb*%;F&2k5150BfLTRg#qQ_8Z1&#M#WAGf)|;u0 zTulxlZS#|^d+c^zyGVJ*n$WNi^%dR~9Xe-IFD~N?Xz5;|9l|wN`Ir2jgbY(=y{I1# zq$TJ6|Gx6fdeOGTxgBB)nAat6%v%!9JE1|$qIqSrB9rL_R^ts!$-akGE3|L5@ZMg) z&bKLp|J{=KeT(jHe8_v|Da-w*DK{3b+IvHSX{qtN{sYd!aoL^I`fJTJo;VlqI^=!W zu`|QNhHJLhx>FmB{)jt^A2Et&KJW0pvrXk#3}1VQ(uwK3a?&l%OH}x>gUxcL$;RLG zXOTU4WPx+&Y)hqQ+|uWa`xHK0GU0hLHFy91hJFTShV5VNS(87zZ37iCp00i_>zopr E0D||LWdHyG literal 0 HcmV?d00001 diff --git a/packages/common/business_components/src/ui/map/lib/images/toolbar/btn_cont_area_on.png b/packages/common/business_components/src/ui/map/lib/images/toolbar/btn_cont_area_on.png new file mode 100644 index 0000000000000000000000000000000000000000..0129ff1bd3273c695e41f32a12126067b2db60a3 GIT binary patch literal 1184 zcmbVMTSyd97@i8kq>UbYD4`n0hpuy7*PWT%OlQ=VT9tJpp@L>-&g!HyXPh~@qg_Zb zRL~xx%R>bgk#9l|Mj&BgbR{B*uH-||O9l00f-jv>*LskM24>DV|M|ZE{!f2hO?4>0 zFrOfZP<)@7#A`wD=B>ux!TwDlylh034X7SwP*!sRQEtFAAmf(S2$DcEI$EEAQi533 zZl)SgL*js}LyOS@4C7l4W)nndneS+NGeBe-G@5pd`aU*Jk){!&4n-1N!cjnzxv$d& z^_?{-y|Y=D461AoS?bGJfd!C8`c{kW$$pHQ*DK?FAZ96Y9)g-<)PhqDi8@k&E+8XJ z39a*Ck&H?VACW|%co!*fdyv#{5$CHZ>g{`?pMoy|#i?;A7Ml~Vi$Sj-9 zW|?f5fo>zqOOnKL0xJkKM$le|jWnOOy`r236?nR9I>>}J8EDkfunom1?CC-XmXk;< zDYm`EMB$XNzUHtz!?BhX#5IrhP!jxhV_CG9>Tm#?1RiX2bzF~3QI3pr_jf}95PKun zx+X4))}lha%>p)xt1$}SFotQ!1|QYLblRW=z(?o|SDc}xOfg3bn#7mzx|og%B{@CI z@fERBRfMPz;khu+S4yH-RjyWvVO5b7EUCzGX%@#P%uhY1hn~NB*S&k};85RN zt$c8}H&nKkP4v90wRVKx9KT!0OmL<5J{+lKdnOyxC$Eh?{xW)H{K4g~SLgDk&dv3$ u`Mm$x1!ti3WA*0SlUK)1OikWdxt3_3o_RE}bM{j3&xlvns3R4}x_<#K!jWYF literal 0 HcmV?d00001 diff --git a/packages/common/business_components/src/ui/map/lib/images/toolbar/btn_cont_next.png b/packages/common/business_components/src/ui/map/lib/images/toolbar/btn_cont_next.png new file mode 100644 index 0000000000000000000000000000000000000000..075111dcfaf770c5efd87bc215f87dfd915ee454 GIT binary patch literal 1256 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE;=WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2v2c=CaI?h>{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH z)bz|eTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1n}DR9FEG$W1Lt zRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8ZIvL7itr6kaLzAERWQ{v(@i!swoov))H5`- zv@kN!Q7|$vG}AY*)HgKIH88X?u(UETRDc2{plwAdX;wilZcw{`JX@uVl9B=|ef{$C za=mh6z5JqdeM3u2OML?)eIp}XpbFjM%Dj@q3f;V7Wta&rsl~}fnFS@8`FRQ;6BCp2 zOG|8(fG&l2A-BNS7jAG~F*KlnL8f1kSfFpHXP}>(3-T9Ob#X~hD#969RTqa;7NqJ2 zr55Lx79|7YBTX5m85nl>EdnV7y2i@CC=(bdi8(I$$)&lec_p4Mwn{)5y_C!ps}w`? zM2n=P6kVfKLsQ)}1Cume%QO=MU86)xLo>rUF}a*UGslHL)bWC?r2W2bKx~ zGV)9Ei!<^I6r7zwv2L!Q5uTZsl3!k|35q6&uU%4$GRsm^+=}vZ6~N(am5Id-#Q7hh zKZV@z(+4_AACy>-5)VuWm?A+;cvb*%;F&2k5150BfLY~bPEP{^10#p0i(^Q|tuN3ZC1ei^{7`6A@V*}d-{Sa*ot zQhNFSP~oK;Et8q;naocf-#e#T`1bc&?Q>ppq`uhXpMA>vwpf4nx@wbWEH=OU#M(Ao zHC{67$3fdkE0Wi9Zb@m2{-W~5$|vK|{NJ@TColQFn0m%$!yJLt6^D4eW;}M1&dAd7 z-gksO=$3=`wm{KHor%}jX3bjI!y{J6A}95drPL-XA=K=zI@c|S%TqYRP9!eoG*N%* zY87+D@AA`Vo8&I8eWt%RbhGbS)E0mC;^%^PK`D-}4|!%iT-?IDsAVqqnZ?Qb76u;j gxmoz1=^u*(!|k7D<}HQZw?Ji&r>mdKI;Vst0Kn9*5&!@I literal 0 HcmV?d00001 diff --git a/packages/common/business_components/src/ui/map/lib/images/toolbar/btn_cont_next_on.png b/packages/common/business_components/src/ui/map/lib/images/toolbar/btn_cont_next_on.png new file mode 100644 index 0000000000000000000000000000000000000000..4fdbe3a00fb71d5b25f39c13621271dfedc57ea6 GIT binary patch literal 1204 zcmbVMTWB0r7@l-VT_bB3ZBRo)j}x>C&TVg*8M4i0ce3pUCt0@(38I*}oZXDc%o%4+ zvXeY%YcYA~OH)cKD2N~kA&5TKAf{VrsSgSZifECDf=?1bQ7ptW$!_XHDB{4(Ip;s$ z_uv0nDUY9u_4M^n6csC-Rw`sY8otrPa?GiRc4GjmbX3RnibXd2XEdA@X&uCzoS$Z<9 z@~T^aGuG)P51v^XuNq6UhGf#iC&5r469qQJ8VKw;$CraFy{lIy`%ui$U>AaCv-F-* zQ)(F$kOx7U%`k?L6v3dx3Ta79q@Du_UdV8~#0e>e7i3%N^nppG9np{zeZCm7& zrDrg9WsYk!8f+uUBCpN~k|c3_f=eVAf?)hb2WtW2_yZjc3iJ)na@}1 z@pLZ)+f~(l#g5-j6iFEuXf7wPJZIZsT)Su=SKvK24n+IaMHg}v=%abhAoZvXbjT!k z_cs&*i8u0uXOW_4a|$x%ZRp^VlBLNFYg(pk3WJ)c>n4+cLYk@ZsTw2IQaqE;Bq1Xh zqCS|&bo3m=FNo5Jl1h)J1wJVVqmn2VN0g$NR0>joNb((S$?>t~7_ej8BDULH<-T0G z;6V)|uZqxIrwht62qS+6xu8%8t3C*xnY0`eHT-A8GVMjJK+jr$X3;}7*v+$S9pJ-% zi+_)A{@?s@#3?RpmVY%*M?^X@-0qJ8IqVM;bjSpGWK>T4v2mP?S*xUsRD*BzyE{9> zk#yIi4{!gS`!0WZ1w5vI{{7CA(}&{8t@63vA6Mtj_sI_}U;R)6(aC)5<^0-v&2Qd* zpt#Qgh3mQac=y(D?$g+^6hcl#wh_2pF literal 0 HcmV?d00001 diff --git a/packages/common/business_components/src/ui/map/lib/images/toolbar/btn_cont_prev.png b/packages/common/business_components/src/ui/map/lib/images/toolbar/btn_cont_prev.png new file mode 100644 index 0000000000000000000000000000000000000000..7e3fae7d2d13bf4010b8052065c1d8021ce24c64 GIT binary patch literal 1265 zcmbVMTWs4@7(PwLQaZAQsuFB4>BxP6YE68}rMB0Qi`|kiQmQntAdNA{K50zr%WSuC z`;<)6lxpe=Hwl5bOq=#L7}`VCMna&z0Ai|y1f$~tRpMd1pi1z-P35?43J=wUuwFjE_AX>^as000`!DViB)>-rIc;e-{^y2k~;$87VsxM%AfH76KW?s34fv zq)Ajnk}`Mxb2JQqe^xD(opRw>UN*FdBeicXLeN7At{Me`KLQ#9Ot2<**Ls(eu# z-Sve}NuuUBCQp*}dOcE)Mht6`q&bcwDTZX2FxCj$bGjqBVcqWUSP+pdTdL`(h7LW8 zQpK2Yk_2YD6M|+I3VViidpA)yWuz;aBpsnhP4nW~*0!A@`iI88+IDHqL}U@!#*8K7 zdQ|&6V4S=AJMt7U8~!;<#YK^(MMIv^knZHgB!O=timLDmJtVP}iV|iJ9S>KjST)R5 zV^o-tI66VgY-NZ^bnNVh7uYBpXV_SrrlK@G!m;dVMjU0MqQD7QlI>vgy6s51j5@wm z>|0(+09)wjll6CcdAFZTK~pwxaOGto?a h<9luWd5~^&fmhyVmcKrA@(b@Llph%rZ)DG1_#0wKobmtw literal 0 HcmV?d00001 diff --git a/packages/common/business_components/src/ui/map/lib/images/toolbar/btn_cont_prev_on.png b/packages/common/business_components/src/ui/map/lib/images/toolbar/btn_cont_prev_on.png new file mode 100644 index 0000000000000000000000000000000000000000..fb2d55cfd501dd6992eaeb156d36d47badd017a9 GIT binary patch literal 1223 zcmbVM?`za%9FLx8X+1VpH?6wvX=H4Q`FYJ<67K9>lXeEZdR&ir@ASFkxn8c#50lhO zI|r*2SH*!i26Jq%u@^%I+cEa8ibD@K+5P~LF<6HPLlIw$6%p%`w%6@Nk+DGXJkR&} ze7?WGIa?TcE8e-YlOTw=c2F(ibzAgyY{uUY&b}JQOHVLV4o017(10Eya)whuK(pW& zDk5l1ow$Y41Q9!FmdZgne^}NXi-r+~4lNh62_iiZx=*pPz1!@$VWUA7X?nJjy`E2JJ8e&iEn7bG-QKIL9tRXC?0VFRb~6DlvM3!DIQ8( zlGDXXichxntjAZxgedT$C~$0oDb_qx9f@tEDy)LbdNQ+cwq zG!PRubYFUWXJ&Ep+dUV$v>(oA({~3peSdsZIR}5qrnlG2F?zDK^XA6Z&!3<9==ae> z=ix;5O7Gm#h7-xYzh<}ov2o!+_Q{sH59c1m4`{vMw-;L1X2grPn>SzYBU(ScxA?}3 zTP|FD$<;n37QW5i&sDy=eyO=M*q!ORrS-m_Kb1YT894x+uPXUd?(St5tgh4(S}CUZw8N_eg*~&k`w>{ literal 0 HcmV?d00001 diff --git a/packages/common/business_components/src/ui/map/lib/images/toolbar/btn_cont_print.png b/packages/common/business_components/src/ui/map/lib/images/toolbar/btn_cont_print.png new file mode 100644 index 0000000000000000000000000000000000000000..82596b83dde3b544f18fe65638d86932645748fb GIT binary patch literal 1318 zcmbVMZD<>19KWV*)}|@RUT7P2_1O(uUwXN_yft?uHtAi{hBa-?g6k*kMe!9OKhyJ!HLYcJzJm?BPzdc+8P$^SG8X%YqKExTIwv zNGd`erlBA$%zpzT7}k7J&PAW~tG0tK1^s3>!)!B(R9mR=U^Eis9M zEr>ZA#kZZBPE7$$(;*0YLxf2C!(fo{(m^Kd3k(1sMTba=A?W}?(JaNV6b*JB99h$) z9Gm77JGRg%iWf|?$dY8aT=tgzUQN%FG{Z0?UWVqK(W#5t3Og1#XZALsrNiz^+b8slofl1rg%w?b zAeIvcU=oVT=nFSt0K;lV)KuC|$B*%{o^y+ij=PXE5E{b*Jq1IQ2cZolIG}1l{NCpa zI8c=!ev*w-aU%k=>d`S1o*3&-$zy{ur{Fz@L7>1R1374mppYBVEWQxL*X;6W?}$kp ztf|<8L42K5I-UR#-GqR3cM~%0@dF>{rdiI#m%Q?%V3fNDJ8~2e8~(VdqN0dHf-Vo|pk~K}AdYU_imLDm?Gycyq!0|GSt3Ju zGX$6MQUoJ%bT=*gB_GpWv9lFE!uflnz1}cOQy!Y`J}XSTm0*I<^Sf7M5IWkS^m{L6%p!4XS+EH=&(6VP(u@BqEUHs z;c*?qs)(2nP8EKXR?Fp{8n&usH$4Eps4AB0OPz^N4ovL)?%a52)iv$I{xHE`FMr*2 zEA&Wxu_|=1u6VV?fSOl6ynV)13bovLiJO1^{n^FWjM}f7@u^?yK0Pf<^GrKCYkpb% zHk`QAIz2qUn%H&AsFj`uhntGWL-mJhm(q>#;=+>M-s%15#?-E#gWzr#-qms)cf>apDew1Ikfulj9yo)3qMh=mD(P=vOKx+?V0PPhf>6`eM=X5K-<)* z`z_O*p>x}I+^b&h2hTMW%fG*MsU5g$BwzNI?_I^$!K>`#N?`7{fN-{>dG68Kj=819 zw&sslK5HyqnJ8@Axp;Y>_ua|!ACPy>lRHMXFCP-l{ld!|o}T&}$DFMw literal 0 HcmV?d00001 diff --git a/packages/common/business_components/src/ui/map/lib/images/toolbar/btn_cont_ruler.png b/packages/common/business_components/src/ui/map/lib/images/toolbar/btn_cont_ruler.png new file mode 100644 index 0000000000000000000000000000000000000000..501e460a4d0f36061b18320b4e6306d110d79d02 GIT binary patch literal 1353 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE;=WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2v2c=CaI?h>{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH z)bz|eTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1n}DR9FEG$W1Lt zRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8ZIvL7itr6kaLzAERWQ{v(@i!swoov))H5`- zv@kN!Q7|$vG}AY*)HgKIH88X?u(UETRDc2{plwAdX;wilZcw{`JX@uVl9B=|ef{$C za=mh6z5JqdeM3u2OML?)eIp}XpbFjM%Dj@q3f;V7Wta&rsl~}fnFS@8`FRQ;6BCp2 zOG|8(fG&l2A-BNS7jAG~F*KlnL8f1kSfFpHXP}>(3-T9Ob#X~hD#969RTqa;7NqJ2 zr55Lx79|7YBTX5m85nl>EdnV7y2i@CC=(bdi8(I$$)&lec_p4Mwn{)5y_C!ps}w`? zM2n=P6kVfKLsQ)}1Cume%QO=MU86)xLo>rNUix*UGslHL)bWC?r2W2bKx~ zGV)9Ei!<^I6r7zwv2L!Q5uTZsl3!k|35q6&uU%4$GRsm^+=}vZ6~N(am5Id-#Q7hh zKZV@z(+4_AACy>-5)VuWm?A+;cvb*%;F&2k5150BfLZ0vpQ1np2F6TJ7srr_TWhYI z*JeqSIsS30b)C*9_JBE477JGwK0I>P_2l}=la*ZGIu;ffu%C*3o;2Aw{5w13m>iu%`!)67?woe5t5?B&d#byf3bzR#QbymF#J`{P~fVv}zi6i(AV z6XDA37SN%UBVK!hXTwU}t5I%e0#68hGf;odtDKsBrUi^>bP0l+XkKb|K|3 literal 0 HcmV?d00001 diff --git a/packages/common/business_components/src/ui/map/lib/images/toolbar/btn_cont_ruler_on.png b/packages/common/business_components/src/ui/map/lib/images/toolbar/btn_cont_ruler_on.png new file mode 100644 index 0000000000000000000000000000000000000000..676a81bcc59f2fbb3855cc73866dbee66b17836c GIT binary patch literal 1339 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 U{IcV(Kcc@#wzpru)-!zkU$H`pp#T5? literal 0 HcmV?d00001 diff --git a/packages/common/business_components/src/ui/map/lib/images/toolbar/btn_cont_sketch.png b/packages/common/business_components/src/ui/map/lib/images/toolbar/btn_cont_sketch.png new file mode 100644 index 0000000000000000000000000000000000000000..38a5f507f28bf136f1e37f4094f6331d3e13fafb GIT binary patch literal 15103 zcmeI3e^gWF8OL7=vy+OeipqXy(*Uj>Np2DXB)3T{5-6z#F+zn_gv-5e;2x6Pn0q0? z{o>eTTMl)ucszBjt=*2}%+*s*|8SLhSm};-b8~vub;Z@mVAl1h^RRi^QirR1ZxWK1 z5PaL6{`uydf%nul|;zmW|9$Z=IWJ?NUNe!n^o{qF8vk%KPt zgVl{P0QW3WzZu~919<>g3dFhwrNO;{u)HZfq= zPMmmCs}Tjec1wxd;0{*6cCmU#2yWg{Q^)V<;H`pots~nOVNn7}ojl~vCnN@Erv06;#B8|ylEM*K<#%R_V zjI6=R8jPCwN9)K&ku4;6S&y?SUJm_b*S0H4kY$)~IIIsB>!nZ|W3*bWjKRd1Ogf~{ z$=v~ki|7J!ek{p!9w(IfkQh`%DWFmFa;;LQV%KWbLWxiOzWl*Np@1A`hbS@;F31@5 z1}2?J;1ix;XUG>Fn!q#A2mLUh$jE0*>kGC^iX^v7bCgVU&siAFiQAp1op!u_f7;Tr zQrU$N#F3_T%5~jA$atVEb%uCY*@bQ;Ki%CcqBl7?Gcu_?bB-NG#5rtgPs|ow3b7fo zp?hU3LXcCWP@N?C9I;haJB?6NQK7D?GR*^9#DE}$<<&MO)smd=WH#vJ6zD)stIlB2 znTqR-rL3`pEwQdqSET_<5>uw+a7%*d?M|1&!kP_u4osPv1MMGyQ@GES1=nJE1fKOu zAwQ=$L_gOCnP8yJ#v~gtWnxva6_QU1p7PFwUc+F5}wwS#<^cp#VH%B45-MD>LYNy0^s=FngTKIygG5f64 z8$%*G={O&zQAhtpOQcCNt5mfpqxIR1ty{Euqi5M>xP4~pbcaujo=HJ2Btvz_*|pPK zE^&w@&M4Ir-MK8stEZWRS2qL{Y|M<-RIp~j-MfX2l|=fG%V zX0;_N$Mg;AoccPW`ZALNeHf$q8@J-!sn*6jTk-BxYtmUC5EX|hUM-~=bEzk9>{!^0 z9ulCVw4|iC#KxpHr#foI2=p~LMYMlqbyb?seMLQ~9chh?a~ZLYxG^?W*uV4WOvYN# z!vcCvVG<82GbcH*5x(Rgc}HJzVmuu!g3}C6cL`1lN;=*YVV~UH22p3RXI1OS< zaS;*W0*VW#L5wLbA|hNsap5$GF~vnhgbOGxoCYzbxQK{w0mX&WAjT9I5fLt+xNsW8 znBpQL!UYr;PJ_#0N`p10PKDMmP`H3r>X$BtKQ`-uZz5Y;N78)-15A6|N8L9gTnH@ zpO4+$6|-uPblACqUNOvNWxJ^Yi}VAIG@&e-CfLXiK` zhr5G&8(z3%+2dMS^LF9V!LOg`yyyZ?6}U5wZ@8i9nGgEDdDr@%z0=jd@fYWn+{%l) z){XyWY;5fN{F%pH&Bx3CY3<4EA8@_&iA`GF_^U&&4GfQukFVJG$Yn9VXwzq^!MFH3 z886#=|NLBY-_iNY`c7SZ?|m1z4!q#NN60gHN%$5xzRdefx672%GH~qJ$91JIG*z#9 z)_l!!w%1pBqW1C0uUT03Y7u%t@#OaJ9$ob4dad}VC*0ipw~-J2Q{QrL)=1%33SKYx z^?gTQtG%}?Z{+mkg9olGab>m~J!I{;{>QEQ z$-zyp>_2}ox2MMSy65n_yGKVy4{~|ip1$-cxAciaR(``4$H9ZQn>ZGElbZchmK54UG99#u;9T zx^d&V*3B&+KY!i$_SVAgZJq~DzX(RxzcD`b*{4;bXWq;NE7veL7hW5A2rWk7s;qIo Jx~^sC{{X4+y>I{k literal 0 HcmV?d00001 diff --git a/packages/common/business_components/src/ui/map/lib/images/toolbar/btn_cont_sketch_on.png b/packages/common/business_components/src/ui/map/lib/images/toolbar/btn_cont_sketch_on.png new file mode 100644 index 0000000000000000000000000000000000000000..79fb54e0317a2ac148d5c32b46b6cba4c8aecc13 GIT binary patch literal 14933 zcmeI3du&rx9LFyYc?=OBfIL*1vJDs3-u9Muy_c>8SLVj(2HS9*#K7(C*>~E`#GxooL@^MEJR&3@Aj-hS2ok48a3En4AV}u9ZP%W49S015o@Q-- zJLmiT{m%WINAEv(`Ru~yho_87p(tv2ex9Qkevee&Lk7Xm#^p~BhhIYjdF3)i4SPa; z_oFs8jiD%Os#xk$T+UgXAo=vXM{)yw$QOWWin2`$1$dzvC>l4Y6#d!SzxVFfYD7=A zw#@7_I0HGLO3Z5rf|7>9QlX(*U_IJt_7q!)g9&^<;WZ(j*DrISY;8C%2V=FF)@s5M zr8-+XT`j0_IcIBfq#)3k^%k9AG+8xStlns5t<0264P!7`Xah?dr|1ku&cJd8qbB;& z+EZX;3wkQJVn=SY9Q-d^Tcs!gj;8DC>hyIcy%emZjV#O328L!B9aQM#dcVSlbbfha zBuRH32atuJ7*IsXuTk^zZmCAe)@s#4u~+oEe1TXYzZ_);DbgW6KpXW2I+@8M#5{qT zpf@};k3a)2@BzOfL!U9JFHj{Zl3XSAQ8L!uXJI%ePG_uk(((FyNlVMhj9Q2wiZrQH zF0Bs$x){h(O;7+cYT>0!Om_8(SP`F`9+}jhKF1D1VjniOCt?dPg~$xq;I(o&LBK0g zuvC(~_Q)!m-HlL_lcTPxEX}iJqTeIc$r&~}(Gs8UcsAhR6<~)>R%fv47*nay!ofcS zJ6T#l1OtI?Rteer9+$J7m304EcPYFYGI#GMC)DB6gQFlu;wdX!lBlcdYi-ICN>3A=q zQAdBjC6c7+RVq)E;rgsc)-7DU;j^p+yxg<3yTdDn&!hk!l!3bAvbEh?E_R5;&M4Ir z-nkqvsHd4-P&Wkd*ytXu@nOZBQJeUGCoqy9vG-l0t_t|?wxJ@a!m7TL$Wnz;#|Odm zO1LKOWv@rF_OvCYx6$h9?-hGaM5MLn{B*C_-t%cw4>b<11voA~JO@S_-K#BLIih!| zbLy=L>$4aGe9=brGipV<6RqWUx1!yN*0^)7UsUW&v|2(l;!;oE$gxlYZxVprVm6!1 zHaf96(J@;L0k6v;!u>0&tCE4&74{@{BsG@zWkfon#>iA5Kj-0@jI_d=1$duA$8J=5 zPI7D`Jm4UHMGrVJnvN7fX<%c53yTO95L_q?Y)o)r5upNt3#EaL2`(%mR6uZ{G_Wzj zg++u42riTcHYT{Rh)@B+h0?&r1Q!+&Dj>K}8rYcN!XiQi1Q$vJ8xveuM5ut^LTO-Q zf(wfX6%bq~4QxzsVG*GMf(xaAjR`I+B2++dp){~D!G%SH3J5Ng1~w+Ru!v9r!G+Sm z#sn7@5h@_KP#V~n;KCw81q2sL0~-@uSVX9R;6iC&V}c8d2o(@qC=F~(aA6Ul0)h*r zfsF|+EFx4uaG^A?@m+DH#2@_we)zm!9el8lJtQ08LxCD0uh>aZ4QUj$_%({U)djyV zQdAA>yR?9!xD6Ebq_lSa;arO9_es8EdTHpVrq*v)u9-7t@YU~rOxrnTeL=0;c)0(t zc8h29XwShTU}D$e#)l?n%&}DMe0S5Rw2XpbM>QKqy}2rHTlpKaOncUUAjrA<>pMGd zpV+roKHvGu$@MDmwi8gj4;!hpt=NTGO{& zpS;N5STtbjl9jGj=FaFl8`dlvwQ$*Gr+1udCc9#M&CLPyj^>v7HLR;~MBB#S+V{^q zld}4~5$^;nM{g7#>-TfZh85Q*jjb-bU7C5b{Pd;#YrDXfYU^sF_x6Od0~hi7KhkcU z>%aLR+f)?XTJlTbl7g$vTh9)Zetonsea{b%Wj6oAfArO{bEymG?bsE1so?XBqn-W( zLo-|2Pw!qjwBz91?FTlc4&J-xMn-ef$L1GLRh%g4C}6%Hahi1?QJ;Aj4fLPyJU3ts&XgR^pt literal 0 HcmV?d00001 diff --git a/packages/common/business_components/src/ui/map/lib/images/toolbar/btn_cont_zoomin.png b/packages/common/business_components/src/ui/map/lib/images/toolbar/btn_cont_zoomin.png new file mode 100644 index 0000000000000000000000000000000000000000..ac32fbab0e40672e44a693e84bcd96418fb29c4d GIT binary patch literal 1456 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE;=WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2v2c=CaI?h>{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH z)bz|eTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1n}DR9FEG$W1Lt zRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8ZIvL7itr6kaLzAERWQ{v(@i!swoov))H5`- zv@kN!Q7|$vG}AY*)HgKIH88X?u(UETRDc2{plwAdX;wilZcw{`JX@uVl9B=|ef{$C za=mh6z5JqdeM3u2OML?)eIp}XpbFjM%Dj@q3f;V7Wta&rsl~}fnFS@8`FRQ;6BCp2 zOG|8(fG&l2A-BNS7jAG~F*KlnL8f1kSfFpHXP}>(3-T9Ob#X~hD#969RTqa;7NqJ2 zr55Lx79|7YBTX5m85nl>EdnV7y2i@CC=(bdi8(I$$)&lec_p4Mwn{)5y_C!ps}w`? zM2n=P6kVfKLsQ)}1Cume%QO=MU86)xLo>rNUWt*UGslHL)bWC?r2W2bKx~ zGV)9Ei!<^I6r7zwv2L!Q5uTZsl3!k|35q6&uU%4$GRsm^+=}vZ6~N(am5Id-#Q7hh zKZV@z(+4_AACy>-5)VuWm?A+;cvb*%;F&2k5150BfLSGky|Ijef$@T;i(^Q|tuGJ=)R@VI74AaU{le>72KO!7fuWa>2}Ie z&Px+q>%DM+(9x+=_UA4-6LjP~_xS^FpWfm5(#mg~{_M{4d)0MMmjtbBSuGTERP@RN z1F?^M`X71hg$<{^zNI_ERa>n<_W8xe^)HTY$rD?%=fwBwj6=S6j>=#EE_kbudwt2~ zhdUgqH>Jh6SqaA9FJPW;xMI8K?*qv%9IxvoUfk6m#j}uW_C>=zZK*sgdOk^x^Y>X5 z%8376awXZsAnoRX#fFV$p6mazL?*D_+jXv0qmM=Ps$R+8H@mXz+phg=e{Iov$>aB4 zyXU6QZr*a3$p7b&-Zrbwn!kC8%MIG^uZv%~?*Hql>V*eOV~$H1Wu;$a{HZSZ+uKl_Z)o)3-N?CmprWqEX-OmavF+I_O@d=LK}H)X%aoP2LLt$54! z_=IEhorfPd(*u@!W^m|CRK8UvAJ`|neGgruPotdUP@%jHkk2`@cIySj|5~^Nr*J`&x j@lL

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 Zco=fBV?=8EXZ`~fgPyK_F6*2UngAUz``rKl literal 0 HcmV?d00001 diff --git a/packages/common/business_components/src/ui/map/lib/images/toolbar/btn_cont_zoomout_on.png b/packages/common/business_components/src/ui/map/lib/images/toolbar/btn_cont_zoomout_on.png new file mode 100644 index 0000000000000000000000000000000000000000..58dcbfdae612b1145683f6741dac9b41edf52d0b GIT binary patch literal 1376 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 K*j(7X|L7Y4DSLzf literal 0 HcmV?d00001 diff --git a/packages/common/business_components/src/ui/map/lib/images/toolbar/btn_edit_add_on.png b/packages/common/business_components/src/ui/map/lib/images/toolbar/btn_edit_add_on.png new file mode 100644 index 0000000000000000000000000000000000000000..37a8362987b46888424750223931ff9dcabfd876 GIT binary patch literal 1168 zcmbVMTWB0r7@n|gX)cSP0UN7$nD|g7bD!P0kTu!PY?_5`8a4~rhX_48b0!%!GiNe$ z(%nQUSfjKLf`}l9l#0;yNvwrZkzz3|rD*Y?`k+Wl``!zEPHE31yU~Zx2M1=(`Oo>k z@4wHf>8V56zSsH~hRK#E?J8Xd(|7M4`u+6O8(F#xky4$^V2`w5jF_T}8wivGIFG6b zx+_aJ(I~@Yj`_7ZsaFo04i0#j>hSF#qG*O09cxF>X(9p|Xx9N3qO%>8Cuv<>m zE7QQjF#=sYa77Q3EVwI@2Zs8nDV z2#HKVXti2=OW|=mFGz-A2%;>=GDkJIWF;i9&4tNum%&Df6Z;YIaR^dI*ucxAz*0}Q zLI|QtWt%umI*Fnw6WTBmBwiGPAdPENJ0Vr{uNymRC$*Ib300Kf<=CP1@P@l!n!6Vp zN)@R$=8@Q^MS+Vpc9sJalCoW3=?(AtuBocBqBmrPQxr|(bWv3}J#WaI;yKWR5NUbY z>+}SZ{m{j&&<4lq3vYM?LWTf&yQ}8|FAyL9GQ99yF7QY z|Mi~x>u;U2Mz4PL&*V3&Bj3LN%IxBsXD{^+-R!mYt6$zz_Wt#%aDM2MBgKz1(uEJc z_yYj}YyQ@WQuA*5k0_U>?C%a9 GJ@FiJba;LM literal 0 HcmV?d00001 diff --git a/packages/common/business_components/src/ui/map/lib/images/toolbar/btn_edit_del.png b/packages/common/business_components/src/ui/map/lib/images/toolbar/btn_edit_del.png new file mode 100644 index 0000000000000000000000000000000000000000..3bb372ab9ab05574c7ee2f65e5686429a25c7a91 GIT binary patch literal 1160 zcmbVMO>EOv9QPVjP}gb*RZxb8-dt2ZgyYY|vDHvYoV4k1i9)0nsgw3%zqF>cpJ%@k zx7r~f4pd^Ia6r>`X(tYF;jkkd3PhT=!{EY!kJF@yohEjeG$fF^=Qinfs5s1${oen* z|L^zz_EKqlq^IlSE{0)xilauEuD$WQtCN1eUizemF8fJ-lAOggQilOzhHYF$py-%dgaO^BQ zkun9-&!HJ-bTL3@7so5s;;g0F?9d4?80nP2MFfJ#o%2FH%CZ~0I^D;|JPS5d$ZVF~ zbZXKpfgBDHNF~#pCCV9~YDqDrWhCV|kOVQ!3mPvfoFM9grVAoyJuI~r*fqUu6k4{Z zlx1fK@pYcB*Xzl;oW#L2FKU{`3lc9$9M#~$1&_dp^TPf%gMmUTaD3um55$bHiswm| zrJinv;QFSyMeK#GMA4M-5%hU6De$fv$F-pyk}~?&jcv8V%7TyhG79m0V9|Qi`rBZd zyZ0N46{$D+nZTh%fpZ47=3V5GqLF3kP11I3T~Q=CQ+mQ|I@2#U;Q(wfA{H4D}t zL~2^9wRyI~=Y(`#lGVa+PEkcMuVwP-)G1jI3|gClVrXq_(F+OmEY!B`P}?nR{=HZ| z7a&M*P{DYv-36r?OmH}ZeUQt=Rae203CFW>Jv-p=e2p%C_+K|IHsyo#NwW`A_q-k7!56+pSTc!qzY$ zk4{iPM`bNKaEFfB?V>SUiC$FSt*;LyQXhPH@4*Z6W%lCJDRA@9%HP`V!#m$Dcq4o5 zN8c~^HTzc1zuH4Sy#cT8=ze$Ym+C<0u|%PCi)sF`YuPnd&y6&Gbv`rqNsm6i(%W2L z>K^*dx0!oauh-z{PbW*y4*uAj1_RGQVz%R}&TkKY_Yi|sVQ{Q*=7)>v9dG{nsQLS- w*68c*;Q!qJ&852yCh9t7i(?1QcQlv;Q+gt;UY>e{i(PPTN@e1(pX8m*%Mb6J~IF(|lb z43{vnXU;6+K91Wt?UXCDQaou`#Eqj!C*E*-BoPuEa?&CQ7=li%=G2SzsDMIO9>&5WKLb#bDyl3LKw0!~+o{s*)+1 z=9#A(A-I0AxJm4V%|x-3i4Ek7QXGn|8^yJ*9nunh@5YweVR^>KVhM+2DzI2RYCSD5 z%iZ>dB1PtnaVl_FQP8AGtSJ|Jv|y%rb`!T9+fY?mNmXSW zRHSQ?E~vHw1>IIvp_*W#4doO>NU~&A}bEddgOC_XrwCnm$i?I*y&E2*ybUfI-+WpTrld(s07Z+E1cl0mER`$L4Ez@!D z<2yHQzIxSuHa7qL7l6Av(Eg=)X?}V?w{MiY`mbEQaciwV`ZE;rL*~PQ(ev*BDED^b literal 0 HcmV?d00001 diff --git a/packages/common/business_components/src/ui/map/lib/images/toolbar/btn_edit_next.png b/packages/common/business_components/src/ui/map/lib/images/toolbar/btn_edit_next.png new file mode 100644 index 0000000000000000000000000000000000000000..df4913c9011ad2d2444d0f997baa68357fd2e5ff GIT binary patch literal 1209 zcmbVMU1%Id9N*+>kk-ROqSzB*+$c>;_j_;mcF8rD+}@d!Ts*Fa4Wg}cyK}kiWp~!y zN$!&RQjrT4ltz$>FCtdaJ{0U@1r;npKolP=TA`o_3XLBDUy6k~o7_boLLXe%nfcHD zf4~3to~_J2k=&cw%P>r`G;LMsJ`%t84$<}1vyUX{c7PP-$T8d?Z5SeE(!q5EN*o7uL}@!z7m6+8miH&zLs$co^&O9WS70h8dse1ki3F0_teq^|S0BAAiaM*U7TS z(`B(7OY5P_iME%=ey$+BC#COya30t>cONGr>3 zJ2h9XfIJQnNb?$JOG*al1}~+JjI163vM6bSXb6(ZiIOQArYM2l!%}OZ(=e-6v1f}) zS++??UaxNqimr1RQB}B%X2_h;>VRCGi+BSI+IvZ}K^yz_taCs3z^xLN+wJpC)$k@0b76sWK>OvtAb z6w*;4UtN2fj@kDmYqHk4UcY_k&O{HxlZzFQ;lvYq=L6IQ8p^h3@Mkho-wHhU(9O8>{}< z`bYPvf2Gfb-PFaz)xXblUx8QU%AfnsU4DG@y=G!_325(^Oy{wKHzz;$bT!Pa{k$i6 z@~2_#EqMB!weX%(-?c8YbUpe3JpWB{bUoLc`F-_^jY4JS-G_@8&$p-S5$DZ)mu`P) tUAURM_0Y)agPRA6OGobiZSX+XMMa4i0rlnS%frK#s%`Uk>Gh@k)g literal 0 HcmV?d00001 diff --git a/packages/common/business_components/src/ui/map/lib/images/toolbar/btn_edit_next_on.png b/packages/common/business_components/src/ui/map/lib/images/toolbar/btn_edit_next_on.png new file mode 100644 index 0000000000000000000000000000000000000000..4e5540b55aa8b04368d7faec600a7f4ea749959b GIT binary patch literal 1205 zcmbVMPiP!f7@uumsY$l2q#n|$3=<12Iy?V&c7|-z&CDiQ$;M^7ko6MscIIs|O=jLW z^OBiFP}4)%3Ldmdd+5PXiXbSYhay;7ArZ_)yi|jFDtJ>01rekW-z2-yL+HVQnfJc; zzTfZrKUb?$J8keOzIYLvmnvQ#;#A$6g4~&`@mX&m~O&3$15<8zka~bj$L4; zl?q?+4LI*itOoGn>QvoYU9dEp897f6$2uW!AqI5pE_$IJ7nnU>o$Qlij-mHd@Iryv zcdAjT(gq43tz>hoB}jQ%)v|)3F zNCjpdV_)aED2lR?ltsZDCuo|+@ggUREYV=Y6%T`$^}?Ypg9$?`aD40_k4_jt6D{Ea zLpnMU)nJI00*ln6HPi)@ z+&$Y+qDZ{a-v}I16tHL_YsrNkE}I30++=OX)@50g@=Z}If}%yP!IcFbe09Pa8&3b(KCl?RYkd!gEQP_M6l z>yKZI-{~7%+j+4a^=uqf?)`pj>!N(XRPuy1IGc!s&MO!x`{P@mgAF^tZXuKi8P; zfgx~>GS@#$J$dp1y?pt~t8dPv2k#!gv;*y+q6zJxZ)V9G5xjH>T-y?SSQyAcs<&TqlSan&ZZbod~&em;wjS`eA|p=lV?^_+EiO zoUg%JRKhKP|5A((E=@Mvr8(F1_~M6PtYa~P08<1y!F-rlodUngYq5QLEb?Ggh0YcD zHK(R)Q=mj*4DvZma3#e6x|x&mrXj0)fD9!~gr+E|0+cLhT2KPrhiBGeuW8loO4k;X z3Ve&w$P&eNyPaz*ITFu`l4+VEltoznQAga~YiNmCuD3&s@gCbGNK`{u@xK_0jTF3vpv7vU-Sd6e(#|c@8T~?3gNDs_% z_hLh-BJ;-jIQCgl(7a9Dg#d@NY8QBRlkj}-L8)U6V`_bhirmk zHY$8;*G)ENSF83!qjS&s_t~>zCf_%dIny_hxf9;|d+Q$!X|Q$r?bE-$vGQnC8$5FN zOK@n@gU8w76W-ZvgXdmxidP0!oU>nCKKE$fm90PBhS|&ow7nl5+oq{ApB}Gp=KcO# z@h3-i%~!H-@rzHn!4K*W@U_>!`F>~L=w|TSn=22;Zw$3wE0$-z+p+9?`|i)n&Z+F4 z@iO?c~0imVfMMS)aMi6=^rf-sL^bkBaF!SF3 zz5nm`|DN-s!^hIw4s7E%E?pY3D{S49yxpDb``P(}X}0XA#W8x4)M*n%nCo{*4TF-8 z#&HEBcjnBWxR>Kn(_VFqj+IXs4)HT6(aE&@kfAxQx6lfaGl?mv;c+i8`KLE-^1yRV z{#3RM%b|rQyrJ0$pPU`8IWxK+`i)R?o}oQ6NJpCqiA6Q~^o`)D0+s^@nHHBDZc-?7?+g zOfvZiN<%{wo6TmXsbokrE=szti%=G2SzsDMJQGmV5`y?po59Ah6L}%^NB|N>R3lT= zxp716I&=0r3@5(KZ$EqJEj%<%8gC6P!vrQ@=#TTd`_1IrS70Q zLRibm^)}CDcnfM4)N{FhOVuQ)sOO8h?0^EH&1y5K+IkyX3Sx=^2e)l|%r?X3`)#%O zMyz2)7*P^c32C&uV03~|5>Jp2SXNSX4fLGy0+%%7!%3OeqPB75O=EX3B0gBnv*B&x zgH~6Ou1UI}x(XC@S5<{tmWeKu^AI7)kyVXf$GdNvKan{lCe89%^R$mxM<&~iQDDNx zFyVkrP{c;%+VqzJ8?&n=yT97{r}p2KWBa*hM}D6lNh_bf{B&gLN??9_ zx~FULuepDFv%l?-8-<-eZCU>KczS;S_wOuzF!%R`U8$vX-1XqX!vjMX(c{iaW8bfH zm%h8)_0hiWuTslh;N{5seJ7sG-#Hh6o~7&Dvf1K<$@wZg1a~+A*;3?u+Nc z;L#7Ncy`CsrNz+(8oKz+RetOJyXAX-+=kXu?lLId+S_4eOUDam7Zy9aA@}uG?Zvf~ Rg;esdC>4k8p9ent+h znR&@ha%+)xgY}@G*Lo3p66;B@Xh21*7e(lyNC`c(;6>1bO9`xRlHKSb^x(kEd;j*V?6 zOc|DgB5u0#+abQNy->BcS8c=Lr_X_@*klAArU=B|nje{QoFED3TC^jF=T{SoNe$-18OPLg-K$1l$d0rCNfp$bI_+K}U)sCuL0hTH_A{(L2>d~0!gIVsL zY$#D=-k6J_%Zh^5EMjkX*rz2c&$AoRaUE0B6g5{@R6$jBUC2RA6>?ca5!8l_8VF%M zt2FvN$Ki`mSM|c2GE>xaS)Mg=v)N2Rh0tQPnbRzzk1hETMZS&uwq0hshn1g*HH#re zl!R46*7{wr)FhNdO%i}&F{!!^CYN2`A+6~3q)dlVTR3z#u`?GE4;&b6n$Gv|&i~Dy#GI0nX8BL^^p99aCflP?V8YQbVV_M< z$VTP0lgk}8X17b$Of|k&-|u#()0xzB>5o#w*Kck9y1584FSgI@{QUPodojKK&gVBC zy>L-HeHT8nm#Uu!_ebdbu$V?y<$|0Ze|7Ay)cQd6>+$AI=~L7hYrk>%%a`v+r@!Cr zHaqac-$o|A!u88Hg0@)ZF9{i()vKbgPQ8QE{2*}v48Fb4npVB&|uyV9v!-#y+t zQM@zs)Y-ksod>4|&s}@?sB2vv`=T?v_V&We#~?K|@W6>jo_>7tC9um~Y{B1eUfKO6 P`CpV~7p%_;m#+K+a+G{1 literal 0 HcmV?d00001 diff --git a/packages/common/business_components/src/ui/map/lib/images/toolbar/btn_edit_save_on.png b/packages/common/business_components/src/ui/map/lib/images/toolbar/btn_edit_save_on.png new file mode 100644 index 0000000000000000000000000000000000000000..b035687d6f910df7610a77f62ca19b4fed5e856c GIT binary patch literal 1190 zcmbVMU1%Id9N%l&GffNzTks-EmOao`y1TOA3`5o*q!;$ z{C~gy_byLOKG)atcn`xcedP(eO4q~b+nuG~E6Y#z(Pe;)O_P(jL7Ff^%!rHYh%NhY z22~Ms7hhRNLk!b(&Z|w6>B`-D-0v{2`CjNX7n@Ne=<~8X)Jr+53TZPP( zxE-gaD^sk6Bg7VjBJW6w&T57r6%1WgkFhe4iXt#XN#%iL0>cCn+kQA|Epi)X)gEu# zqEd;QB_uROvDs`2O+~=bj3^m~Ap%*HWu9vA@nS$=!Uu7_!(gM>iM)__IABvoSjP*b z#8FRoLh!>%WtTXJ+litn6B8JUk^n^CPvhFwj!6~$>&Bkiacwa~Vim=BA#!Lv8u<>G z=I+6UQbp>Gc_Q*?QQ*9dodq8Sq->WsdLy`=YpSZO=yh4)6-Co{9jFSg7Y&(L8V+ng zh_s^I=R85k`41KIv7*znUX>G<;+vs4+K}=xappI>i+HPaz2VzYt zLXhC7hVgu-3#Midx49a@zJzQJ5k#x^3EZ5JiY)}&z$K~zg>9`>~Gyu`kVXS z`eEw&X!YUyS6_Q1zkc(=?Wfjqe;&M~=U;ywzMM$)f!>Y5!$0@GdvS1eX)xF2{E;`Z zzg^3JHM%6`R@eUC=(fJ@dFa^2k>$-?_V}eAf7)7G8UP<$`{K;mdr{BF`wwm$?SJ}) g6W&_6!(_6|=G)qd+b^A0(mzLeY|{Q{^z5tu01BFZ^#A|> literal 0 HcmV?d00001 diff --git a/packages/common/business_components/src/ui/map/lib/images/toolbar/btn_edit_slt.png b/packages/common/business_components/src/ui/map/lib/images/toolbar/btn_edit_slt.png new file mode 100644 index 0000000000000000000000000000000000000000..aaf2bbd08f4f62a2763eb461660e9a74eed16ee0 GIT binary patch literal 1288 zcmbVMZ)h837{8?2cGI}hb{pF|eS6i}YA^REmt5{_)~5NhhAlOufrf$7H+OH^qq)26 z?z*I9j7~>Q9pZ+rh#$m#6F&$MnXpn^r5_xkPOyTCI4b%@VLB;HoYeQ)r23)kg9mr- z`@HY-d!FC(@8(m($2_|a?j{JrlNgGo@!IaZ&5ii`%KTvuUJlr?tUY4n?GiK*5mt;G z0tpR{qcnob^r;)Dk02UOtC_5wO`ecsL-RsM$6MBl7)=m;{pBK*Cy@lEny`P={trG%_=sk!L1lQ6c+}g1)kZ4QR-QpsW>iODc!RO}i4_JI6E$ zHdXA&5V=Jvn@oX-VItu71}K^J1%V)XS-%+M_+G#Ge0bQ)R4 zlqutSb_O%yM|@%inP*AefrF6ep(wB-#VbCB5*41Oa(*l-3>Rb|WMz&Q$QoYxzxksvDcWh4|1?ki z2zR8j-5v!jY!4IC@dTN8R1QrMBtf{k6VY&{{B7>u#zudG-}O)>yQuyJ0czO$jC9%;+mY`oDL?^yV;^~2?2=U4mUcH;5v$oqPEE57i#9WS{e& z^MC*U{Wl*Q8GbO(+1rUANFbe(vT*J8-i~(oeg4=z0l4gNhVsrnv*?s%3m|dTEC4jE z%VQu5WOa7xGtiG9{uwQock-EsMa9%ZvZoVr^%6uQNdJIal9dVIpan3d8By%|2a6c0 zsZne{mmxEy1Q^#+6$|XE4Cj=}gd(WezyoN%D?$T0aAefgCk{i<6W{3L;6N%?E?tEVU?R zrDW3=l%m+UEk!YS6H+x*WLcVt6lex#7@o%?B+KBD zut4KXQIU(X4EQizY}wfepCEaLA54bh36`g*At5pp<^~y(lwfU=tR%FsX~TA8Ljf({ z8uZ=7ayP|_2@A-MY2{3FvegA6B)qEg=&t>mp_*lTw^ydMs3l-&GeAvR zrjD-WS=2V*z!zCr;3)xTRffa`m1Xe)2St^nBcv=-3eECZ6R-Z?{1K28;Wf*Dnx}OH zJJQ>(j{+3dhY1*Pf-E>HQ*XWTHG=qh(^5R=ep6UpSsCzizRlI2@4evMow^cRdI727 z^O=Q+f7|@|__-rnk6wGXu9J^D1WykU4;MI=zzc{e#IscZUMsk41O!DM;&nSCM4IhyMZe52yhE literal 0 HcmV?d00001 diff --git a/packages/common/business_components/src/ui/map/lib/images/toolbar/btn_edit_snap.png b/packages/common/business_components/src/ui/map/lib/images/toolbar/btn_edit_snap.png new file mode 100644 index 0000000000000000000000000000000000000000..fc91d430447fdb7d0632691591cb7ed3cb506a02 GIT binary patch literal 1185 zcmbVMU1%Id9N*-$*t9VPl_m{=b^BmS-S55I+a=e_<@RC^y!5ynfWi2m$GX6rI`4of zSc1TsfBPpmL{YIhyIjGQ!t1(;91cV}T!-*=~yY=gL)vwyhL1 z5ibY@FAMAT$ps&dFN~GVg=tf>nDhyHDAWmo12LdOXT}ZmFvV>1>SP}s^9;SMf~Ql= zj#HIFkU6UDWy9pDmta)q%R(5Zr1;JQ2ex~nWxo5f5MNzmutNr9NhT)%+mh8 z!LH_iXIC#Q->bg=#Y^8$O>%eUdN-c^|Dtf{K<1aLH{U#c_Qr5pd9P3D{JrD;JA+rA zFP!f=5sTm4_;4+pO&ob^;IqZ``evhY&^T=NU)Rq4_}9|Jz&DFqD|eR1@80Xl{%~R9 dTIVyp)W5Zt-@Se7jdRgYBcB^Hz8aZadI*!Age3p~ literal 0 HcmV?d00001 diff --git a/packages/common/business_components/src/ui/map/lib/images/toolbar/btn_edit_snap_on.png b/packages/common/business_components/src/ui/map/lib/images/toolbar/btn_edit_snap_on.png new file mode 100644 index 0000000000000000000000000000000000000000..f856d8fbe60ad8b33078264059e53896c5767730 GIT binary patch literal 1185 zcmbVMPiPcZ7@u_8HPr-GDzpkM(}}bxI6H6t?9R?Kn`E=I(M5L~)};nYgKuWuW`|_v zO=jL^C#e>yP_VU!BI41i;6boOFH$^6MFcPE!4%peN(#0ILA(jtrf-tnw1?oK12gY^ z?|r}D_kWH}RCo7p-m#fsnEvt}qej#<7l_ z=MH2lpyC%%)7i5ap#6*0y0tiCX*M@9%nn65C2$deY~;>*p&sSARbHL$<70tiS5?SN zo?CNjvNFLIae&xNI?G$4oMTljEoQWwr0ilPAZ7)i38KOSQ3sk1M7HyA)LLLS^qMi= zu|=gk*CfQ(1)<$;r`vKG2h)P6X_^2eL6Uf?!G{YTff4V816>9Kg;wDB#K9gLGeQ%$ zNS>pfu7%+GmC8D?7j_awQzk^v7sNCWTsMwuRXZd#^sgHmYKQd&9|<)S;#OeMdNc;Q zV4Ay^8;TXFH~L3`LyH1u4Q#bsQA=vk<1+o85QSmUKw zy%-=!a8Sp1w%Y|0O-yju#6DXr##L9@!2^zG<97H#T&A_C4HP)@$Q}={%dX~GcQ)`r zZ75JvMU7W%8St8|D7=}Wq79@RfKap~Mddnp`~T)opiT*Kv;3!dx<|Al+5!U#zT*Br-j3Bu@4$_1lF<(aEW?M_(~>TT{=OOFQb1 zlPUbla(VPc^1T1am3QV7-;RRRo!89ImAS)%w>K^CWT*BXKUMhh;!X1{>EY1}ufJ!1 zH<-GUFvqzgUvIteao_1Lew_FXK78}uXV*t}y^2=GLZ@dq@z>pF=x%Sc>Bf^Yk98$8 z{H*WZ=w aL1wA??%|6+-#;7wG|Hu_@%`ArBmV$!4Sq`i literal 0 HcmV?d00001 diff --git a/packages/common/business_components/src/ui/map/lib/images/toolbar/ico_gis_sprite.png b/packages/common/business_components/src/ui/map/lib/images/toolbar/ico_gis_sprite.png new file mode 100644 index 0000000000000000000000000000000000000000..3567cc6e4d9ac44cd751ac65322ac83a7c4e0d98 GIT binary patch literal 9217 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 literal 0 HcmV?d00001 diff --git a/packages/common/business_components/src/ui/map/lib/images/toolbar/img_map1.png b/packages/common/business_components/src/ui/map/lib/images/toolbar/img_map1.png new file mode 100644 index 0000000000000000000000000000000000000000..7f96fcf5e98fee63a2e89b39189059f7d38d82ca GIT binary patch literal 4537 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 z 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 GLH`5!q(X53 literal 0 HcmV?d00001 diff --git a/packages/common/business_components/src/ui/map/lib/images/toolbar/loading.gif b/packages/common/business_components/src/ui/map/lib/images/toolbar/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..7c3683bb49dd2f261c1d3898c69136c8781a7643 GIT binary patch literal 184974 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%0As}B0S2f>;59<-vShb+Zt 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 literal 0 HcmV?d00001 diff --git a/packages/common/business_components/src/ui/map/lib/images/toolbar/map_pin.png b/packages/common/business_components/src/ui/map/lib/images/toolbar/map_pin.png new file mode 100644 index 0000000000000000000000000000000000000000..b6cc2f6aabbb4b374e65c571ff8fd91f3039d883 GIT binary patch literal 2362 zcmaJ@dpuO>8=s6@G(>hSYK%eDnyWE0XEJISGUYlXCFRV_kx_HmnW3SGGF@$MyJFi& zyDD82l}O1XWwK>0O168`%7zS+wyf=Urs((kqu;)t&w0=LKIi#9&-b}~K4*7C*iw{* zqXhziKyiZET=?w(KVIgh@SeYRPKH6C2#i%kNfH&CKpBK!2_!rS!x4e&Aua?8(!S9^ zz6bf?^+GWd`>OE@79$ieu`7K- ziJ{T}C`lNcE`y@d!=m}=8~A_#yVwuot7O0iM34f+C`B8^a)y$L{a}{?pABLH7V|+x zv4M&GNGdio0uvySK^PxA6~`xe(=jvvPx1liWQrGtOe9eWM1Vk|;D{s!5nvEWn5l(@ zy~zZL3@$rp$`^cNVv`gKDT6@Rv}qH5lQ&)>TTdVX06-v;31l)3*1*Zr#0pS}6U$wv zEwCXuUnZ0)gc32vU=id=QWQ)q%=BXjB57#oC&Oa-RHERN5tN{mK*AFVB9S4k5884C z7y2)a&uYt~)1(lA3&|xZGCo|7MAvCBoV$N_WKe|JFv4X*xG3O8wuGM|g2W0An~8SV>1lKLFguDCkzFDrg!<&ec> zy@=T_dbP1#wA`jltIgCi`_nqoI)GQ3+ePU-%WH_dQPX9pn?HFjw6ki>d&+hQ0`|(% zNBXh|KiJ?+IbU~-oj-4i9K08A1&_|5=!MzO=pz%8k7W%BJf2bJUo}pBeZQ;w$IiP( z4ski-6?17{%~I`ja#~W!W%<$%hS9t3&pIU<+FFD!j5l{$;^rbdtlY4Bt5Vr}Wo|xt zplIG`%y$vt<0pFltX}@$L4NU(ozJiGO1IaJ%1X-1Py6TPKE1k!o?3lkY^%-e;43H2 zZWlkYyoKIYQ`6LhA<*n&jPkV4S(EDRd6I{tKS!=n0$0bDt|Pd)yQ`O}hf-U*+&i)` z<`$#c;Lw!Udu(U7q3^j*u(@ZQUScRtSV(XOiRxbuPU>bxpdFx<=||qw=#MqcHU(D5 z!cwW57pTf5^e4|_=JdwD|3Y69m{q)Xkz#F1maZ9j=ERbV#kHMyoK3+oI}4SYX4k5$ z<8_Gam?9&Gbf%}BY(!~Xa_|6hf@v1^7(eS$sY%1YXy7}+{=ukvI<~p)Ot9ZY9`Zn! zS(PKox1_=J*~tWvs#+g%Ep@-M-`m#tRn9-sm+CXOs5uQ2T_}&nBS#0^S_-m#SP$1+ z92Nw*+PLZ3k*98ydVL@7J)XtmHV?Hv$v5*?+!!u$tDwxEu&aKe(Qq__ZQaJnJwv+S zLZxwb{N3a3JK-~@aNqgx187uUiG4NvSz?qExuuJKyT3xF; zdOJHClI81hFVbc%rIc;G%{UZ0!=={#QeHzw$n`O=Np4h> zi@Uq~@Suq5WZ6l3RAXKSQrZ3O|nm*cVSL;Okd1y}xWyhC} z7sSVo^;#nDR`*0k^9nAV6a79G!kS-1Y7yk-%tLTu(9Nfv&k339krtqf_jnFeS3lV$ZJbE*y^z_FZB+p^;SV=q$c~7-%BI(P+P>a zB;A(o7UWgOJnieQ^33@S%f+|#>Jv^6qzOfP)37ECdo%0DVE(CFH!U*CsHGu|^nL4A zM(evLzg_y>)1AhiHw*oIBaHogJ1IFnwH{?2IfZ`|7iS+SI@-GyZGG;`%NZHJ{;Ete zceZwaH!w1%YobcVOmo8sn0SIw?f*EI-GmH!u948<+lWe36)Pa?SC>zS($j&%o8)hleH+OkDd8(ZLdDhH{HXehQxNvhxWK^iWM1LBAL}-W8uSqtV Rco_a>IDuj8YX5|7{{e=c*p>hQ literal 0 HcmV?d00001 diff --git a/packages/common/business_components/src/ui/map/lib/images/toolbar/toggle_off.png b/packages/common/business_components/src/ui/map/lib/images/toolbar/toggle_off.png new file mode 100644 index 0000000000000000000000000000000000000000..d5dea9f6764543a8a2025d215fe00361460e3da5 GIT binary patch literal 1591 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 { + if (item[key] === value) { + result = item; + } + }); + return result; + }, + groupByProperty: (arr, prop, parentProp, group) => { + const tree = []; + const mappedArr = {}; + let arrElem; + let mappedElem; + // 먼저 배열의 노드를 개체에 매핑하고 -> 해시 테이블을 생성 + for (let i = 0; i < arr.length; i++) { + arrElem = arr[i]; + if (group && arrElem.mnuGroup !== group) continue; + mappedArr[arrElem[prop]] = arrElem; + mappedArr[arrElem[prop]].children = []; + } + + for (const mnuCd in mappedArr) { + if (mappedArr.hasOwnProperty(mnuCd)) { + mappedElem = mappedArr[mnuCd]; + // 요소가 루트 수준에 없으면 자식의 부모 배열에 추가. + if (mappedElem[parentProp] && mappedArr[mappedElem[parentProp]]?.children) { + mappedArr[mappedElem[parentProp]].children.push(mappedElem); + } + // 요소가 루트 수준에 있는 경우 첫 번째 수준 요소 배열에 추가 + else { + tree.push(mappedElem); + } + } + } + return tree; + }, + getLowestChildren: function (obj) { + if (!obj.children || obj.children.length === 0) { + return obj; + } else { + return this.getLowestChildren(obj.children[0]); + } + }, + hasClass: (e, clazz) => { + return e.target.classList.contains(clazz); + }, + isNull: function (str) { + if (typeof str === 'undefined' || str === null || str === 'null' || str === '' || str === 'undefined') { + return true; + } + return false; + }, + nvl: function (str, returnVal) { + if (this.isNull(str)) { + return returnVal; + } + return str; + }, + isNumeric: function (str) { + const pattern = /\d/; + return pattern.test(str); + }, + isAlpha: function (str) { + const pattern = /[a-zA-Z]/; + return pattern.test(str); + }, + isAlphaNumeric: function (str) { + const pattern = /^[a-zA-Z0-9]+$/; + return pattern.test(str); + }, + isSpecialChar: function (str) { + const pattern = /[~!@#$%^&*()_+|<>?:{}]/; + return pattern.test(str); + }, + isKoreanAplhaNumeric: function (str) { + const pattern = /^[ㄱ-ㅎ|ㅏ-ㅣ|가-힣|a-zA-Z0-9]+$/; + return pattern.test(str); + }, + isValidPassword: function (str) { + const pattern = /^(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[!@#$%^&*(),.?":{}|<>])[a-zA-Z0-9!@#$%^&*(),.?":{}|<>]{8,20}$/; + return pattern.test(str); + }, + isValidExt: function (fileName, allowedExtensions) { + const fileExtension = fileName.split('.').pop().toLowerCase(); + return allowedExtensions.includes(fileExtension); + }, + isValidAllDate: function (dateString) { + const formats = ['YYYY', 'YYYYMM', 'YYYYMMDD']; + for (let format of formats) { + if (moment(dateString, format, true).isValid()) { + return true; + } + } + return false; + }, + isEmptyObject: function (param) { + return Object.keys(param).length === 0 && param.constructor === Object; + }, + castArrayObjectToList: function (array, key) { + var newArray = []; + for (var i = 0; i < array.length; i++) { + newArray.push(array[i][key]); + } + return newArray; + }, + arraysMatch: function (arr1, arr2) { + // 길이가 같은지 확인 + if (arr1.length !== arr2.length) return false; + + // 각 요소가 일치하는지 확인 + return arr1.every((element, index) => element === arr2[index]); + }, + //상위뎁스 객체들 조회 + findObjectByKeyAndValue: function ({ array, find: { key: findKey, value: findValue }, result: { key: resultKey }, parents = [] }) { + for (let i = 0; i < array.length; i++) { + let obj = array[i]; + let siblings = [...array]; + //siblings.splice(i, 1); // 현재 메뉴를 제거하여 형제 메뉴들만 남김 + let currentParents = [...parents, { [resultKey]: obj, siblings: siblings }]; + + if (obj[findKey] === findValue) { + let formattedResult = currentParents.reduce((acc, cur, idx) => { + acc[`${resultKey}${idx + 1}`] = { active: cur[resultKey], list: cur.siblings }; + return acc; + }, {}); + return formattedResult; + } + if (obj.children) { + let result = this.findObjectByKeyAndValue({ array: obj.children, find: { key: findKey, value: findValue }, result: { key: resultKey }, parents: currentParents }); + if (result !== null) { + return result; + } + } + } + return null; + }, + autoComma(val, returnVal) { + if (!val && val !== 0) return returnVal ? returnVal : ''; + + // 문자열로 변환하고, 숫자와 소수점만을 허용 + val = String(val).replace(/[^0-9.-]/g, ''); + + // 소수점을 기준으로 숫자를 분리 + let [integerPart, decimalPart] = val.split('.'); + + // 정수 부분에 대해 쉼표 추가 + integerPart = integerPart.replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,'); + + // 소수점 이하 숫자가 있다면 다시 합치기 + return decimalPart ? `${integerPart}.${decimalPart}` : integerPart; + }, + removeComma: function (str) { + str = String(str); + return str.replace(/[^\d]+/g, ''); + }, + removeSpaceAndTrim: function (str) { + if (str) { + str = String(str); + return str.replace(/\s/g, ''); + } else { + return str; + } + }, + isNotWhiteSpace: function (str) { + const hasWhitespace = /\s/.test(str); + return !hasWhitespace; + }, + //숫자만 남기고 모두 제거해서 반환 + retainOnlyNumbers: function (str) { + str = String(str); + return str.replace(/\D+/g, ''); + }, + proxyToObject: function (proxy) { + return JSON.parse(JSON.stringify(Object.assign({}, proxy))); + }, + dateFormatter: function ({ input, isHan = false }) { + const value = this.retainOnlyNumbers(input); + + if (value.length === 6) { + const date = moment(value, 'YYYYMM'); + return date.format(isHan ? 'YYYY년 MM월' : 'YYYY-MM'); + } else if (value.length === 8) { + const date = moment(value, 'YYYYMMDD'); + return date.format(isHan ? 'YYYY년 MM월 DD일' : 'YYYY-MM-DD'); + } else if (value.length === 14) { + const date = moment(value, 'YYYYMMDDHHmmss'); + return date.format(isHan ? 'YYYY년 MM월 DD일 HH시 mm분 ss초' : 'YYYY-MM-DD HH:MM:SS'); + } else { + return input; + } + }, + generateYearArray: function (num) { + const currentYear = moment().year(); + if (num <= 1 || isNaN(num)) { + return [(currentYear - 2).toString(), (currentYear - 1).toString(), currentYear.toString()]; + } + + const years = []; + for (let i = num - 1; i >= 0; i--) { + years.push((currentYear - i).toString()); + } + + return years; + }, + getFileId: function () { + let timeStamp = moment().format('YYYYMMDDHHmmssSSS'); // YYYYMMDDHHmmssSSS 형태로 타임스탬프를 생성 + return 'CFM_' + timeStamp.slice(-12); // slice(-12)는 문자열의 끝에서 12자리를 추출합니다. + }, + lpad: function (number, pad, length) { + let str = number.toString(); + while (str.length < length) { + str = pad + str; + } + return str; + }, + convertKeysToCamelCase: function (obj) { + if (obj === null || typeof obj !== 'object') { + return obj; + } + return Object.keys(obj).reduce((acc, key) => { + const camelCaseKey = key.replace(/([-_]\w)/g, match => match.replace(/[-_]/, '').toUpperCase()); + acc[camelCaseKey] = typeof obj[key] === 'object' ? this.convertKeysToCamelCase(obj[key]) : obj[key]; + return acc; + }, {}); + }, + blobUrlToBlob: async blobUrl => { + try { + const response = await fetch(blobUrl); + return await response.blob(); + } catch (error) { + console.error(error); + return new Blob(); + } + }, + hexToRgba: hex => { + const r = parseInt(hex.substring(1, 3), 16); + const g = parseInt(hex.substring(3, 5), 16); + const b = parseInt(hex.substring(5, 7), 16); + return `rgba(${r}, ${g}, ${b} , 0.5)`; + }, + rgbaToHex: rgba => { + /*rgba값을 가져와서 rgb 로 추출 후 hex 값 반환 */ + if (!rgba) return false; + const rgbArray = rgba.match(/\d+/g).slice(0, 3).map(Number); + return `#${((1 << 24) | (rgbArray[0] << 16) | (rgbArray[1] << 8) | rgbArray[2]).toString(16).slice(1).toUpperCase()}`; + }, + rgbAddOpacity: (rgb, opacity) => { + const rgbValues = rgb.match(/\d+/g); // rgb 값을 배열로 추출 + const colorWithOpacity = `rgba(${rgbValues[0]}, ${rgbValues[1]}, ${rgbValues[2]}, ${opacity})`; // rgba로 변환 + return colorWithOpacity; + }, + generateMonthArray: (pSmonth, pEmonth) => { + let startYear = Math.floor(pSmonth / 100); + let startMonth = pSmonth % 100; + let endYear = Math.floor(pEmonth / 100); + let endMonth = pEmonth % 100; + + let months = []; + + for (let year = startYear; year <= endYear; year++) { + let monthStart = year === startYear ? startMonth : 1; + let monthEnd = year === endYear ? endMonth : 12; + + for (let month = monthStart; month <= monthEnd; month++) { + let monthString = month < 10 ? `0${month}` : `${month}`; + months.push(`${year}${monthString}`); + } + } + + return months; + }, + findDuplicatesForArr: (arr, key) => { + const map = new Map(); + const duplicates = []; + + arr.forEach(item => { + const keyValue = item[key]; + if (map.has(keyValue)) { + if (!duplicates.includes(keyValue)) { + duplicates.push(keyValue); + } + } else { + map.set(keyValue, true); + } + }); + + return duplicates; + }, + createHtmlFromJson: (html, data) => { + if (!html || util.isEmptyObject(html)) return null; + const { classNm, headerKey, rows } = JSON.parse(html); + if (!rows) return null; + const tableRows = rows + .map(row => { + const value = data?.[row.key] ?? null; + let displayValue; + if (typeof value === 'number') { + displayValue = util.autoComma(value, 0); + } else if (typeof value === 'string') { + displayValue = util.nvl(value, '-'); + } else { + displayValue = '-'; + } + return ` + + ${row.th} + ${displayValue} + + `; + }) + .join(''); + return ` +

+ `; + }, +}; + +/** + * + * 다이렉트로 import하여 사용하기 위해 export로 수정중 + * + * */ + +//객체 배열에서 특정 key의 value인 것을 추출 +export const getArrayByObjectKey = function (arr, key, value) { + return arr.filter(item => item[key] === value); +}; + +//소수점 1자리를 기준으로 점을 언더스코어로 변경 +export const numberDotToUnderscore = function (num) { + if (Number.isInteger(num)) { + return num.toString(); + } else { + return num.toFixed(1).replace('.', '_'); + } +}; + +export const stripHTML = function (htmlString) { + const parser = new DOMParser(); + const doc = parser.parseFromString(htmlString, 'text/html'); + return doc.body.textContent || ''; +}; + +//URL에서 매개변수 추출 +export function getParameterByName(name, url = window.location.search) { + name = name.replace(/[\[\]]/g, '\\$&'); + var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'), + results = regex.exec(url); + if (!results) return null; + if (!results[2]) return ''; + return decodeURIComponent(results[2].replace(/\+/g, ' ')); +} + +export function dateFormatForDB({ date: isoString, format = 'YYYY-MM-DD HH:MI:SS' }) { + if (!isoString) return ''; + + let date = new Date(isoString); + + let year = date.getFullYear(); + let month = (date.getMonth() + 1).toString().padStart(2, '0'); + let day = date.getDate().toString().padStart(2, '0'); + + let hours = date.getHours().toString().padStart(2, '0'); + let minutes = date.getMinutes().toString().padStart(2, '0'); + let seconds = date.getSeconds().toString().padStart(2, '0'); + + return ( + format + // + .replace('YYYY', year) + .replace('MM', month) + .replace('DD', day) + .replace('HH', hours) + .replace('MI', minutes) + .replace('SS', seconds) + ); +} + +//blob 다운로드 +//blob 다운로드 +export function downloadFromBlob(res, data) { + const url = URL.createObjectURL(new Blob([res.data], { type: res.data.type })); + const link = document.createElement('a'); + + const contentDisposition = res.headers?.['content-disposition']; // 파일 이름 + let fileName = data?.fileName || 'export'; //기본 파일 이름 + + if (contentDisposition) { + const [fileNameMatch] = contentDisposition.split(';').filter(str => str.includes('filename')); + if (fileNameMatch) { + [, fileName] = fileNameMatch.split('='); + // 파일명이 "UTF-8''" 등으로 인코딩되어 있을 수 있으니 decodeURIComponent 추가 + fileName = decodeURIComponent(fileName); + } + } + + link.href = url; + // 브라우저 인코딩 관련 이슈 방지를 위해 파일명에 대한 추가 decodeURI 처리 + link.download = decodeURIComponent(fileName).replace(/"/g, '').trim(); + link.style.display = 'none'; + document.body.appendChild(link); + link.click(); + + link.remove(); + URL.revokeObjectURL(url); +} + +export function downloadBlobAsFile(blob, filename = 'export') { + // 브라우저에 따라 인코딩 처리 햔재는 파이어폭스만 + const url = URL.createObjectURL(blob); + const encodedFilename = encodeURIComponent(filename); + const downloadLink = document.createElement('a'); + + downloadLink.href = url; + downloadLink.download = decodeURIComponent(encodedFilename); + + document.body.appendChild(downloadLink); + downloadLink.click(); + + document.body.removeChild(downloadLink); + URL.revokeObjectURL(url); +} + +export function viewFile(res, data) { + // Blob URL 생성 + const url = URL.createObjectURL(new Blob([res.data], { type: res.data.type })); + + let fileType = null; + let fileName = data?.fileName || 'export'; // 기본 파일 이름 + + // PDF 및 이미지 타입의 MIME 타입 확인 + if (res.data.type === 'application/pdf') { + fileType = 'pdf'; + } else if (res.data.type.startsWith('image/')) { + fileType = 'img'; + } else if (res.data.type === 'application/octet-stream') { + // Content-Disposition 헤더에서 파일 이름 추출 + const contentDisposition = res.headers?.['content-disposition']; + if (contentDisposition) { + const fileNameMatch = contentDisposition.match(/filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/); + if (fileNameMatch && fileNameMatch[1]) { + fileName = fileNameMatch[1].replace(/['"]/g, ''); // 파일 이름 추출 + fileName = decodeURIComponent(fileName); // URL 인코딩된 파일 이름을 디코딩 + } + } + + // 파일 확장자 추출 + const fileExtension = fileName.split('.').pop().toLowerCase(); + + // 확장자를 통해 파일 타입 결정 + if (fileExtension === 'pdf') { + fileType = 'pdf'; + } else if (['jpg', 'jpeg', 'png', 'gif', 'bmp', 'svg', 'webp'].includes(fileExtension)) { + fileType = 'img'; + } else { + console.error('지원하지 않는 파일 형식입니다.'); + } + } + + // URL과 파일 타입 반환 + return { url, fileType, fileName }; +} + +export function getToday() { + return getDate('today'); +} + +export function getDate(type, diff) { + const date = new Date(); + + switch (type) { + case 'year': + date.setFullYear(date.getFullYear() + diff); + break; + case 'month': + date.setMonth(date.getMonth() + diff); + break; + case 'day': + date.setDate(date.getDate() + diff); + break; + case 'today': + date.setDate(date.getDate()); + break; + default: + console.log('잘못된 타입입니다. 올바른 타입: 년, 월, 일'); + return; + } + + const year = date.getFullYear(); + const month = (date.getMonth() + 1).toString().padStart(2, '0'); + const day = date.getDate().toString().padStart(2, '0'); + + return `${year}${month}${day}`; +} + +//promise 처리 +export const byPromise = function (actions) { + return actions.reduce((promise, action) => { + return promise.then(async () => { + if (typeof action === 'function') { + return await action(); + } else { + return await action; + } + }); + }, Promise.resolve()); +}; + +export const getMessage = (msgGroup, msgKey, innerText, fix) => { + let resultString = GLOBAL.MESSAGE[msgGroup][msgKey]; + const prefix = fix?.prefix || ''; + const suffix = fix?.suffix || ''; + + if (innerText) { + for (const [key, value] of Object.entries(innerText)) { + const regex = new RegExp(`\\$\{${key}\}`, 'g'); + resultString = resultString.replace(regex, value); + } + } + + if (resultString) resultString = resultString.replace(/\\n/g, '\n'); + return resultString ? `${prefix}${resultString}${suffix}` : '안내 메시지 로딩 오류 - 관리자에게 문의하세요.'; +}; + +// global.js의 message를 읽어오는 alert +export const gAlert = (msgGroup, msgKey, innerText, fix) => { + alert(getMessage(msgGroup, msgKey, innerText, fix)); +}; + +// message를 confirm +export const gConfirm = (msgGroup, msgKey, innerText, fix) => { + return window.confirm(getMessage(msgGroup, msgKey, innerText, fix)); +}; + +// message를 함수 리턴 +export const gMessage = getMessage; + +// message를 save후 응답까지 처리 +export const gSaveCommonConfirm = async ({ message, api = async () => {}, param = {}, success, fail, prefix }) => { + try { + if (!gConfirm('CONFIRM', `${message}_QUEST`, null, { prefix })) return; + + const result = await api(param, { isAlert: false }); + + if (result?.code !== 200) return; + + const rep = message === 'UPLOAD' ? result.data.data : result.data; + + if (rep > 0) { + gAlert('INFO', `${message}_COMPLETE`); + await success?.(); + } else { + gAlert('ERROR', `${message}_FAIL`); + await fail?.(); + } + } catch (error) { + console.error('오류 발생:', error); // 시큐어코딩 관련 수정 : 오류 정보를 로그로 출력 + } +}; + +export const nullToValue = (text, { value = '-', prefix = '', suffix = '' } = {}) => { + if (!text || text === value) { + return value; + } + return `${prefix}${text}${suffix}`; +}; + +export const filterArrayOfObjectsByKeys = (arrayOfObjects, keys) => { + return arrayOfObjects.map(obj => { + return keys.reduce((filteredObj, key) => { + if (obj.hasOwnProperty(key)) { + filteredObj[key] = obj[key]; + } + return filteredObj; + }, {}); + }); +}; + +export const isMobile = () => { + const width = window.innerWidth > 0 ? window.innerWidth : window.screen.width; + + return width < GLOBAL.MOBILE_SIZE; +};