0

JMapViewer マップの座標を取得するために MouseInputAdapter リスナーを作成し、その場所に 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() によって返された値を出力するためにあります。初めてクリックすると、一連の座標が取得され、どこをクリックしても常に同じ座標が取得されます。5 つの異なる位置のクリックの例:

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 に答える