如何在WKT几何图形中绘制带孔的多边形

时间:2019-02-26 14:37:50

标签: java android geometry polygon wkt

我正在开发使用地图的应用程序。我想在Java Android中显示带有“孔”的多边形。我进行了搜索,但不幸的是,我找不到解决方案。我认为我的问题是我无法设置正确的fillColor。有人可以帮我吗?

我的结果:

enter image description here

我希望孔的颜色是透明的。

我的代码:

List<ArrayList<LatLng>> multiLatLon;
...
//draw polygon hole 
for(int i=0; i<multiLatLon.size(); i++){
                    poly = new PolygonOptions();
                    for (int j=0; j<multiLatLon.get(i).size(); j++){
                        mop.position(multiLatLon.get(i).get(j));
                        poly.add(multiLatLon.get(i).get(j));
                        Marker m = mMap.addMarker(mop);
                    }
                    poly.fillColor(R.color.colorOcher);
                    Polygon polygon = mMap.addPolygon(poly);
                }

让我知道是否需要更多信息。

解决方案:

...
poly = new PolygonOptions ();
poly.fillColor (ColorUtils.setAlphaComponent (Color.BLUE, 128));
for (int i = 0; i <multiLatLon.size (); i ++) {
 if (i == 0) {
  poly.addAll (multiLatLon.get (i));
 } else {
  poly.addHole (multiLatLon.get (i));
 }
}
mMap.addPolygon(poly);

就我而言,我知道第一个点数组(multiLatLon.get(i))定义了多边形的几何形状;而其他的是多边形孔。

注意:我使用addAll删除了一个for循环

1 个答案:

答案 0 :(得分:1)

我认为您正在寻找的解决方案是PolygonOptions类中的addHole函数。

要让您的点(如Iterable<LatLng>)起作用,您就希望有一个空洞,那么您应该一切顺利。

我不知道孔的值在代码中的确切位置,但是基本上,您只是这样调用该函数:

poly = new PolygonOptions();
// set the polygon's attributes
//...
//Iterable<LatLng> hole = //whatever contains the hole
poly.addHole(hole);