I Gleichungen verwenden für die Umwandlung von geographischen Punkten auf der Erde zu Pixelkoordinaten, wie in Daniel Shiffman Tutorial erklärt: https://gist.github.com/shiffman/a0d2fde31f571163c730ba0da4a01c82Invertierung Web Mercator Gleichungen Pixel konvertieren Länge zur Breite
Das heißt:
function webMercX(lon, zoom) {
lon = radians(lon);
var w = 256; //width/2;
var a = (w/PI) * pow(2, zoom);
var b = (lon + PI);
var x = a * b;
return x;
}
function webMercY(lat, zoom) {
lat = radians(lat);
var w = 256; //height/2;
var a = (w/PI) * pow(2, zoom);
var c = tan(PI/4 + lat/2);
var b = PI - log(c);
var y = a * b;
return y;
}
Based auf: https://en.wikipedia.org/wiki/Web_Mercator
Nun, um eine genaue Maus Interaktion zu implementieren, ich versuche, das Gegenteil zu tun; Konvertiere Pixel in Lat und Lon. Ich habe es geschafft, die erste Gleichung zu invertieren, so x zu lon funktioniert gut:
function inverseWebMercX(x,zoom) {
var w = 256; //width/2;
var a = (w/PI) * pow(2, zoom);
var b = x/a;
var lon = b-PI;
lon = degrees(lon);
return lon;
}
Dies kann über
inverseWebMercX (webMercX (10,2), 2) getestet werden;
Aber ich habe so ausgefallen weit von y umwandeln wahrscheinlich zu lat, weil ich die Lösung nicht die Teilgleichungen für var c und var lat rechts:
function inverseWebMercY(y,zoom) {
var w = 256; //width/2;
var a = (w/PI) * pow(2, zoom);
var b = y/a;
var c = -(exp(b) + PI);
var lat = (atan2(c) - (PI/4))*2;
lat = degrees(lat);
return lat;
}
Also, einfach ausgedrückt, vielleicht jemand mit einem Hintergrund besser Mathematik weiß, wie diese Gleichungen für lat zu lösen bzw. c:
var c = tan(PI/4 + lat/2);
var b = PI - log(c);
Geschätzt
nicht das letzte Kommentar im Kern Sie oben Antwort verknüpfen Sie Ihre Frage? – barrycarter
@barrycarter Nein, das ist mein eigener Kommentar, die gleiche Frage – Kajuna
@Kajuna 'c = exp (PI - b) Versuchen Sie'. – Anton