问题标签 [jmapviewer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
976 浏览

java - 如何确保 OverlayLayout 中的正确绘制顺序?

我正在使用 a JPanelwith anOverlayLayout在彼此之上绘制两个不相关的组件。具体来说,我有一个包含我自己的线条图的透明组件,在它下面,我使用了一个JMapViewer显示 OpenStreetMap 瓷砖的组件。这行得通。

除非 JMapViewer 异步加载图块。在这种情况下,它会在加载完成时调用repaint()自己,并将自己绘制在我的线层上。我的线层无法知道这一点,因为它无法知道 JMapViewer 何时选择重新绘制自己。

现在我希望在JPanel重新绘制地图层时重新绘制我的线层,因为它知道正确的绘制顺序并且知道我的线层必须重新绘制。但它不这样做。

你会如何解决这个问题?

0 投票
2 回答
2537 浏览

java - 如何从我的 JMapViewer 世界地图中获取鼠标点击位置

我使用JMapViewer jar 在 JPanel 上显示世界地图。

在地图上我添加了MapMarkerDot's哪些是 gps 点。

问题是当我MapMarkerDot在地图上单击 a 时,我
找不到接口或侦听器来捕捉点击并给我
点击的MapMarkerDot身份。

这里有没有人使用过代码或者可以给我一些想法。

我不想修改 jar 源,但也许我必须输入一个接口。

我知道这是一个抽象的问题,但希望得到帮助

0 投票
2 回答
5351 浏览

java - 在 JMapViewer 中的两个地理点之间画线

我正在使用 JMap Viwer http://wiki.openstreetmap.org/wiki/JMapViewer在 Java 中使用 OpenStreet Maps我可以加载地图,一切正常,但我不知道如何在纬度的两点之间画一条线和经度。

任何人都知道绘制这种线条的功能吗?

谢谢你。

0 投票
1 回答
1327 浏览

java - JMapViewer OSM 地图无法拖动

我试图找出哪些映射工具最适合我的基于 java swing 的 OSM 映射。早些时候,我在MapPanel的基础上制作了一张功能地图。后来我几乎可以克隆应用程序,只需将 MapPanel 替换为JMapViewer 即可使其正常工作。我更喜欢后者,因为它具有在地图上放置标记和多边形的功能。然而,缺点是由于某种原因我不能用鼠标拖动地图。在 JMapViewer 的包中有一个 Demo 类,它显示相同的行为。如何在 JMapViewer 中使 OSM 地图可拖动?

编辑:此代码将绘制一个可以在面板中显示的地图,并通过添加使地图可拖动。mapControllersetMovementMouseButton()

0 投票
2 回答
2909 浏览

java - 在 JMapViewer 中动态更新标记

你好 Stack Overflow 社区,

我是一个 Java 新手,我正在做一个简单的 Java 项目,我从(动态)源获取坐标(纬度和经度)并使用 JMapViewer(是的,不是 JXMapViewer)在地图上显示标记。我已将所有坐标放在两个 ArrayList(s) 中。它看起来像这样:

编辑:地图是一个 jMapViewer 对象。

它工作得很好。问题是我需要这张地图使用计时器每 20 秒刷新一次,我发现的唯一方法是关闭和打开地图,如下所示:

编辑:theMap 是我在主函数中创建的对象(jFrame 不是 jMapViewer)(如在演示中),我不能在其上使用 addMapMarker(如 theMap.addMapMarker(150.2,150.2))

好吧,正如您可以想象的那样,这很烦人(每 20 秒窗口关闭和打开一次,并且之前的“浏览”会话会丢失)。那么有没有办法刷新呢?通过动态添加标记还是仅刷新内容?

非常感谢。

0 投票
2 回答
810 浏览

java - 带有匿名 EventListener 的 JPanel - 为什么 GC 不销毁侦听器?

我一直在阅读 JMapViewer的开源代码。如果其他人希望查看它,请检查SVN

简而言之,主类是JMapViewer,它是 a 的扩展JPanel。还有另一个非常重要的类称为DefaultMapControllerMouseListener类。

我注意到的第一件奇怪的事情是查看器没有对控制器的引用。构造JMapViewer函数实例化 的匿名实例DefaultMapController,如下所示:

在我看来,这似乎是一个糟糕的设计选择,因为控制器有大量的方法(选项、切换等 - 示例如下所示),现在根本无法访问,那么它们有什么好处呢?

如上面的第一个片段所示,控制器确实具有对查看器的引用,这就是它能够行使控制的方式。

然而,我想到了更奇怪的事情!如果侦听器的这个匿名实例没有引用,为什么还要允许它存活呢?GC不应该快速销毁它吗?或者 GC 是否足够聪明,可以知道引用 live 的侦听器类也JComponent必须保持活跃才能正常工作,即使由于某种奇怪的原因它没有名称?

所以,两个真正的问题:

  • 为什么 GC 不销毁对象?
  • 这确实是一个糟糕的设计选择,还是有某种我不知道从实例化查看器的类访问控制器的方式?

我想为这个开源库做出贡献,我的第一个更改想法是更改JMapViewer类以具有引用其控制器的字段,并更改构造函数以将当前匿名控制器分配给这个新字​​段。但是,我想确保我不会无知地遗漏一些东西。我已经在整个代码库中搜索了 text DefaultMapController,它只出现在它自己的类定义中,以及JMapViewer构造函数中的匿名实例中。


编辑:

确实似乎有一种方法可以通过使用java.awt.Componentmethod来访问匿名侦听器getMouseListeners()。所以从技术上讲,在我的应用程序中,我可以在这个集合中搜索 的实例DefaultMapController,并使用它来访问我需要用来更改控制器选项的方法。

不过,为了扮演魔鬼的拥护者,如果我按照最初的想法为地图提供其控制器的引用,现在我有一种循环引用(地图知道控制器,控制器知道地图)。这是一个坏主意吗?

0 投票
1 回答
1499 浏览

java - 使用 OpenStreetMaps JMapViewer 移动地图标记

我在 Swing 中使用 JMapViewer 创建地图。我在地图上有几个代表汽车的 MapMarkerDots。我正在尝试更新这些标记的位置,以便它们看起来像是在地图上行驶,但它不能正常工作。我有一个“汽车”要遵循的坐标列表,但发生的情况是位置已更新,但标记在完成之前不会重绘,这意味着标记是在初始位置和最终位置绘制的,而不是在两者之间的每一点。我用于此的代码如下。关于为什么会发生这种情况的任何想法?

调用函数(基于@Catalina 的回答):

这是在鼠标单击事件上调用的。

0 投票
1 回答
295 浏览

java - 如何将纬度/经度网格线添加到 JMapViewer

使用 JMapViewer 时,有什么方法可以自动显示纬度/经度网格线?不幸的是,JMapViewer.setTileGridVisible方法不是一回事。我知道可以手动完成,但我必须弄清楚何时显示什么分辨率等。听起来很痛苦。

0 投票
1 回答
3547 浏览

java - OpenStreetMap - 处理离线地图的 java 库

我需要创建一个可以在 linux 系统上运行的应用程序。基本上,我想实现像谷歌地图这样的东西,但功能要少得多。应用程序需要能够执行以下操作:

  • 打开并显示离线地图,因为不会有任何互联网连接
  • 会有一条静态路线,比如铁路,必须显示,不会改变
  • 会有一个动态变化点,应该更新

我从来没有真正开发过这种应用程序,我只使用 Google Maps for android v2,这很简单,所以我不会有任何问题,但如果没有互联网连接,这不是一个选择。所以这是我的问题:

  • 我下载了我需要的 .osm 格式的地图。如果我理解正确,我需要使用 Mapnik 之类的东西预渲染这些文件。这种方法正确吗?如果是,我如何使用 Mapnik 进行此渲染?如果没有,你有什么推荐的?
  • 假设我完成了渲染部分。如果我理解正确,现在我应该使用 JMapViewer 之类的东西。我应该只是将 .jar 导入我的项目,然后这个 api 将提供一个地图视图,并且通过一些编码,我可以使用该 api 来显示我已经渲染的离线地图。这个对吗?

另外,如果您能提出任何建议,这将对我有所帮助,我将不胜感激。

提前谢谢,干杯

0 投票
0 回答
141 浏览

swing - 将 JTextArea 添加到 JMapViewer?

我们可以将 JTextArea 添加到 JMapViewer 吗?就像是

另一种解决方法是将其添加到 JFrame/JInternalFrame 中的 GridBagLayout,但我想知道是否可以在地图中显示文本?