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

How to draw polygons with hole(s) in WKT geometry

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

我的结果:

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

我的代码:

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循环

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

给那个函数你的分数(如Iterable<LatLng>)你想要一个洞,你应该好好去。

我不知道你的漏洞值在代码中的确切位置,但基本上,你只需像这样调用该函数:

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