如何在JMapViewer中向MapMarker添加工具提示

时间:2014-09-19 18:24:27

标签: java jmapviewer

我正在尝试将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));
}

感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:5)

覆盖getToolTipText()的{​​{1}}方法。在您的实施中,使用JMapViewergetPosition()坐标转换为大地坐标。以下示例仅显示未格式化的坐标;您想要找到最近的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

我在地图上有大约50个标记......这是很多次迭代。

您绝对无法在JComponent实施中加载图片;使用SWingWorker在后台加载图片example

作为具体的迭代示例,MapMarker以这种方式轻松处理数十个实体的工具提示。这是封闭式小组的getToolTipText()实施,这里是调用JFreeChart的{​​{3}}。一个简化的例子说明了这种方法loop