var DEG2RAD=0.0174532922519943; var PI=3.14159267; function GK4(x,y) { this.x = x; //Hochwert this.y = y; //Rechtswert } function LatLng2GK4(lat,lng) { // lat = Breite, lon = Länge // sy = Zielsystemnummer (Meridiankennziffer) var e2 = 0.0067192188; var c = 6398786.849; var sy = 4; var bf = lat / (180/PI); var g = 111120.61962 * lat - 15988.63853 * Math.sin(2*bf) + 16.72995 * Math.sin(4*bf) - 0.02178 * Math.sin(6*bf) + 0.00003 * Math.sin(8*bf); var co = Math.cos(bf); var g2 = e2 * (co * co); var g1 = c / Math.sqrt(1+g2); var t = Math.sin(bf) / Math.cos(bf); var dl = lng - sy * 3; var fa = co * dl / (180/PI); var y = g + fa * fa * t * g1 / 2 + fa * fa * fa * fa * t * g1 * (5 - t * t + 9 * g2) / 24; var rm = fa * g1 + fa * fa * fa * g1 * (1 - t * t + g2) / 6 + fa * fa * fa * fa * fa * g1 * (5 - 18 * t * t * t * t * t * t) / 120; var x = rm + sy * 1000000 + 500000; return new GK4(x+110,y+100); } function myLatLng2GK4(lat,lng) { // lat = Breite, lon = Länge var B = lat * DEG2RAD; var L = (lng-12.0) * DEG2RAD; // Bessel //var aa = 6377397.155; //var bb = 6356078.96282; // WGS-84 var aa = 6378137.0; var bb = 6356752.31424; var eps = Math.sqrt(aa*aa-bb*bb); var e = eps/aa; var W = Math.sqrt(1.0 - e*e*Math.sin(B)*Math.sin(B)); var N = aa/W; var x = N*Math.cos(B)*Math.cos(L); var y = N*Math.cos(B)*Math.sin(L); return new GK4(x,y + 4500000); } CustomGetTileUrl=function(a,b,c) { if(this.layers=="TK50" && (b<13)) { return ""; } if(this.layers=="TK50" && (b>16)) { return ""; } if(this.layers=="UK500" && (b<10)) { return ""; } if(this.layers=="UK500" && (b>12)) { return ""; } //Bbox LatLong if (typeof(window['this.myStyles'])=="undefined") this.myStyles=""; var lULP = new GPoint(a.x*256,(a.y+1)*256); var lLRP = new GPoint((a.x+1)*256,a.y*256); var lUL = G_NORMAL_MAP.getProjection().fromPixelToLatLng(lULP,b,c); var lLR = G_NORMAL_MAP.getProjection().fromPixelToLatLng(lLRP,b,c); var cc = this.mymap.getCenter(); //Rotationswinkel im Kartenzentrum ermitteln var gkcc = LatLng2GK4(cc.y,cc.x); var gkcc2 = LatLng2GK4(cc.y,cc.x+0.00001); var dx = gkcc2.x-gkcc.x; var dy = gkcc2.y-gkcc.y; var rot = Math.atan(dy/dx); rot = rot - 0.5*DEG2RAD; // Korrektur var COS_PHI=Math.cos(rot); var SIN_PHI=Math.sin(rot); //BBox um Zentrum der Karte rotieren (Lageanpassung an Gauß-Krüger) var rx = (lUL.x - cc.x); var ry = (lUL.y - cc.y); lUL.x = COS_PHI*rx + SIN_PHI*ry + cc.x; lUL.y = - SIN_PHI*rx + COS_PHI*ry + cc.y; rx = (lLR.x - cc.x); ry = (lLR.y - cc.y); lLR.x = COS_PHI*rx + SIN_PHI*ry + cc.x; lLR.y = - SIN_PHI*rx + COS_PHI*ry + cc.y; //Bbox von LatLng nach GK4 transformieren var lUL_GK = LatLng2GK4(lUL.y, lUL.x); var lLR_GK = LatLng2GK4(lLR.y, lLR.x); // document.write(lUL.x+", "+lUL.y+" -> " + lUL_GK.x + ", " + lUL_GK.y + "
"); var lBbox=lUL_GK.x+","+lUL_GK.y+","+lLR_GK.x+","+lLR_GK.y; if (this.transparent != "TRUE") {this.transparent = "FALSE"; } var lURL=this.baseurl; lURL+="&REQUEST=GetMap"; lURL+="&SERVICE=WMS"; lURL+="&VERSION=1.1.1"; lURL+="&LAYERS="+this.layers; lURL+="&STYLES="+this.myStyles; lURL+="&FORMAT=image/png"; lURL+="&BGCOLOR=0xFFFFFF"; lURL+="&TRANSPARENT="+this.transparent; lURL+="&SRS=EPSG:31468"; lURL+="&BBOX="+lBbox; lURL+="&reaspect=false"; if (this.resample=="ON") { lURL+="&WIDTH=512"; lURL+="&HEIGHT=512"; lURL="http://www.waidlerwiki.de/resize.php?url=" + escape(lURL); } else { lURL+="&WIDTH=256"; lURL+="&HEIGHT=256"; } return lURL; } CustomGetTileUrlEPSG4326=function(a,b,c) { //Bbox LatLong if (typeof(window['this.myStyles'])=="undefined") this.myStyles=""; var lULP = new GPoint(a.x*256,(a.y+1)*256); var lLRP = new GPoint((a.x+1)*256,a.y*256); var lUL = G_NORMAL_MAP.getProjection().fromPixelToLatLng(lULP,b,c); var lLR = G_NORMAL_MAP.getProjection().fromPixelToLatLng(lLRP,b,c); var lBbox=lUL.x+","+lUL.y+","+lLR.x+","+lLR.y; if (this.transparent != "TRUE") {this.transparent = "FALSE"; } var lURL=this.baseurl; lURL+="&REQUEST=GetMap"; lURL+="&SERVICE=WMS"; lURL+="&VERSION=1.1.1"; lURL+="&LAYERS="+this.layers; lURL+="&STYLES="+this.myStyles; lURL+="&FORMAT=image/png"; lURL+="&BGCOLOR=0xFFFFFF"; lURL+="&TRANSPARENT="+this.transparent; lURL+="&SRS=EPSG:4326"; lURL+="&BBOX="+lBbox; lURL+="&reaspect=false"; if (this.resample=="ON") { lURL+="&WIDTH=512"; lURL+="&HEIGHT=512"; lURL="http://www.waidlerwiki.de/resize.php?url=" + escape(lURL); } else { lURL+="&WIDTH=400"; lURL+="&HEIGHT=400"; } // document.write(lURL + "
"); return lURL; } function customOpacity() { return this.myOpacity; }