更新 'mayfinal.js'

增加坐标正反算
main
alimu 2 years ago
parent 4b438c7635
commit b384a30d40

@ -82,6 +82,34 @@ function viewport2mplat(vx, vy) {
return { x: mx, y: my }; return { x: mx, y: my };
} }
function viewport2wgs84(vx, vy) {
const mlc = viewport2mplat(vx, vy);
//数据超界处理, 这里对应缩放等级的地图的大小是
const limit = calTileSize() * Math.pow(2, zoom_level);
console.log(calTileSize());
if (vx <= 0 || vy <= 0 || vx >= limit || vy >= limit) {
throw "OutMapRange";
}
const lat = tile2lat(mlc.y / tilesize, zoom_level);
const lng = tile2long(mlc.x / tilesize, zoom_level);
return { lat: lat, lng: lng }
}
function wgs84toviewport(lat, lng) {
//数据超界处理 经度 -180 180
//85.0511287798066 (2*Math.atan(Math.pow(Math.E,Math.PI))-Math.PI/2)/Math.PI*180
const latlimit = 85.051128;
const lngp = lng - Math.floor((lng + 180) / 360) * 360;
if (lat < (0 - latlimit) || lat > latlimit) {
throw "OutMapRange";
}
const my = lat2y(lat, zoom_level) * tilesize;
const mx = lon2x(lngp, zoom_level) * tilesize;
const vp = mplat2viewport(mx, my);
return { x: vp.x, y: vp.y };
}
function updateviewporttest(scrollx, scrolly, oldz, newz) { function updateviewporttest(scrollx, scrolly, oldz, newz) {
//计算出缩放后坐标系的偏移值 //计算出缩放后坐标系的偏移值
// xv = xm + offset ; offset = xv - xm // xv = xm + offset ; offset = xv - xm
@ -144,7 +172,9 @@ map.onmousedown = (e) => {
moveflag = true; moveflag = true;
downpoing.x = e.offsetX; downpoing.x = e.offsetX;
downpoing.y = e.offsetY; downpoing.y = e.offsetY;
console.log(coord.innerText); console.log(zoom_level, e.offsetX, e.offsetY);
const wgs84 = viewport2wgs84(e.offsetX, e.offsetY);
console.log(wgs84, 'check', wgs84toviewport(wgs84.lat, wgs84.lng));
} }
map.onmouseup = (e) => { map.onmouseup = (e) => {
console.log('鼠标松开'); console.log('鼠标松开');
@ -152,18 +182,11 @@ map.onmouseup = (e) => {
} }
map.onmousemove = (e) => { map.onmousemove = (e) => {
//输出latlng //输出latlng
const mlc = viewport2mplat(e.offsetX, e.offsetY); //const mlc = viewport2mplat(e.offsetX, e.offsetY);
let lat = tile2lat(mlc.y / tilesize, zoom_level); //let lat = tile2lat(mlc.y / tilesize, zoom_level);
let lng = tile2long(mlc.x / tilesize, zoom_level); //let lng = tile2long(mlc.x / tilesize, zoom_level);
// const etsize = calTileSize(); //const coordstr = `(${e.offsetX},${e.offsetY}) - (${mlc.x.toFixed(3)},${mlc.y.toFixed(3)}) - (${lat},${lng})`;
// if (zoom_level != Math.floor(zoom_level)) { //coord.innerText = coordstr;
// console.log('resize', etsize, tilesize, lat, lng)
// lat = tile2lat(mlc.y / etsize * tilesize, Math.floor(zoom_level + 1));
// lng = tile2long(mlc.x / etsize * tilesize, Math.floor(zoom_level + 1));
// }
const coordstr = `(${e.offsetX},${e.offsetY}) - (${mlc.x.toFixed(3)},${mlc.y.toFixed(3)}) - (${lat},${lng})`;
coord.innerText = coordstr;
//console.log(e.offsetX, e.offsetY); //console.log(e.offsetX, e.offsetY);
if (moveflag) { if (moveflag) {
console.log('有效位移'); console.log('有效位移');
@ -203,7 +226,7 @@ drawtest();
Array.prototype.remove = function(val) { Array.prototype.remove = function (val) {
const index = this.indexOf(val); const index = this.indexOf(val);
if (index > -1) { if (index > -1) {
return this.splice(index, 1); return this.splice(index, 1);

Loading…
Cancel
Save