OpenMap.Layer.DynamicServerCC = OpenLayers.Class(OpenLayers.Layer.XYZ, { layerId : "", layertype : "", conts: "", filter: "", unit: "", measure: "", color: "", border: "", // 쿼리 주제도 q: "", qparams: "", qparam1: "", // 환자안전 durYmd: "", orgClassList: "", infCd: "", // 보건의료 stdYmd: "", sex : "", age : "", stateGubun : "", infoGubun : "", layerName: "", team: "", categoryFilter: [], layerLevel:20, params: null, optionId: null, icon : undefined, color : undefined, singleTile: false, //zool level cluster 추가 (홍성민 2016.02.25) zCluster: false, //각종 주제도 속성 ///// layerProperty: null, isServerSide: true, preventBrowserCache: false, //////////////////// getName: function() { return this.layerName; //this.layerProperty.LAYER_NM; }, getLayerId: function() { // //return this.layerProperty.LAYER_ID; // // //layerProperty에) 컨텐츠ID와 가중치들 목록, 색상, Measure // var layerId = "DYNAMIC.CH.BL."; // layerId += this.layerProperty.measure; // layerId += "."; // layerId += this.layerProperty.color; // // this.layerProperty.contents.forEach(function(c) { // layerId += "."; // layerId += c.contentId; // layerId += "."; // layerId += c.weight; // }); return this.layerId; }, initialize: function(options) { var spec = options.baseMapsSpec.spec; this.layerProperty = options.layerProperty; this.url = []; for(var i=0;i= 0) { layerIdEx = layerIdEx + '&conts=' + this.conts; } else { layerIdEx = layerIdEx + '&cont=' + this.conts; } if(this.filter != "") { layerIdEx = layerIdEx + '&filter=' + this.filter; } if(this.unit != "") { layerIdEx = layerIdEx + '&unit=' + this.unit; } if(this.measure != "") { layerIdEx = layerIdEx + '&measure=' + this.measure; } if(this.border != "") { layerIdEx = layerIdEx + '&border=' + this.border; } // 쿼리주제도 if(this.q != "" && this.q != "undefined"){ layerIdEx = layerIdEx + '&q=' + this.q; } if(this.qparams != ""){ layerIdEx = layerIdEx + '&qparams=' + this.qparams; } if(this.qparam1 != "" && this.qparam1 != "undefined"){ layerIdEx = layerIdEx + '&qparam1=' + this.qparam1; } // 쿼리주제도:end // 보건의료 if(this.stdYmd != ""){ layerIdEx = layerIdEx + '&ymd=' + this.stdYmd; } if(this.sex != ""){ layerIdEx = layerIdEx + '&sex=' + this.sex; } if(this.age != ""){ layerIdEx = layerIdEx + '&age=' + this.age; } if(this.stateGubun != ""){ layerIdEx = layerIdEx + '&stateGubun=' + this.stateGubun; } if(this.infoGubun != ""){ layerIdEx = layerIdEx + '&infoGubun=' + this.infoGubun; } // 보건의료:end // 환자안전 if(this.durYmd != ""){ layerIdEx = layerIdEx + '&durYmd=' + this.durYmd; } if(this.orgClassList != ""){ layerIdEx = layerIdEx + '&orgClassList=' + this.orgClassList; } if(this.infCd != ""){ layerIdEx = layerIdEx + '&infCd=' + this.infCd; } // 환자안전:end if(this.icon != undefined) { layerIdEx = layerIdEx + '&image=' + this.icon + '&color=' + this.color; }else if(this.color != "") { layerIdEx = layerIdEx + '&color=' + this.color; } if(Array.isArray(this.categoryFilter) == true) { if(this.categoryFilter.length > 0) { this.categoryFilter.forEach(function(value, index) { layerIdEx = layerIdEx + '&category-filter=' + value; }); } } else { layerIdEx = layerIdEx + '&category-filter=' + this.categoryFilter; } if(this.optionId != null) { layerIdEx = layerIdEx + "&optionId=" + this.optionId; } if(this.team != "") { layerIdEx = layerIdEx + '&team=' + this.team; } if(this.preventBrowserCache == true) { layerIdEx = layerIdEx + '&tm=' + Math.floor(Date.now() / 1000); } if(this.predict == true) { layerIdEx = layerIdEx + '&predict=true'; } //opacity : print 기능과 통일시키기 위해 추가한다. 서버가 사용하지는 않는다. //2016.01 taeho layerIdEx = layerIdEx + '&opacity=' + this.opacity; var xyz = this.getXYZ(bounds); // console.log(xyz); // TODO: remove if (xyz == null) { return null; } // var xyz = {}; //// var res = map.getResolution(); // var res = this.getServerResolution(); // var tileOrigin = new OpenLayers.LonLat(-30000, -60000); //// var tileOrigin = options.tileOrigin; // // var originTileX = (tileOrigin.lon + (res * OpenLayers.Map.TILE_WIDTH / 2)); // var originTileY = (tileOrigin.lat + (res * OpenLayers.Map.TILE_HEIGHT / 2)); // // var center = bounds.getCenterLonLat(); // // xyz.x = (Math.round((center.lon - originTileX) / (res * OpenLayers.Map.TILE_WIDTH))); // xyz.y = (Math.round((center.lat - originTileY) / (res * OpenLayers.Map.TILE_HEIGHT))); // xyz.z = 14 - this.getServerZoom(); // xyz.z = 14 - xyz.z + 1; if(this.zCluster && this.getZoomCluster) { //zc layerIdEx = layerIdEx + '&zc=' + this.getZoomCluster(xyz.z); // OpenMap/Config.js >> openmate } if(this.params != null) { for(var param in this.params) { layerIdEx = layerIdEx + "&" + param + "=" + this.params[param]; } } var serverIndex = Math.abs((xyz.x + xyz.y) % this.url.length); if (serverIndex < 0) { serverIndex = 0; } else if (serverIndex > 3) { serverIndex = 3; } var xyzUrl = OpenLayers.String.format(this.url[serverIndex], xyz); xyzUrl += "&layer=" + layerIdEx + (this.singleTile ? ("&s=" + bounds.left + "," + bounds.top + "," + bounds.right + "," + bounds.bottom) : ""); // console.log(xyzUrl); // TODO: remove return xyzUrl; }, setMap: function(map) { OpenLayers.Layer.XYZ.prototype.setMap.apply(this, arguments); if (!this.tileOrigin) { var org = new OpenLayers.LonLat(this.map.maxExtent.left, this.map.maxExtent.bottom); this.tileOrigin = org.transform("EPSG:4326", "OPENMATE"); } }, omprint: function(zoom, minX, minY, maxX, maxY) { var data = { 'type': 'dscclayer', 'layerId': this.getLayerId(),// this.layerProperty.LAYER_ID, 'opacity': this.opacity }; // var layerIdEx = this.layerType; if(this.conts.indexOf(".") >= 0) { data.conts=this.conts; } else { data.cont=this.conts; } if(this.filter != "") { data.filter=this.filter; } if(this.unit != "") { data.unit=this.unit; } if(this.measure != "") { data.measure=this.measure; } if(this.stdYmd != ""){ data.ymd=this.stdYmd; } if(this.color != "") { data.color=this.color; } if(this.border != "") { data.border=this.border; } if(this.icon != undefined) { data.image=this.icon; data.color=this.color; } data.categoryFilter=this.categoryFilter; data.optionId=this.optionId; if(this.team != "") { data.team=this.team; } if(this.preventBrowserCache == true) { data.tm=Math.floor(Date.now() / 1000); } if (this.singleTile) { var bounds = this.map.calculateBounds(); data["singleTileMbr"] = OpenLayers.String.format("${left}x${top}+${right}x${bottom}", bounds); } return [data]; }, CLASS_NAME: "OpenMap.Layer.DynamicServerCC" });