Stack Overflow 社区您好,
我是一个Java新手,我正在做一个简单的java项目,我从(动态)源获取坐标(纬度和经度)并使用JMapViewer(是的,不是JXMapViewer)在 map 上显示标记。我已将所有坐标放入两个 ArrayList 中。 看起来像这样:
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/