gpt4 book ai didi

java - java中动态重命名对象?

转载 作者:行者123 更新时间:2023-12-01 22:11:24 27 4
gpt4 key购买 nike

我正在使用 jsf/primefaces 开发一个 Web 应用程序。在我的应用程序中,我将大量多边形推送到 gmap 叠加层上。然而,当我将多边形推到叠加层上时,它会合并成一个大多边形,因为对象名称在 Polygon 多边形中是静态的。我的问题是如何在迭代时重命名多边形并将多边形对象名称从多边形更改为多边形1、多边形2、多边形3等。这是我的代码片段,我试图将多边形推到叠加层上。

Polygon polygon = new Polygon();

while (rs.next()) {
HashMap<Integer, Polygon> map;
map = new HashMap<Integer, Polygon>();
int id = rs.getInt(1);
String value = rs.getString(2);

String valuereal = value.replaceAll("[^0-9 .,-]+", "");
ArrayList<String> myList = new ArrayList<String>(Arrays.asList(valuereal.split(",")));
myList.remove(myList.size() - 1);
for (String coordString : myList) {

String[] parts = coordString.split(" ");

String latS = parts[0];
String lngS = parts[1];

double lat = Double.parseDouble(latS);
double lng = Double.parseDouble(lngS);

LatLng coord = new LatLng(lat, lng);
polygon.getPaths().add(coord);
map.put(id, polygon);

}

polygon.setStrokeColor("#000000");
polygon.setFillColor("#009900");
polygon.setStrokeOpacity(2.0);
polygon.setFillOpacity(3.0);
System.out.println(map.get(id).getPaths());

polygonModel.addOverlay((Polygon) map.get(id));

最佳答案

您的问题是您在循环外部实例化了polygon 对象。要将它们分开,您不需要创建“polygon1、plygon2 ..等等”。

更简洁的方法是在循环外创建一个数组列表,在循环内创建一个新的“多边形”并继续将多边形插入数组列表中。优点是您稍后可以使用此 ArrayList 来迭代并对多边形执行任何操作

 ArrayList <Polygon> polygons = new ArrayList<Polygon>();

while (rs.next()) {
Polygon polygon = new Polygon();
.
.
.
.
for(....){
polygon.getPaths().add(coord);
polygons.add(polygon)
}
// now add all polygons to map

for (Polygon p : polygons) {
map.put(id, p);
}
} // end of while

上面只是一个片段,但应该让您了解我的意思。请原谅任何语法错误,我已经有一段时间没有讲过 Java 了。

这将为您提供添加到 map 中的单独多边形对象,但是我不太确定将其添加到 map 对象中的“id”。这似乎是商业逻辑。不过你明白了。最多,您可能必须为每个多边形添加新的 ID,这会将 map.put 循环推到 while

之外

关于java - java中动态重命名对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31751098/

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