gpt4 book ai didi

java - 在 JMapViewer 中动态更新标记

转载 作者:行者123 更新时间:2023-11-30 07:22:12 25 4
gpt4 key购买 nike

你好 Stack Overflow 社区,

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

for(int i = 0; i < latArrayList.size(); i++){
map.addMapMarker(new MapMarkerDot((double)latArrayList.get(i), (double)longArrayList.get(i)));
}

编辑: map 是一个 jMapViewer 对象。

而且效果很好。问题是我需要使用计时器每 20 秒刷新一次 map ,我发现的唯一方法是关闭和打开 map ,如下所示:

    theMap.setVisible(false);
theMap = new Map();
theMap.setVisible(true);

编辑:theMap 是一个对象(jFrame 而不是 jMapViewer)我在主函数中创建(就像在演示中一样),我不能在它上面使用 addMapMarker(比如 theMap.addMapMarker(150.2,150.2))

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

非常感谢。

最佳答案

我从未使用过该 API,但看起来 theMap.removeAllMapMarkers(); 可以解决问题。然后您可以再次开始添加新标记。

关于你的循环,如果你用泛型声明你的列表,你就不需要强制转换为 double:

List<Double> latArrayList = new ArrayList<Double> ();
latArrayList.add(125.87); //or whatever

for(int i = 0; i < latArrayList.size(); i++){
theMap.addMapMarker(new MapMarkerDot(latArrayList.get(i), longArrayList.get(i)));
}

关于java - 在 JMapViewer 中动态更新标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12902396/

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