如何在JMapViewer中向MapMarker添加工具提示
我正在尝试将ToolTip
添加到JMapViewer上的自定义MapMarker
。 但重复搜索并没有帮助我解决这个问题。
自定义MapMarker是:
public class MapMarkerUnit extends MapObjectImpl implements MapMarker
并且Paint Method overide是
public void paint(Graphics g, Point position, int radio) { String filename = "marker.png"; //System.out.print(filename); BufferedImage x = null; try { x = ImageIO.read(getClass().getResource(filename)); } catch (IOException ex) { Logger.getLogger(MapMarkerUnit.class.getName()).log(Level.SEVERE, null, ex); } g.drawImage(x, position.x-16, position.y-37,null); //if(getLayer()==null||getLayer().isVisibleTexts()) paintText(g, new Point(position.x+20,position.y)); }
感谢您提供的任何帮助。
覆盖JMapViewer
的getToolTipText()
方法。 在您的实现中,使用getPosition()
将MouseEvent
坐标转换为大地坐标。 以下示例仅显示未格式化的坐标; 你会想要找到最近的MapMarker
并返回相应的文本。
JMapViewer map = new JMapViewer() { @Override public String getToolTipText(MouseEvent e) { Coordinate c = getPosition(e.getX(), e.getY()); return c.getLat() + " " + c.getLon(); } }; map.setToolTipText(""); // initialize
附录: 有没有办法直接向图像添加工具提示?
没有; JMapViewer
是处理工具提示的封闭JComponent
。
我在地图上有大约50个标记……这是很多迭代。
你绝对无法在MapMarker
实现中加载图像; 例如,使用SWingWorker
在后台加载图像。
作为具体的迭代示例, JFreeChart
以这种方式轻松处理数十个实体的工具提示。 这是封闭面板的getToolTipText()
实现,这里是调用Shape#contains()
的循环 。
- Java NoSuchAlgorithmException – SunJSSE,sun.security.ssl.SSLContextImpl $ DefaultSSLContext
- Spring Data JPARepository:如何有条件地获取子项
- 理解Java中的正则表达式:split(“\ t”)vs split(“\\ t”) – 它们何时都有效,何时应该使用它们
- 图像resize并在JPanel或JLabel中显示而不会降低质量
- Java中的加权线性回归
- 在docker热部署简单的应用程序
- 将Java哈希码组合成“主”哈希码
- ComboBox FXML默认值
- 在JSF / JSP EL和Javascript中连接字符串