java - 在 JMapViewer 中使用 mouseClicked 方法不会更新 getPosition 返回值

标签 java coordinates mouselistener mouseclick-event jmapviewer

我已经创建了一个 MouseInputAdapter 监听器来获取 JMapViewer map 中的坐标并在该位置创建 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]

最佳答案

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

Coordinate getPosition(java.awt.Point mapPoint)

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

new DefaultMapController(map) {

    @Override
    public void mouseClicked(MouseEvent e) {
        System.out.println(map.getPosition(e.getPoint()));
    }
};

关于java - 在 JMapViewer 中使用 mouseClicked 方法不会更新 getPosition 返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28741086/

相关文章:

java - 为什么我的 Java 服务器代码在尝试从 stripe 接收 Webhook 时抛出 502 错误?

django - 如何从数据库中获取最近的位置条目?

激活 MouseListener 的 obj 的 Java getName

java - Java中可以识别光标所在的字符串吗?

java - SimpleDateFormat 解析返回错误日期

java - Web服务异常: "An exception or error occurred in the container during the request processing java.lang.Exception: Host is not set"

java - 比较字符串和整数,不起作用?

matlab - 从 Matlab 轮廓函数中选择等值线

java - 检查鼠标是否位于圆圈上方 - Java

java - 将 MouseMotionListener 添加到 paddle(Java Pong 游戏)