转换纬度/渴望X / Y坐标转换纬度/渴望X / Y坐标(Convert Lat/Longs to

2019-05-13 13:33发布

我有纽约市,纽约州的纬度/长值; 40.7560540,-73.9869510和地上的平坦图像,1000像素×446px。

我想是能够转换,使用Javascript,该纬度/龙的X,Y坐标点在哪里将反映的位置。

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

需要注意的事项:

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

Answer 1:

在JS的基本转换功能是:

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. 那你的COORDS与N为签约 - ,S为+,w是 - 和E是+


Answer 2:

您所使用的投影会改变一切,但是这将工作假设墨卡托投影:

<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>


Answer 3:

有一个很好的Javascript库, PROJ4JS ,允许你做不同的投影之间的转换。



Answer 4:

如果你有整个地球的图片,投影也总是问题。 但是,也许我只是不明白你的问题。



Answer 5:

我写这适用于墨卡托地图的功能。 特别是如果你的图片没有覆盖整个世界,意味着它也可以与裁剪地图: https://stackoverflow.com/a/10401734/730823



文章来源: Convert Lat/Longs to X/Y Co-ordinates