能够像推特一样在世界地图上使用等矩形投影,也需要为美国图像工作

Able to use equirectangular Projection on world map like tweetping, need to get that working for USA image also

本文关键字:投影 图像 工作 美国 世界地图 一样      更新时间:2023-09-26

目前我可以在世界地图上使用等矩形投影绘制地理编码,比如推特网站(https://tweetping.net/),但我需要将其与美国地图图像一起使用。我看到等矩形公式适用于世界地图图像,但不适用于美国地图图像。

这是我目前的等矩形投影代码,它将纬度和经度转换为css属性,我正在使用它来定位世界地图图像上的点:

function projectLat (lat, height) {
  if (isNaN(lat) || typeof lat !== 'number' || lat < -90 || lat > 90) {
    throw new Error('latitude is not valid');
  }
  if (isNaN(height) || typeof height !== 'number'){
    throw new Error('viewport height is not valid');
  }
  return ((lat - 90) / -180 * height);
}
function projectLng (lng, width) {
  if (isNaN(lng) || typeof lng !== 'number' || lng < -180 || lng > 180) {
    throw new Error('longitude is not valid');
  }
  if (isNaN(width) || typeof width !== 'number'){
    throw new Error('viewport width is not valid');
  }
  return (lng + 180) / 360 * width;
}

我已经附上了世界地图图片以及我正在使用的美国图片。

有人知道怎么做吗?

非常感谢。

美国图像

那个图像不起作用。它没有按照您的需要进行投影。

因此,等矩形投影意味着你将北极(这是一个点)拉伸到赤道的大小(4000万米;南极也是如此;忽略世界不是一个完美的球体这一事实)。

那么世界就是一个180°高(-90到+90)、360°宽(-180到+180)的矩形

结果是等纬度点在一条水平线上。相等的经度点在一条垂直线上。

美国有这样的路线。例如:蒙大拿州/华盛顿州/北达科他州以北与加拿大的边界是一条直线,纬度=北纬49°。

你需要一张直线和水平的照片。