| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317 |
- /*
- * 전체 신호제어기를 메모리에 저장해서 등록함(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 = '<tr id="'+nodeId+'">' +
- '<td style="width:5%">' + addr1 + '</td>' +
- '<td style="width:15%"><a style="margin: auto;" href="javascript:goPanToInt(\'' + nodeId + '\',' + lng + ',' + lat + ')">' + nodeId + '</a></td>' +
- '<td style="width:15%"><a href="javascript:goPanToInt(\'' + name + '\',' + lng + ',' + lat + ')">' + name + '</a></td>' +
- /*'<td style="width:10%">'+el.date+'</td>'+*/
- '<td style="width:3%" id="oprTrans">'+el.oprTrans+'</td>' +
- '<td style="width:3%" id="oprInd">'+el.oprInd+'</td>' +
- '<td style="width:3%" id="oprTurnoff">'+el.oprTurnoff+'</td>' +
- '<td style="width:3%" id="oprBlink">'+el.oprBlink+'</td>' +
- '<td style="width:3%" id="oprManual">'+el.oprManual+'</td>' +
- '<td style="width:7%" id="errScu">'+el.errScu+'</td>' +
- '<td style="width:7%" id="errCenter">'+el.errCenter+'</td>' +
- '<td style="width:7%" id="errCont">'+el.errCont+'</td>' +
- '<td style="width:7%" id="counter">'+el.counter+'</td>'+
- '<td style="width:10%" id="date">'+el.date+'</td>' +
- '</tr>';
- }
- });
-
- if (tmpHtml == "") {
- tmpHtml = '<tr id="'+nodeId+'">' +
- '<td style="width:5%">' + addr1 + '</td>' +
- '<td style="width:15%"><a style="margin: auto;" href="javascript:goPanToInt(\'' + nodeId + '\',' + lng + ',' + lat + ')">' + nodeId + '</a></td>' +
- '<td style="width:15%"><a href="javascript:goPanToInt(\'' + name + '\',' + lng + ',' + lat + ')">' + name + '</a></td>' +
- /*'<td style="width:10%">'+el.date+'</td>'+*/
- '<td style="width:3%" id="oprTrans">-</td>' +
- '<td style="width:3%" id="oprInd">-</td>' +
- '<td style="width:3%" id="oprTurnoff">-</td>' +
- '<td style="width:3%" id="oprBlink">-</td>' +
- '<td style="width:3%" id="oprManual">-</td>' +
- '<td style="width:7%" id="errScu">-</td>' +
- '<td style="width:7%" id="errCenter">-</td>' +
- '<td style="width:7%" id="errCont">-</td>' +
- '<td style="width:7%" id="counter">-</td>'+
- '<td style="width:10%" id="date">-</td>' +
- '</tr>';
- }
- 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);
- }
- };
|