首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将经度/经度转换为X/Y坐标

将经度/经度转换为X/Y坐标
EN

Stack Overflow用户
提问于 2009-06-19 20:56:38
回答 3查看 27.3K关注 0票数 17

我有纽约市,NY的经纬度值;40.7560540,-73.9869510和地球的平面图像,1000px×446px。

我希望能够使用Javascript将经度/经度转换为X,Y坐标,该点将反映位置。

因此,图像左上角的X,Y坐标为;289,111

注意事项:

  1. 不用担心使用什么投影的问题,做你自己的假设或者使用你知道的可能工作的东西
  2. X,Y可以形成图像的任何角落
  3. 相同的解决方案在PHP中(但我真的需要JS)
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-06-19 21:54:18

js中的一个基本转换函数是:

代码语言:javascript
复制
MAP_WIDTH = 1000;
MAP_HEIGHT = 446;

function convert(lat, lon){
    var y = ((-1 * lat) + 90) * (MAP_HEIGHT / 180);
    var x = (lon + 180) * (MAP_WIDTH / 360);
    return {x:x,y:y};
}

这将返回左上角的像素数。此函数假定以下条件:

  1. 表示您的图像与左上角(0,0)对齐,并与90*北乘180*西对齐。
  2. 表示您的坐标符号为N为-,S为+,W为-,E为+
票数 8
EN

Stack Overflow用户

发布于 2009-06-20 01:04:18

您使用的投影将改变一切,但这将在假设墨卡托投影的情况下工作:

代码语言:javascript
复制
<html>
<head>
<script language="Javascript">
var dot_size = 3;
var longitude_shift = 55;   // number of pixels your map's prime meridian is off-center.
var x_pos = 54;
var y_pos = 19;
var map_width = 430;
var map_height = 332;
var half_dot = Math.floor(dot_size / 2);
function draw_point(x, y) {
    dot = '<div style="position:absolute;width:' + dot_size + 'px;height:' + dot_size + 'px;top:' + y + 'px;left:' + x + 'px;background:#00ff00"></div>';
    document.body.innerHTML += dot;
}
function plot_point(lat, lng) {
    // Mercator projection

    // longitude: just scale and shift
    x = (map_width * (180 + lng) / 360) % map_width + longitude_shift;

    // latitude: using the Mercator projection
    lat = lat * Math.PI / 180;  // convert from degrees to radians
    y = Math.log(Math.tan((lat/2) + (Math.PI/4)));  // do the Mercator projection (w/ equator of 2pi units)
    y = (map_height / 2) - (map_width * y / (2 * Math.PI)) + y_pos;   // fit it to our map

    x -= x_pos;
    y -= y_pos;

    draw_point(x - half_dot, y - half_dot);
}
</script>
</head>
<body onload="plot_point(40.756, -73.986)">
    <!-- image found at http://www.math.ubc.ca/~israel/m103/mercator.png -->
    <img src="mercator.png" style="position:absolute;top:0px;left:0px">
</body>
</html>
票数 19
EN

Stack Overflow用户

发布于 2009-06-19 21:36:09

如果你有一张整个地球的图片,投影总是很重要的。但也许我就是不明白你的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1019997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档