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; }