【发布时间】:2020-07-04 17:44:54
【问题描述】:
我需要将坐标 X、Y 转换为纬度和经度。我已经阅读了 wikipedia map projections、类似的 stackoverflow 论坛,应用了我的自定义解决方案,但仍然无法正常工作。
我从公式中得到的坐标是错误的,经度是可以接受的,但纬度不是。我看不出我的计算有什么问题。
X,Y 点取自具有背景地图图像大小的 JLayeredPane,一旦在此地图图像上发布较小的图像,the point is taken。
public void mouseReleased(MouseEvent e) {
DM.setUpCoordinates(layeredPane.getComponent(index-1).getLocation());
}
在此之后,我正在尝试正确计算纬度和经度投影。我拥有的数据是:
- 地图中的 X,Y 坐标
- 地图的总宽度和高度
- 地图居中的纬度和经度
到目前为止我所尝试的:
public void setUpCoordinates(Point p) {
//Equirectangular projection: optimal for small streets
Long = ((p.getX())/(6371000*Math.cos(MG.getLati())))+MG.getLongi();
Lat = (((p.getY())/6371000)+MG.getLati());
}
我还尝试从this link 实现墨卡托投影,但几乎没有成功。
我知道我没有在我的公式中使用地图的总宽度和高度,这可能是错误,但我不知道如何使用它!
任何帮助如何从(x,y)转换为(纬度,经度)?
谢谢,
【问题讨论】:
-
除了“它不起作用”之外,您没有提到您的方法有什么问题。
标签: java math maps projection