我正在开发使用地图的应用程序。我想在Java Android中显示带有“孔”的多边形。我进行了搜索,但不幸的是,我找不到解决方案。我认为我的问题是我无法设置正确的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循环
答案 0 :(得分:1)
我认为您正在寻找的解决方案是PolygonOptions类中的addHole函数。
要让您的点(如Iterable<LatLng>
)起作用,您就希望有一个空洞,那么您应该一切顺利。
我不知道孔的值在代码中的确切位置,但是基本上,您只是这样调用该函数:
poly = new PolygonOptions();
// set the polygon's attributes
//...
//Iterable<LatLng> hole = //whatever contains the hole
poly.addHole(hole);