我在理解ResultSet时遇到了一些麻烦,所以我问你。我将简要介绍一下我的担忧。
我有一张看起来像这样的表
id(serial) | border(geometry)
1 latlnggeom1
2 latlnggeom2
3 latlnggeom3
我想从该表中获取坐标并将它们显示在PolygonOptions中,通常我会这样做:
PolygonOptions p = new PolygonOptions().add(new LatLng(lat1, lng1), new LatLng(lat2, lng2), new LatLng(lat3, lng3));
当坐标不在数据库中,但是有175个坐标,我不知道从数据库中获取坐标时怎么做,我想我不需要在add()方法中添加175个条目。到目前为止我的代码看起来像:
prepst = dbops.connect(DB_URL, DB_USER, DB_PW)
.prepareStatement(sql);
rs = prepst.executeQuery();
while (rs.next()) {
int id = rs.getInt("id");
double x = rs.getDouble("x");
double y = rs.getDouble("y");
Log.e(Borders.class.getName(), id + " " + x + " " + y);
PolygonOptions rectOptions = new PolygonOptions()
.add(new LatLng(x, y)).strokeWidth((float) 1.5)
.fillColor(color);
map.addPolygon(rectOptions);
}
Log.e正确显示值:
1 44.371002 23.739099
2 44.365234 23.749742
...
175 44.370394 23.738563
但我坚持将值添加到PolygonOptions并进一步将多边形添加到地图中。提前谢谢。
答案 0 :(得分:0)
我确实解决了这个问题,我使用了LatLng的ArrayList,它运行得很好。我将发布代码并在下面解释,以便将来遇到这个问题。
//initialize an ArrayList of LatLng type.
ArrayList<LatLng> border = new ArrayList<LatLng>();
if (dbops.connect(DB_URL, DB_USER, DB_PW).isValid(1)) {
dbops.disconnect();
prepst = dbops.connect(DB_URL, DB_USER, DB_PW)
.prepareStatement(sql);
rs = prepst.executeQuery();
while (rs.next()) {
int id = rs.getInt("id");
double x = rs.getDouble("x");
double y = rs.getDouble("y");
Log.e(Borders.class.getName(), id + " " + x + " " + y);
LatLng ll = new LatLng(x, y); //Create a LatLng object to store the x,y doubles inside the array.
border.add(ll); //add each x,y taken from the database into your ArrayList.
}
Log.e(Borders.class.getName(), "" + border); //check and make sure your arraylist was created succesfully.
PolygonOptions rectOptions = new PolygonOptions().addAll(border)
.strokeWidth((float) 1.5).fillColor(color); //take each item from the arraylist and add it to your polygon
map.addPolygon(rectOptions);
Log.e(Borders.class.getName(), "polygonadded");
dbops.disconnect();
}
所以你基本上做的是,你初始化一个LatLng类型的ArrayList,从数据库中获取数据并创建一个LatLng对象来存储从数据库中获取的值。然后将LatLng对象存储在ArrayList中,最后将ArrayList添加到PolygonOptions中。请注意,我使用addAll();
更改了方法add()