在 OpenLayers 中,我使用以下形式的代码创建了一个由两个 LinearRing 对象组成的多边形(这是在 Java+GWT 中,但同样的原则适用于 JS):
List<LinearRing> linearRingList = new ArrayList<LinearRing>();
List<Point> points1 = new ArrayList<Point>();
... populate points1 ...;
linearRingList.add(new LinearRing(points1.toArray(new Point[points.size()])));
List<Point> points2 = new ArrayList<Point>();
... populate points2 ...;
linearRingList.add(new LinearRing(points2.toArray(new Point[points.size()])));
Polygon poly = new Polygon(linearRingList.toArray(new LinearRing[linearRingList.size()]));
VectorFeature feature = new VectorFeature(poly);
myLayer.addFeature(feature);
当我在地图上查看这一层时,如果由 points1 和 points2 定义的多边形重叠,我会看到一个洞:
多边形孔 http://www.jackhollow.co.uk/misc/polygon.png
我看到了两个多边形的“异或”,而我想看到它们的“或”,即中间的那个洞用绿色填充。
我该怎么做呢?我确定这只是 Openlayers 中的一个显示问题,但我在任何地方都找不到控制它的标志。
原来的两个多边形如下:
多边形孔 http://www.jackhollow.co.uk/misc/polygon2.png
如果在单个图层上一起显示,它们会重叠,但 Openlayers 不会填充相交部分。