【问题标题】:JMapViewer OSM map cannot be draggedJMapViewer OSM 地图无法拖动
【发布时间】:2012-07-25 21:43:38
【问题描述】:

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

编辑:此代码将绘制可以在面板中显示的地图通过添加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;
}

【问题讨论】:

  • Demo类图为here

标签: java swing openstreetmap jmapviewer


【解决方案1】:

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

【讨论】:

  • 很好,很有效!此代码将绘制可以在面板中显示的地图,并通过添加 mapController 和 setMovementMouseButton() 使地图可拖动。
  • : JMapViewer drawOpenStreetMap(double lon, double lat, int zoom) { mapViewer = new JMapViewer(); mapViewer.setZoom(缩放); mapViewer.setDisplayPositionByLatLon(lat, lon, zoom); mapViewer.repaint(); DefaultMapController mapController = new DefaultMapController(mapViewer); mapController.setMovementMouseButton(MouseEvent.BUTTON1); mapViewer.addMapMarker(新 MapMarkerDot(52, 5.5));返回地图查看器; }
  • 为了可读性,我将您的 sn-p 迁移到问题中,但您也可以post it as an answer。您可以点击左侧的empty check mark 接受答案。
猜你喜欢
  • 2017-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多