【问题标题】:Getting Y position from Latitude on a spherical projected map在球形投影地图上从纬度获取 Y 位置
【发布时间】:2011-06-14 18:07:26
【问题描述】:

在 Javascript 中。

我有一张 1024 x 1024 像素的世界地图 - 这是一个球形墨卡托投影。

我希望将此地图的 long/lat 转换为 x,y。我有一堆坐标需要叠加在上面。

计算经度非常简单,我就是这样做的:

pos.x = ((long + 180)/ 360) * 1024;

我只需要同样的 lat --> y

我环顾四周,看到很多对 openlayers 的引用,但没有看到这样的转换。

【问题讨论】:

    标签: javascript maps latitude-longitude


    【解决方案1】:

    归结为:

    var mercator = function(lat, lng) {
      return [lng, Math.log( (Math.sin(lat) + 1.0) / Math.cos(lat)) ] ;
    };
    

    当然,纬度和经度必须用弧度表示。

    【讨论】:

    • 谢谢!如果有人需要,给你pos.y = ((Math.log( (Math.sin(lat) + 1.0) / Math.cos(lat))) + (Math.PI) ) / (2 * Math.PI) * 1024
    • 以上需要弧度而不是度数
    【解决方案2】:

    您可以在这篇维基百科文章中找到相应的公式:Mercator Projection

    【讨论】:

    • 所以我尝试了这个......但这似乎不起作用。我得到高于/低于 60º pos.y = Math.log(Math.tan((Math.PI/ 4) + (lat/2))); 的未定义值
    • tan() 需要以弧度表示的参数。请将您的角度乘以PI/180 以进行相应的转换。
    • 以前不这样做感觉有点愚蠢,但它仍然无法正常工作。 -90 表示无限测量。而 90 给 37.33 pos.y = Math.log(Math.tan((Math.PI/ 4) + ( (lat * (Math.PI/180) ) /2)));
    • @Adam 是的,这是墨卡托的不幸属性之一。
    猜你喜欢
    • 1970-01-01
    • 2020-01-27
    • 2017-06-29
    • 1970-01-01
    • 2012-12-08
    • 2012-07-04
    • 1970-01-01
    • 2018-04-20
    • 1970-01-01
    相关资源
    最近更新 更多