问题标签 [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.
java - 如何确保 OverlayLayout 中的正确绘制顺序?
我正在使用 a JPanel
with anOverlayLayout
在彼此之上绘制两个不相关的组件。具体来说,我有一个包含我自己的线条图的透明组件,在它下面,我使用了一个JMapViewer
显示 OpenStreetMap 瓷砖的组件。这行得通。
除非 JMapViewer 异步加载图块。在这种情况下,它会在加载完成时调用repaint()
自己,并将自己绘制在我的线层上。我的线层无法知道这一点,因为它无法知道 JMapViewer 何时选择重新绘制自己。
现在我希望在JPanel
重新绘制地图层时重新绘制我的线层,因为它知道正确的绘制顺序并且知道我的线层必须重新绘制。但它不这样做。
你会如何解决这个问题?
java - 如何从我的 JMapViewer 世界地图中获取鼠标点击位置
我使用JMapViewer jar 在 JPanel 上显示世界地图。
在地图上我添加了MapMarkerDot's
哪些是 gps 点。
问题是当我MapMarkerDot
在地图上单击 a 时,我
找不到接口或侦听器来捕捉点击并给我
点击的MapMarkerDot
身份。
这里有没有人使用过代码或者可以给我一些想法。
我不想修改 jar 源,但也许我必须输入一个接口。
我知道这是一个抽象的问题,但希望得到帮助
java - 在 JMapViewer 中的两个地理点之间画线
我正在使用 JMap Viwer http://wiki.openstreetmap.org/wiki/JMapViewer在 Java 中使用 OpenStreet Maps我可以加载地图,一切正常,但我不知道如何在纬度的两点之间画一条线和经度。
任何人都知道绘制这种线条的功能吗?
谢谢你。
java - JMapViewer OSM 地图无法拖动
我试图找出哪些映射工具最适合我的基于 java swing 的 OSM 映射。早些时候,我在MapPanel的基础上制作了一张功能地图。后来我几乎可以克隆应用程序,只需将 MapPanel 替换为JMapViewer 即可使其正常工作。我更喜欢后者,因为它具有在地图上放置标记和多边形的功能。然而,缺点是由于某种原因我不能用鼠标拖动地图。在 JMapViewer 的包中有一个 Demo 类,它显示相同的行为。如何在 JMapViewer 中使 OSM 地图可拖动?
编辑:此代码将绘制一个可以在面板中显示的地图,并通过添加和使地图可拖动。mapController
setMovementMouseButton()
java - 在 JMapViewer 中动态更新标记
你好 Stack Overflow 社区,
我是一个 Java 新手,我正在做一个简单的 Java 项目,我从(动态)源获取坐标(纬度和经度)并使用 JMapViewer(是的,不是 JXMapViewer)在地图上显示标记。我已将所有坐标放在两个 ArrayList(s) 中。它看起来像这样:
编辑:地图是一个 jMapViewer 对象。
它工作得很好。问题是我需要这张地图使用计时器每 20 秒刷新一次,我发现的唯一方法是关闭和打开地图,如下所示:
编辑:theMap 是我在主函数中创建的对象(jFrame 不是 jMapViewer)(如在演示中),我不能在其上使用 addMapMarker(如 theMap.addMapMarker(150.2,150.2))
好吧,正如您可以想象的那样,这很烦人(每 20 秒窗口关闭和打开一次,并且之前的“浏览”会话会丢失)。那么有没有办法刷新呢?通过动态添加标记还是仅刷新内容?
非常感谢。
java - 带有匿名 EventListener 的 JPanel - 为什么 GC 不销毁侦听器?
我一直在阅读 JMapViewer的开源代码。如果其他人希望查看它,请检查SVN。
简而言之,主类是JMapViewer
,它是 a 的扩展JPanel
。还有另一个非常重要的类称为DefaultMapController
主MouseListener
类。
我注意到的第一件奇怪的事情是查看器没有对控制器的引用。构造JMapViewer
函数实例化 的匿名实例DefaultMapController
,如下所示:
在我看来,这似乎是一个糟糕的设计选择,因为控制器有大量的方法(选项、切换等 - 示例如下所示),现在根本无法访问,那么它们有什么好处呢?
如上面的第一个片段所示,控制器确实具有对查看器的引用,这就是它能够行使控制的方式。
然而,我想到了更奇怪的事情!如果侦听器的这个匿名实例没有引用,为什么还要允许它存活呢?GC不应该快速销毁它吗?或者 GC 是否足够聪明,可以知道引用 live 的侦听器类也JComponent
必须保持活跃才能正常工作,即使由于某种奇怪的原因它没有名称?
所以,两个真正的问题:
- 为什么 GC 不销毁对象?
- 这确实是一个糟糕的设计选择,还是有某种我不知道从实例化查看器的类访问控制器的方式?
我想为这个开源库做出贡献,我的第一个更改想法是更改JMapViewer
类以具有引用其控制器的字段,并更改构造函数以将当前匿名控制器分配给这个新字段。但是,我想确保我不会无知地遗漏一些东西。我已经在整个代码库中搜索了 text DefaultMapController
,它只出现在它自己的类定义中,以及JMapViewer
构造函数中的匿名实例中。
编辑:
确实似乎有一种方法可以通过使用java.awt.Component
method来访问匿名侦听器getMouseListeners()
。所以从技术上讲,在我的应用程序中,我可以在这个集合中搜索 的实例DefaultMapController
,并使用它来访问我需要用来更改控制器选项的方法。
不过,为了扮演魔鬼的拥护者,如果我按照最初的想法为地图提供其控制器的引用,现在我有一种循环引用(地图知道控制器,控制器知道地图)。这是一个坏主意吗?
java - 使用 OpenStreetMaps JMapViewer 移动地图标记
我在 Swing 中使用 JMapViewer 创建地图。我在地图上有几个代表汽车的 MapMarkerDots。我正在尝试更新这些标记的位置,以便它们看起来像是在地图上行驶,但它不能正常工作。我有一个“汽车”要遵循的坐标列表,但发生的情况是位置已更新,但标记在完成之前不会重绘,这意味着标记是在初始位置和最终位置绘制的,而不是在两者之间的每一点。我用于此的代码如下。关于为什么会发生这种情况的任何想法?
调用函数(基于@Catalina 的回答):
这是在鼠标单击事件上调用的。
java - 如何将纬度/经度网格线添加到 JMapViewer
使用 JMapViewer 时,有什么方法可以自动显示纬度/经度网格线?不幸的是,JMapViewer.setTileGridVisible
方法不是一回事。我知道可以手动完成,但我必须弄清楚何时显示什么分辨率等。听起来很痛苦。
java - OpenStreetMap - 处理离线地图的 java 库
我需要创建一个可以在 linux 系统上运行的应用程序。基本上,我想实现像谷歌地图这样的东西,但功能要少得多。应用程序需要能够执行以下操作:
- 打开并显示离线地图,因为不会有任何互联网连接
- 会有一条静态路线,比如铁路,必须显示,不会改变
- 会有一个动态变化点,应该更新
我从来没有真正开发过这种应用程序,我只使用 Google Maps for android v2,这很简单,所以我不会有任何问题,但如果没有互联网连接,这不是一个选择。所以这是我的问题:
- 我下载了我需要的 .osm 格式的地图。如果我理解正确,我需要使用 Mapnik 之类的东西预渲染这些文件。这种方法正确吗?如果是,我如何使用 Mapnik 进行此渲染?如果没有,你有什么推荐的?
- 假设我完成了渲染部分。如果我理解正确,现在我应该使用 JMapViewer 之类的东西。我应该只是将 .jar 导入我的项目,然后这个 api 将提供一个地图视图,并且通过一些编码,我可以使用该 api 来显示我已经渲染的离线地图。这个对吗?
另外,如果您能提出任何建议,这将对我有所帮助,我将不胜感激。
提前谢谢,干杯
swing - 将 JTextArea 添加到 JMapViewer?
我们可以将 JTextArea 添加到 JMapViewer 吗?就像是
另一种解决方法是将其添加到 JFrame/JInternalFrame 中的 GridBagLayout,但我想知道是否可以在地图中显示文本?