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



我正在尝试将ToolTip添加到JMapViewer上的自定义MapMarker。但重复搜索并不能帮助我解决这个问题。

自定义MapMarker是:

public class MapMarkerUnit extends MapObjectImpl implements MapMarker

上面的油漆方法是

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

谢谢你能提供的任何帮助。

覆盖JMapViewergetToolTipText()方法。在实现中,使用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()的循环。这里有一个简化的例子来说明这种方法。

相关内容

  • 没有找到相关文章

最新更新