gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 06:17:21 24 4
gpt4 key购买 nike

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

自定义 MapMarker 是:

public class MapMarkerUnit extends MapObjectImpl implements MapMarker

并且 Paint 方法覆盖是

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

我在 map 上有大约 50 个标记……这是很多次迭代。

您绝对不能在您的MapMarker 实现中加载图像;使用SWingWorker在后台加载图像,example .

作为一个具体的迭代示例,JFreeChart 以这种方式轻松处理大量实体的工具提示。这是封闭面板的 getToolTipText()实现,这里是 loop调用 Shape#contains()。可以看到一个说明该方法的简化示例 here .

关于java - 如何在 JMapViewer 中向 MapMarker 添加工具提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25940174/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com