diff --git a/src/main/java/geoinfo/api/geoinfo/service/impl/GeoinfoApiV1ServiceImpl.java b/src/main/java/geoinfo/api/geoinfo/service/impl/GeoinfoApiV1ServiceImpl.java index 4cd45107..26a5765e 100644 --- a/src/main/java/geoinfo/api/geoinfo/service/impl/GeoinfoApiV1ServiceImpl.java +++ b/src/main/java/geoinfo/api/geoinfo/service/impl/GeoinfoApiV1ServiceImpl.java @@ -2,6 +2,7 @@ package geoinfo.api.geoinfo.service.impl; import geoinfo.api.geoinfo.service.GeoinfoApiV1Mapper; import geoinfo.api.geoinfo.service.GeoinfoApiV1Service; +import geoinfo.util.MyUtil; import java.util.ArrayList; import java.util.HashMap; @@ -27,6 +28,12 @@ public class GeoinfoApiV1ServiceImpl implements GeoinfoApiV1Service { public int handleApiService(HttpServletRequest request, HashMap params, String spName, JSONObject jsonResponse) throws Exception { + if( params.get("ipAddress") == null ) { + String ipAddress = MyUtil.getIpAddress(request); + params.put("ipAddress", ipAddress); + } + + //호출 프로시저 유효성 체크 spName = spName.trim(); diff --git a/src/main/java/geoinfo/map/left/MapLeftController.java b/src/main/java/geoinfo/map/left/MapLeftController.java index fc4c6ddc..699f8a53 100644 --- a/src/main/java/geoinfo/map/left/MapLeftController.java +++ b/src/main/java/geoinfo/map/left/MapLeftController.java @@ -271,6 +271,7 @@ public class MapLeftController { JSONObject jsonResponse = new JSONObject(); HashMap handleApiServiceParams = new HashMap(); handleApiServiceParams.put("holeCode", params.get("hcode")); + handleApiServiceParams.put("apiKey", "91MhmaF8YlMZJlg6H4zruj8B5sKZWeRSoA5N4uXZjXg"); geoinfoApiV1Service.handleApiService(request, handleApiServiceParams, "sp-get-selectclass-info-h", jsonResponse); ArrayList> dataList = (ArrayList>)jsonResponse.get("data"); if( dataList != null && 0 < dataList.size() ) { @@ -674,6 +675,7 @@ public class MapLeftController { HashMap handleApiServiceParams = new HashMap(); handleApiServiceParams.put("projCode", params.get("pcode")); + handleApiServiceParams.put("apiKey", "91MhmaF8YlMZJlg6H4zruj8B5sKZWeRSoA5N4uXZjXg"); geoinfoApiV1Service.handleApiService(request, handleApiServiceParams, "sp-get-selectclass-info-p", jsonResponse); EgovMap projectCount = mapLeftService.selectTblProjectCount(params); diff --git a/src/main/java/geoinfo/util/MyUtil.java b/src/main/java/geoinfo/util/MyUtil.java index dc4c3e24..de28df28 100644 --- a/src/main/java/geoinfo/util/MyUtil.java +++ b/src/main/java/geoinfo/util/MyUtil.java @@ -872,6 +872,37 @@ public final class MyUtil { + public static String getIpAddress( HttpServletRequest request ) throws Exception { + String clientIp = ""; + clientIp = request.getHeader("X-Forwarded-For"); + + if (clientIp == null || clientIp.length() == 0 || "unknown".equalsIgnoreCase(clientIp)) { + clientIp = request.getHeader("Proxy-Client-IP"); + } + if (clientIp == null || clientIp.length() == 0 || "unknown".equalsIgnoreCase(clientIp)) { + clientIp = request.getHeader("WL-Proxy-Client-IP"); + } + if (clientIp == null || clientIp.length() == 0 || "unknown".equalsIgnoreCase(clientIp)) { + clientIp = request.getHeader("HTTP_CLIENT_IP"); + } + if (clientIp == null || clientIp.length() == 0 || "unknown".equalsIgnoreCase(clientIp)) { + clientIp = request.getHeader("HTTP_X_FORWARDED_FOR"); + } + if (clientIp == null || clientIp.length() == 0 || "unknown".equalsIgnoreCase(clientIp)) { + clientIp = request.getHeader("X-Real-IP"); + } + if (clientIp == null || clientIp.length() == 0 || "unknown".equalsIgnoreCase(clientIp)) { + clientIp = request.getHeader("X-RealIP"); + } + if (clientIp == null || clientIp.length() == 0 || "unknown".equalsIgnoreCase(clientIp)) { + clientIp = request.getHeader("REMOTE_ADDR"); + } + if (clientIp == null || clientIp.length() == 0 || "unknown".equalsIgnoreCase(clientIp)) { + clientIp = request.getRemoteAddr(); + } + + return clientIp; + } } diff --git a/src/main/resources/egovframework/sqlmap/mapper/api/geoinfo/GeoinfoApiV1Mapper.xml b/src/main/resources/egovframework/sqlmap/mapper/api/geoinfo/GeoinfoApiV1Mapper.xml index 8a06b251..ad00aa0d 100644 --- a/src/main/resources/egovframework/sqlmap/mapper/api/geoinfo/GeoinfoApiV1Mapper.xml +++ b/src/main/resources/egovframework/sqlmap/mapper/api/geoinfo/GeoinfoApiV1Mapper.xml @@ -14,7 +14,9 @@ #{mastCompany, jdbcType=VARCHAR}, #{addr, jdbcType=VARCHAR}, #{startDate, jdbcType=VARCHAR}, - #{endDate, jdbcType=VARCHAR} + #{endDate, jdbcType=VARCHAR}, + #{apiKey, jdbcType=VARCHAR}, + #{ipAddress, jdbcType=VARCHAR} )) @@ -25,55 +27,73 @@ #{mastCompany, jdbcType=VARCHAR}, #{addr, jdbcType=VARCHAR}, #{startDate, jdbcType=VARCHAR}, - #{endDate, jdbcType=VARCHAR} + #{endDate, jdbcType=VARCHAR}, + #{apiKey, jdbcType=VARCHAR}, + #{ipAddress, jdbcType=VARCHAR} ) FROM DUAL @@ -92,7 +112,9 @@ #{maxX, jdbcType=DECIMAL}, #{maxY, jdbcType=DECIMAL}, #{startDate, jdbcType=VARCHAR}, - #{endDate, jdbcType=VARCHAR} + #{endDate, jdbcType=VARCHAR}, + #{apiKey, jdbcType=VARCHAR}, + #{ipAddress, jdbcType=VARCHAR} )) @@ -107,13 +129,17 @@ #{maxX, jdbcType=DECIMAL}, #{maxY, jdbcType=DECIMAL}, #{startDate, jdbcType=VARCHAR}, - #{endDate, jdbcType=VARCHAR} + #{endDate, jdbcType=VARCHAR}, + #{apiKey, jdbcType=VARCHAR}, + #{ipAddress, jdbcType=VARCHAR} ) FROM DUAL @@ -125,451 +151,595 @@ diff --git a/src/main/webapp/WEB-INF/views/map/index.jsp b/src/main/webapp/WEB-INF/views/map/index.jsp index c19a19a2..bd1649c0 100644 --- a/src/main/webapp/WEB-INF/views/map/index.jsp +++ b/src/main/webapp/WEB-INF/views/map/index.jsp @@ -271,6 +271,10 @@ function LoadingShow() { 광산 +
  • + 관정 +
  • @@ -791,34 +795,31 @@ function LoadingShow() { var text = ""; for(var i=0; i'; - text += ''+data.projectYn[i].holeName+''; - - text += data.projectYn[i].depth != null ? ''+data.projectYn[i].depth+'' : ''; - text += data.projectYn[i].el != null ? ''+data.projectYn[i].el+'' : ''; - if(data.projectYn[i].wl == "-99999"){ - text +='심도이하' - }else{ - text += data.projectYn[i].wl != null ? ''+data.projectYn[i].wl+'' : ''; - - } - if( (data.projectYn[i].spt == 'Y')||(data.projectYn[i].tcrrqd == 'Y') ||(data.projectYn[i].dsf == 'Y') ||(data.projectYn[i].pressuremeter == 'Y') - ||(data.projectYn[i].slickenside == 'Y') ||(data.projectYn[i].q == 'Y') ||(data.projectYn[i].rmr == 'Y') ||(data.projectYn[i].waterpressure == 'Y') - ||(data.projectYn[i].permeablity == 'Y')||(data.projectYn[i].conePenetration == 'Y')){ -// text += 'V'; //기본현장 - }else{ -// text += 'V'; //기본현장 - } - - - - + if (matchingBorehole) { + + text += ''; + text += ''+data.projectYn[i].holeName+''; + + text += data.projectYn[i].depth != null ? ''+data.projectYn[i].depth+'' : ''; + text += data.projectYn[i].el != null ? ''+data.projectYn[i].el+'' : ''; + if(data.projectYn[i].wl == "-99999"){ + text +='심도이하' + }else{ + text += data.projectYn[i].wl != null ? ''+data.projectYn[i].wl+'' : ''; + + } + if( (data.projectYn[i].spt == 'Y')||(data.projectYn[i].tcrrqd == 'Y') ||(data.projectYn[i].dsf == 'Y') ||(data.projectYn[i].pressuremeter == 'Y') + ||(data.projectYn[i].slickenside == 'Y') ||(data.projectYn[i].q == 'Y') ||(data.projectYn[i].rmr == 'Y') ||(data.projectYn[i].waterpressure == 'Y') + ||(data.projectYn[i].permeablity == 'Y')||(data.projectYn[i].conePenetration == 'Y')){ +// text += 'V'; //기본현장 + }else{ +// text += 'V'; //기본현장 + } + // Number(null) is 0. // 시료정보( 기본물성 ) diff --git a/src/main/webapp/com/css/map-service.css b/src/main/webapp/com/css/map-service.css index 73a36035..b2e093f7 100644 --- a/src/main/webapp/com/css/map-service.css +++ b/src/main/webapp/com/css/map-service.css @@ -741,7 +741,7 @@ header .global-link-wrapper { position: relative; float: right; display: inline-block; - margin-top: 20px; + margin-top: 0px; z-index: 2; } .map-right-control-wrapper::after { @@ -752,7 +752,7 @@ header .global-link-wrapper { .map-right-control-group { background-color: #fff; box-shadow: 4px 4px 10px rgba(0,0,0,0.2); - margin-top: 20px; + margin-top: 11px; border-radius: 10px; border: 1px solid #b6b6b6; overflow: hidden; @@ -869,6 +869,9 @@ header .global-link-wrapper { .map-right-btn-group > li .map-right-btn.map-btn-icon-mine::before { background: url(../img/map-service/icon/ico_map_right_control_mine.png) no-repeat 50% 50%; } +.map-right-btn-group > li .map-right-btn.map-btn-icon-well::before { + background: url(../img/map-service/icon/ico_map_right_control_well.png) no-repeat 50% 50%; +} diff --git a/src/main/webapp/com/img/map-service/icon/ico_map_right_control_well.png b/src/main/webapp/com/img/map-service/icon/ico_map_right_control_well.png new file mode 100644 index 00000000..1f8ad333 Binary files /dev/null and b/src/main/webapp/com/img/map-service/icon/ico_map_right_control_well.png differ diff --git a/src/main/webapp/js/map/main/map.js b/src/main/webapp/js/map/main/map.js index 4e84f4d8..3b8df58a 100644 --- a/src/main/webapp/js/map/main/map.js +++ b/src/main/webapp/js/map/main/map.js @@ -79,7 +79,6 @@ OpenLayers.Control.DragPopup = OpenLayers.Class(OpenLayers.Control, { return OpenLayers.Control.prototype.deactivate.apply(this, arguments); } return false; - }, onMouseDown: function(evt) { @@ -306,13 +305,15 @@ var T_LAND_AS = "UGG_LTHF_AS"; var BASE_MAP; // 지도 var HOLE_LAYER; // 시추공 레이어 -var HOLE_LAYER_M; // 시추공 레이어2 -var GEOLOGY_LAYER; // 지질도 레이어 변수 +var HOLE_LAYER_M; // 시추공 레이어2 +var GEOLOGY_LAYER; // 지질도/광물 레이어 +var MINERAL_LAYER; // 광물 레이어 +var MINE_LAYER; // 광산 레이어 var HOLE_SELECT; // 시추공 선택 var HOLE_SELECT2; // 3d지반 -var HOLE_AREA; // 영역 선택 -var HOLE_DRAW; // 그리기 도구 -var HOLE_TOOLTIP; // 툴팁 +var HOLE_AREA; // 영역 선택 +var HOLE_DRAW; // 그리기 도구 +var HOLE_TOOLTIP; // 툴팁 var HOLE_DRILLING; // 발주기관 시추공 @@ -383,8 +384,6 @@ var autoCircle = false; var circleDraw = false; -var MINE_POPUP = null; // 광산 팝업 객체를 저장할 변수 -var mineDragControl = null; // 광산 팝업의 드래그 컨트롤을 저장할 변수 var geologyLayers = { "지질도_5만_지질도": "L_50K_Geology_Map", "지질도_25만_지질도": "L_250K_Geology_Map", @@ -400,19 +399,9 @@ var geologyLayers = { "지화학도_리튬": "L_geochemMP_LI", "지화학도_마그네슘": "L_geochemMP_MGO", "지화학도_망간": "L_geochemMP_MNO", - "지화학도_바나듐": "L_geochemMP_V", + "지화학도_바나듐/아연/지르코늄/철/칼륨/칼슘/코발트/크롬/티탄/납/구리": "L_geochemMP_V", "지화학도_바륨": "L_geochemMP_BA", "지화학도_스트론튬": "L_geochemMP_SR", - "지화학도_아연": "L_geochemMP_V", - "지화학도_지르코늄": "L_geochemMP_V", - "지화학도_철": "L_geochemMP_V", - "지화학도_칼륨": "L_geochemMP_V", - "지화학도_칼슘": "L_geochemMP_V", - "지화학도_코발트": "L_geochemMP_V", - "지화학도_크롬": "L_geochemMP_V", - "지화학도_티탄": "L_geochemMP_V", - "지화학도_납": "L_geochemMP_V", - "지화학도_구리": "L_geochemMP_V", "탄전지질도_1만_탄전지질도": "L_10k_coalfield_geologic_map", "탄전지질도_2.5만_탄전지질도": "L_25k_coalfield_geologic_map", "해저지질도_탐사항적도": "Marine_geology_prospect", @@ -793,6 +782,28 @@ function initApp(param){ BASE_MAP.addLayer(GEOLOGY_LAYER); // ▲▲▲ 지질도 WMS 레이어 생성 ▲▲▲ + + + // 광산정보 + var mineBaseUrl = "https://apis.data.go.kr/1480523/GeologicalService/getMineWMS" + + "?ServiceKey=L1z0zEpxNLB0Sqwv97WAIyL1lB%2BshPemDLNaG9hy9g3BzbkXRVG2%2FaSTZ7PiAAivgaCYn9p1tLmq2keiC4yFZA%3D%3D" + + "&srs=EPSG%3A3857" + // 정상 동작하는 요청의 버전 + "&format=png" + + "&transparent=true"; + MINE_LAYER = new OpenLayers.Layer.WMS( + "Mine Map", + mineBaseUrl, // 파라미터가 포함된 URL 사용 + {}, // params 객체는 비워둠 + { + isBaseLayer: false, + visibility: false, + singleTile: true, + opacity: 0.7 + } + ); + BASE_MAP.addLayer(MINE_LAYER); + + // ▼▼▼ 레이어 순서(Z-index) 조정 코드 ▼▼▼ if (GEOLOGY_LAYER) { // 배경 지도(VWorld)를 가장 아래(index 0)에 둡니다. @@ -800,9 +811,12 @@ function initApp(param){ // 지질도 레이어를 그 위(index 1)에 둡니다. BASE_MAP.setLayerIndex(GEOLOGY_LAYER, 1); + + // 광산 레이어를 그 위(index 2)에 둡니다. + BASE_MAP.setLayerIndex(MINE_LAYER, 2); - // 시추공 레이어를 가장 위(index 2)로 올립니다. - BASE_MAP.setLayerIndex(HOLE_LAYER, 2); + // 시추공 레이어를 가장 위(index 3)로 올립니다. + BASE_MAP.setLayerIndex(HOLE_LAYER, 3); } // [추가] 레이어 순서(Z-index) 조정 코드 ▲▲▲ @@ -3562,6 +3576,10 @@ function initControl(){ } initCoordinateRadioControl(); + + if( GEOLOGY_LAYER && GEOLOGY_LAYER.active ) { + GEOLOGY_LAYER.deactivate(); + } } function initCoordinateControl(){ @@ -4999,41 +5017,40 @@ function geologyMode() { } } -function geologyMine() { +/* 20251104 기준 광물 정보를 호출하는 버튼이 존재하지 않음. 광물 정보를 호출하면 광물정보가 나타나도록 구현은 되어 있음 */ +function geologyMineral() { initControl(); // 다른 컨트롤 상태 초기화 // 이전에 생성된 팝업과 관련 이벤트 리스너를 확실하게 제거합니다. - $(document).off('mousemove.minePopup').off('mouseup.minePopup'); - if ($('#geologyMinePopup').length > 0) { - $('#geologyMinePopup').remove(); + $(document).off('mousemove.mineralPopup').off('mouseup.mineralPopup'); + if ($('#geologyMineralPopup').length > 0) { + $('#geologyMineralPopup').remove(); } // 1. 팝업에 표시할 목록 데이터를 배열로 정의합니다. - var mineLayerList = [ + var mineralLayerList = [ "지화학도_전기전도도", "지화학도_수소이온농도도", "지화학도_니켈", "지화학도_루비듐", "지화학도_리튬", "지화학도_마그네슘", "지화학도_망간", - "지화학도_바나듐", "지화학도_바륨", "지화학도_스트론튬", "지화학도_아연", - "지화학도_지르코늄", "지화학도_철", "지화학도_칼륨", "지화학도_칼슘", - "지화학도_코발트", "지화학도_크롬", "지화학도_티탄", "지화학도_납", "지화학도_구리" + "지화학도_바나듐/아연/지르코늄/철/칼륨/칼슘/코발트/크롬/티탄/납/구리", "지화학도_바륨", "지화학도_스트론튬" ].reverse(); // 2. 팝업창의 HTML 구조를 만듭니다. var popupHtml = - '