/* * 전체 신호제어기를 메모리에 저장해서 등록함(Bean 으로 등록하면 됨) */ var _mapSignal = new HashMap(); var sigInfowindow = null; var cvibMarkerArr = []; var signalArr = []; var _Flag = null; var siginfoPhaseDetailWin = null; var _CvibObjArr = []; var _CvibCircleImgArr = []; var _CvibOutCircleImgArr = []; var _CvibInfoImgArr = []; var _CvibInfoCWImgArr = []; var _CvibInfoULImgArr = []; var _CvibInfoUtunImgArr = []; var _CvibTimeId = null; var overLayData; function mapZoomBound() { _Level = map.getLevel(); getSignalInfo(); if (_Level === 0 || _Level === 1) { // _CvibNodeArr.forEach(function (el) { // el.allDrawCircle(); // el.allDrawCvib(); // }); signalArr.forEach(function (el) { if (el.mapCircle) { el.mapCircle.setMap(null); } }); if (customOverlay) { customOverlay.setMap(null); } } else { _CvibNodeArr.forEach(function (el) { el.emptyCvibCircleImg(); el.emptyCvibInfoImg(); }); if (customOverlay != null) { customOverlayFnc(overLayData.name, overLayData.lng, overLayData.lat); } //_CvibNodeArr = [] } } function mapMoveBound() { // _CvibNodeArr = []; getSignalInfo(); // _CvibNodeArr.forEach(function (el) { // el.emptyCvibCircleImg(); // el.emptyCvibInfoImg(); // }); if(_Level == 0 || _Level == 1){ _CvibNodeArr.forEach(function (el) { for (var ii = 0; ii < signalArr.length; ii++) { if(el.nodeId == signalArr[ii].nodeId){ el.emptyCvibCircleImg(); el.emptyCvibInfoImg(); } } }); _CvibNodeArr.forEach(function (el) { for (var ii = 0; ii < signalArr.length; ii++) { if(el.nodeId == signalArr[ii].nodeId){ el.setCircle(); el.setCvibInfo(); } } }); } else { _CvibNodeArr.forEach(function (el) { for (var ii = 0; ii < signalArr.length; ii++) { if(el.nodeId == signalArr[ii].nodeId){ el.emptyCvibCircleImg(); el.emptyCvibInfoImg(); } } }); if (customOverlay != null) { customOverlayFnc(overLayData.name, overLayData.lng, overLayData.lat); } //_CvibNodeArr = [] } } function emptySignalArr(arr) { if (arr != null) { arr.forEach(function (el) { el.setMap(null); }); arr = 0; } } function getSignalInfo() { var url = 'getSignalInfo.do'; var param = '&minX=' + map.getBounds().getSouthWest().getLng() + '&minY=' + map.getBounds().getSouthWest().getLat() + '&maxX=' + map.getBounds().getNorthEast().getLng() + '&maxY=' + map.getBounds().getNorthEast().getLat(); requestService(url, param, getSignalInfoCallback); } function getSignalInfoCallback(json) { signalArr = []; var data = json; cvibMarkerArr.forEach(function (el) { if (el.getMap() != null) { el.setMap(null); } }); var bottomCvibInfoList = ""; cvibMarkerArr = []; //cvibMarkerArr =[]; for (var ii = 0; ii < data.length; ii++) { //if(data[ii].addr1 == null||data[ii].addr1=='-')continue; var nodeId = data[ii].nodeid; var addr1 = data[ii].addr1; var addr2 = data[ii].addr2; var addr3 = data[ii].addr3; var lat = data[ii].lat; var lng = data[ii].lng; var name = data[ii].name; var tmpHtml=""; _CvibNodeArr.forEach(function(el) { if(el.nodeId == nodeId){ tmpHtml = '' + '' + addr1 + '' + '' + nodeId + '' + '' + name + '' + /*''+el.date+''+*/ ''+el.oprTrans+'' + ''+el.oprInd+'' + ''+el.oprTurnoff+'' + ''+el.oprBlink+'' + ''+el.oprManual+'' + ''+el.errScu+'' + ''+el.errCenter+'' + ''+el.errCont+'' + ''+el.counter+''+ ''+el.date+'' + ''; } }); if (tmpHtml == "") { tmpHtml = '' + '' + addr1 + '' + '' + nodeId + '' + '' + name + '' + /*''+el.date+''+*/ '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-'+ '-' + ''; } var signal = new Signal(nodeId, name, lat, lng, addr1, addr2, addr3); signalArr.push(signal); bottomCvibInfoList += tmpHtml; } signalArr.forEach(function (el) { if (el.mapCircle.getMap() == null) { el.mapCircle.setMap(map); } //if (_Level < 2) el.mapCircle.setMap(null); }) // 하단 리스트 클리어 // 하단 리스트 초기작업 $('#iframeBottomList').contents().find('#cvibBottomInfo').html(bottomCvibInfoList); } /*function drawSignal(signal) { if(sigInfowindow != null) sigInfowindow.close(); }*/ function findSignal(Id) { return _mapSignal.get(Id); }; function addSignal(Id, Obj) { _mapSignal.put(Id, Obj); return _mapSignal.size(); }; //#define RadToDeg(x) (57.29577951 * x) //#define DegToRad(x) (0.017453293 * x) Number.prototype.toRadians = function () { return this * 0.017453293; //return this * Math.PI / 180; }; Number.prototype.toDegrees = function () { return this * 57.29577951; //return this * 180 / Math.PI; }; /* * 좌표를 저장하는 Class * Lat(Y) = 37.564974, Lng(X) = 126.978517; * kakao.maps.LatLng(Lat, Lng) */ function SCoord(Lat, Lng) { this.Lat = parseFloat(Lat); this.Lng = parseFloat(Lng); }; function SignalLinkDraw(ALink, BLink) { this.initialize(ALink, BLink); } /* * 신호제어기 정보 */ function Signal(nodeId, name, lat, lng, addr1, addr2, addr3) { this.initialize(nodeId, name, lat, lng, addr1, addr2, addr3); }; Signal.prototype = { Lat: 0, Lng: 0, drawSignal: null, /* 현재 표출될 SignalDraw class */ listDrawSignal: null, /* 표출현시 목록을 저장할 list array: 최초 한번만 좌표를 계산하도록 하기 위함, 성능에 따라 map 사용 가능 */ mapCircle: null, initialize: function (nodeId, name, lat, lng, addr1, addr2, addr3) { this.nodeId = nodeId; this.name = name; this.addr1 = addr1; this.addr2 = addr2; this.addr3 = addr3; this.Lat = lat; this.Lng = lng; this.listDrawSignal = []; var markerSize = 0; if (_Level >= 5) { markerSize = 10; } else if (_Level >= 3) { markerSize = 20; } else { markerSize = 20; } let offset = markerSize / 2; var icon = new kakao.maps.MarkerImage( // 'images/TrafficLight25.png', 'images/sig5.png', new kakao.maps.Size(markerSize * 3, markerSize), { alt: "신호현시", offset: new kakao.maps.Point(offset * 3, offset) }, ); this.mapCircle = new kakao.maps.Marker({ position: new kakao.maps.LatLng(lat, lng), image: icon, zIndex: 10 }); this.mapCircle if (_Level < 7) { this.mapCircle.setMap(map); } cvibMarkerArr.push(this.mapCircle); kakao.maps.event.addListener(this.mapCircle, 'mouseover', function () { //신호 이미지 마우스올렷을때 [이름 생성] customOverlayFnc(name, lng, lat); }); kakao.maps.event.addListener(this.mapCircle, 'mouseout', function () { // 신호 이미지 마우스아웃시 [이름 사라짐] if (customOverlay) customOverlay.setMap(null); }); kakao.maps.event.addListener(this.mapCircle, 'click', function () { var url = 'cvibInfoDetail.do?nodeId=' + nodeId; var options = 'scrollbars=no,toolbar=no,location=no,resizable=no,status=no,menubar=no,width=1300px,height=590px,left=0,top=0'; _CvibInfoDetailPop = window.open(url, 'cvibChild', options); }); }, empty: function (map) { if (this.drawSignal.mapCircle != null) this.drawSignal.mapCircle.setMap(null); } };