JMapViewer OSM地图无法拖动。

3
我正在尝试找出哪些映射工具最适合我的基于Java Swing的OSM地图。之前,我基于MapPanel制作了一个功能性地图。后来,我几乎可以克隆该应用程序,并仅用JMapViewer替换MapPanel即可使其正常工作。我更喜欢后者,因为它具有在地图上放置标记和多边形的功能。但是,缺点是由于某种原因,我无法使用鼠标拖动地图。在JMapViewer的包中,有一个演示类显示相同的行为。如何使JMapViewer中的OSM地图可拖动? 编辑:此代码将绘制一个可以在面板中显示的地图,并通过添加mapController和setMovementMouseButton()使地图可拖动。
private JMapViewer drawOpenStreetMap(double lon, double lat, int zoom) {
    mapViewer = new JMapViewer();
    mapViewer.setZoom(zoom);
    mapViewer.setDisplayPositionByLatLon(lat, lon, zoom);
    mapViewer.repaint();
    DefaultMapController mapController = new DefaultMapController(mapViewer);
    mapController.setMovementMouseButton(MouseEvent.BUTTON1);
    mapViewer.addMapMarker(new MapMarkerDot(52, 5.5));
    return mapViewer;
}

Demo类的图片在这里(http://wiki.openstreetmap.org/wiki/JMapViewer)。 - jhulst
1个回答

3
在运行 Demo.java 时,控制点击或右键单击地图以平移视图。使用 setMovementMouseButton() 来控制其行为。

太好了,它有效!这段代码将绘制一个地图,可以在面板中显示,并通过添加mapController和setMovementMouseButton()使地图可拖动。 - jhulst
JMapViewer drawOpenStreetMap(double lon, double lat, int zoom) { mapViewer = new JMapViewer(); mapViewer.setZoom(zoom); mapViewer.setDisplayPositionByLatLon(lat, lon, zoom); mapViewer.repaint(); DefaultMapController mapController = new DefaultMapController(mapViewer); mapController.setMovementMouseButton(MouseEvent.BUTTON1); mapViewer.addMapMarker(new MapMarkerDot(52, 5.5)); return mapViewer; } - jhulst

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接