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

时间:2015-02-26 11:21:46

标签: java coordinates mouselistener mouseclick-event jmapviewer

我创建了一个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]

1 个答案:

答案 0 :(得分: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())); } }; 的子类。

{{1}}