我不确定getCurrentPosition()
你指的是哪个,但WorldWindow#getCurrentPosition()
应该做你想做的事。javadocs说:
返回当前光标位置的当前纬度、经度和高度,如果光标不在地球上,则返回 null。
如果您的光标不与地球相交(即您单击背景中的星星),则不会有与单击相关联的位置。这不依赖于可拾取的对象,只依赖于在单击时与光标相交的地球。
以下示例适用于我:
public class PositionListener implements MouseListener {
private final WorldWindow ww;
public PositionListener(WorldWindow ww) {
this.ww = ww;
}
@Override
public void mouseClicked(MouseEvent event) {
try {
System.out.println(ww.getCurrentPosition().toString());
} catch (NullPointerException e) {
// click was not on the globe
}
}
//...
}
如果getCurrentPosition()
不适合您,这是另一种选择:
@Override
public void mouseClicked(MouseEvent event) {
Point p = event.getPoint();
Vec4 screenCoords = new Vec4(p.x,p.y);
Vec4 cartesian = ww.getView().unProject(screenCoords);
Globe g=ww.getView().getGlobe();
Position pos=g.computePositionFromPoint(cartesian);
System.out.println(pos.toString());
}