我使用Java脚本在画布中绘制世界地图。如何将任何位置的精确纬度,经度坐标转换为 X,Y 坐标,以便我可以在Canvas Map上投影转换后的X,Y坐标?
我之前尝试过不同的解决方案,但它们并没有指向我的Canvas Map上的精确 X,Y坐标。我也试过使用基本的转换公式,但它们也没用。 例如,
var y = ((-1 * lat) + 90) * (MAP_HEIGHT / 180);
var x = (lon + 180) * (MAP_WIDTH / 360);
OR
function plot_point(lat, lng) {
// longitude_shift = number of pixels your map's prime meridian is off-center.
// 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)));
y = (map_height / 2) - (map_width * y / (2 * Math.PI)) + y_pos;
我使用的是以下地图:Map
P.S。如果有人可以提供 Java脚本代码,那将非常有用。
编辑由于我无法获得准确的坐标,感谢解释 @Aki Suihkonen,请建议一种方法,这样我就可以得到最接近地图中真实位置的X,Y坐标。提前致谢。