我正在努力找出哪些映射工具最适合我的基于java swing的OSM映射。早些时候,我在MapPanel的基础上制作了一张功能地图。后来,我几乎可以克隆应用程序,只需将MapPanel替换为JMapViewer即可使其正常工作。我更喜欢后者,因为它具有在地图上放置标记和多边形的功能。然而,缺点是由于某些原因,我无法用鼠标拖动地图。在JMapViewer的包中有一个Demo类,它显示相同的行为。如何在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.java
时,控制单击或右键单击地图以平移视图。使用setMovementMouseButton()
来控制行为。