Tag: jmapviewer

JMapViewer,将栅格加载到某个位置

我想在JMapViewer中的地图上加载并显示光栅文件。 光栅文件: 应该装在特定的位置, 使用缩放操作动态更改大小, 我希望JMapViewer支持这些操作。 目前,我正在使用从MapMarkerCircle派生的类: public class ImageViewer extends MapMarkerCircle implements MapMarker { private BufferedImage img; public ImageViewer(Coordinate position, BufferedImage img) { this(position, 1, img);} public ImageViewer(Coordinate position, double radius, BufferedImage img) { super(position, radius); this.img = img; } public void paint(Graphics g, Point position, int sc) { int w = (int) (img.getWidth() * […]

如何在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,MouseListener调用了2次

使用JMapViewer,可以识别组件的奇怪行为。 我使用DefaultMapController来获取地图位置(lat,lon)。 import java.awt.Graphics; import java.awt.Point; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.JFrame; import org.openstreetmap.gui.jmapviewer.DefaultMapController; import org.openstreetmap.gui.jmapviewer.JMapViewer; public class Test extends JMapViewer{ public Test() { addMouseListener(new DefaultMapController(this) { public void mouseClicked(MouseEvent e){ Point start = e.getPoint(); System.out.println(e.getPoint()); } }); } protected void paintComponent(Graphics g){super.paintComponent(g);} public static void main (String [] args){ JFrame jf = new JFrame(); […]

如何在Openstreetmap中突出显示MapMarkerDot?

我使用http://svn.openstreetmap.org/applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/Demo.java中的代码来获取我的swing应用程序的地图并运行。 我添加了一些MapMarkerDot来指示我的地图中的一些点,并使用我如何从我的JMapViewer世界地图中获取鼠标点击位置以确定是否已经选择了一个点,但我如何才能真正显示已选择特定的MapMarkerDot? 我想添加一些类似于http://bikes.oobrien.com/london/#zoom=14&lon=-0.1155&lat=51.4992的边框,但到目前为止我还没有看到成功。 任何建议/参考都很受欢迎。 谢谢!

带有匿名EventListener的JPanel – 为什么GC不会破坏侦听器?

我一直在仔细阅读JMapViewer的开源代码。 如果有其他人希望查看它,请检查SVN 。 简而言之,主类是JMapViewer ,它是JPanel的扩展。 还有另一个非常重要的类,名为DefaultMapController ,它充当主类的MouseListener 。 我注意到的第一个奇怪的事情是观众没有对控制器的引用。 JMapViewer构造函数实例化DefaultMapController的匿名实例,如下所示: public JMapViewer() { // other stuff new DefaultMapController(this); } 在我看来这是一个糟糕的设计选择,因为控制器有很多方法(选项,切换等 – 下面显示的例子),现在根本无法访问,所以有什么好处呢? public void setMovementMouseButton(int movementMouseButton) { // changes which mouse button is used to move the map } 控制器确实有一个对查看器的引用,如上面的第一个片段所示,这是它能够控制的方式。 然而,那时我想到的东西更怪异! 如果这个监听器的匿名实例没有引用,为什么它甚至可以存活? GC不应该迅速摧毁它吗? 或者GC是否足够聪明,知道引用实时JComponent的侦听器类也必须保持活动才能正常工作,即使它由于某些奇怪的原因而没有名称? 那么,两个真正的问题: 为什么GC不会破坏对象? 这确实是一个糟糕的设计选择,还是有一些方法我不知道从实例化查看器的类访问控制器? 我想为这个开源库做贡献,我改变的第一个想法是改变JMapViewer类,让一个字段引用它的控制器,并改变构造函数,将当前的匿名控制器分配给这个新字​​段。 但是,我想确保我不会无知地遗漏某些东西。 我在整个代码库中搜索了DefaultMapController文本,它只出现在它自己的类定义中,以及JMapViewer构造函数中的匿名实例化中。 编辑: 确实有一种方法可以通过使用java.awt.Component方法getMouseListeners()来访问匿名侦听器。 因此,在我的应用程序中,我可以在此集合中搜索DefaultMapController实例,并使用它来访问我需要用来更改控制器选项的方法。 但是,为了扮演魔鬼的拥护者,如果我采用原创的想法并给地图作为其控制器的参考,现在我有一种循环参考(地图知道控制器和控制器知道地图)。 这是一个坏主意吗?

JMapViewer将鼠标侦听器添加到MapMarkerDot

我正在尝试向MapMarker添加鼠标监听器,这样当鼠标hover在MapMarker上时,我就可以对事件做出反应。 我实现了mouseListener,但我无法真正添加一个监听器。 问题是我没有找到MapMarker将addMouseListener的方法,因为层次结构的非实现JPanel。 任何帮助赞赏

在JMapViewer中绘制两个地理点之间的直线

我正在使用JMap Viwer的Java OpenStreet Maps http://wiki.openstreetmap.org/wiki/JMapViewer我可以加载地图和一切正常但我不知道如何在纬度的两点之间绘制一条线和经度。 任何人都知道绘制这种线条的function吗? 谢谢。