0

我创建了一个 MouseInputAdapter 侦听器来获取 JMapViewer 地图中的坐标并在该位置创建 MapMarker,但即使我单击不同的位置,map.getPossition() 方法的值也不会使用新值更新。

我的听众代码:

@Override
public void mouseClicked(MouseEvent e) {
if (e.getButton() == MouseEvent.BUTTON1){
    Coordinate markeradd = map.getPosition();
    System.out.println(map.getPosition());
    map.addMapMarker(new MapMarkerDot(markeradd));
}

system.out.print 用于打印 getPosition() 返回的值。当我第一次点击时,我会得到一组坐标,然后无论我在哪里点击,我总是得到相同的坐标。五种不同位置点击的示例:

Coordinate[56.159963018590744, 10.199775695800781]
Coordinate[56.159963018590744, 10.199775695800781]
Coordinate[56.159963018590744, 10.199775695800781]
Coordinate[56.159963018590744, 10.199775695800781]
Coordinate[56.159963018590744, 10.199775695800781]
4

1 回答 1

1

正如您所观察到的,getPosition()“计算当前显示的地图区域中心的纬度/经度坐标。” 你可能想要

Coordinate getPosition(java.awt.Point mapPoint)

其中“将相对像素坐标……转换为纬度/经度坐标。” 您可以在 的实现中调用它,如此处JMapController所示DefaultMapController.

new DefaultMapController(map) {

    @Override
    public void mouseClicked(MouseEvent e) {
        System.out.println(map.getPosition(e.getPoint()));
    }
};
于 2015-03-01T14:19:15.347 回答