谷歌地图Android API v2-空心多边形绘制不正确

谷歌地图Android API v2-空心多边形绘制不正确,android,google-maps,google-maps-android-api-2,Android,Google Maps,Google Maps Android Api 2,下面的代码不适用于Google Maps API v2。多边形(外部和内部多边形)使用右边框绘制,但外部多边形的填充颜色未绘制 PolygonOptions polygonOptions = new PolygonOptions(); polygonOptions.add(outerCoordinates); polygonOptions.addHole(Arrays.asList(innerCoordinates)); polygonOptions.fillColor(Color.BLUE);

下面的代码不适用于Google Maps API v2。多边形(外部和内部多边形)使用右边框绘制,但外部多边形的填充颜色未绘制

PolygonOptions polygonOptions = new PolygonOptions();
polygonOptions.add(outerCoordinates);
polygonOptions.addHole(Arrays.asList(innerCoordinates));
polygonOptions.fillColor(Color.BLUE);
polygonOptions.strokeWidth(1.0f);

有人面临同样的问题吗?

检查是否要求多边形坐标必须按顺时针(或逆时针)顺序排列。试着改变顺序

顶点必须按逆时针顺序添加

我编写了一个函数来确定
列表
是否为顺时针方向。该代码是以下内容的实现:


您是否检查过多边形坐标是否按顺时针(或逆时针)顺序排列?此外,在多边形填充中,通常有两种填充算法可以通过选项设置:零缠绕规则(另一种我忘记了),谢谢您的提示。我将内部多边形的坐标方向从顺时针改为逆时针,结果成功了。输入错误。内多边形的变化是从逆时针方向改为顺时针方向。我根据我的评论发布了一个答案。然后你就可以接受了。
public boolean isClockwise(List<LatLng> region) {
    final int size = region.size();
    LatLng a = region.get(size - 1);
    double aux = 0;
    for (int i = 0; i < size; i++) {
        LatLng b = region.get(i);
        aux += (b.latitude - a.latitude) * (b.longitude + a.longitude);
        a = b;
    }
    return aux <= 0;
}
if (isClockwise(polygon)) {
    Collections.reverse(polygon);
}