Как добавить всплывающую подсказку в MapMarker в JMapViewer
Я пытаюсь добавить ToolTip
на заказ MapMarker
на JMapViewer. Но повторные поиски не помогают мне решить эту проблему.
Пользовательский MapMarker:
public class MapMarkerUnit extends MapObjectImpl implements MapMarker
и метод краски 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 ответ
Переопределить getToolTipText()
метод JMapViewer
, В вашей реализации используйте 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()
,