无法拖动JMapViewer OSM映射

时间:2012-07-25 21:43:39

标签: java swing openstreetmap jmapviewer

我正在尝试找出哪种映射工具最适合我基于java swing的OSM映射。之前我在MapPanel的基础上制作了一张功能正常的地图。后来我几乎可以克隆应用程序,只是将MapPanel替换为JMapViewer以使其工作。我更喜欢后者,因为它具有在地图上放置标记和多边形的功能。然而,缺点是由于某些原因我不能用鼠标拖动地图。在JMapViewer的包中有一个显示相同行为的Demo类。如何在JMapViewer中使OSM映射可拖动?

修改:此代码将绘制一个可以在面板中显示的地图通过添加mapControllersetMovementMouseButton()来使地图可拖动。

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;
}

1 个答案:

答案 0 :(得分:3)

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