我使用以下Java在谷歌地图上绘制多边形:
public List<LatLng> create(List<LatLng> footprint)
{
SimplePolygon2D polygon = createPolygon(footprint);
if (polygon.isBounded())
{
polygon = createPolygon(Lists.reverse(footprint));
}
Collection<Point2D> bufferPoints = polygon.buffer(-.00003).boundary().vertices();
List<LatLng> footprintOfBuffer = new ArrayList<LatLng>();
for (Point2D point2D : bufferPoints)
{
footprintOfBuffer.add(new LatLng(point2D.x(), point2D.y()));
}
return footprintOfBuffer;
}
private SimplePolygon2D createPolygon(List<LatLng> footprint)
{
SimplePolygon2D polygon = new SimplePolygon2D();
for (LatLng latLng : footprint)
{
polygon.addVertex(new Point2D(latLng.getLat(), latLng.getLng()));
}
return polygon;
}
这对于正方形产生了良好的结果,但对于其他多边形则没有。见下面的结果:
1,2,3,5和6对于我的用例来说已经足够了,但是我不确定为什么4和7似乎有和额外的顶点抛出缓冲区。
在我开始检查isBounded()方法之前,我遇到了一些问题,并在需要时颠倒了顶点的顺序。我注意到的另一个有趣的事情是额外的顶点被添加到我创建的第一个和最后一个顶点之间。
我可能遗漏了一些简单的东西,但我似乎无法弄清楚为什么会这样。
有没有人对此有任何想法或指示?