Google Maps Android API v2 - 未正确绘制空心多边形

时间:2013-01-06 17:11:54

标签: 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);
polygonOptions.strokeWidth(1.0f);

有人遇到同样的问题吗?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

  

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

我写了一个函数来确定List<LatLng>是顺时针的。该代码是this answer的实现:

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;
}

在添加polygon点之前,请将这三行放在:

if (isClockwise(polygon)) {
    Collections.reverse(polygon);
}