OpenLayers で、次の形式のコードを使用して、2 つの 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
2 つのポリゴンの "xor" が表示されていますが、代わりにそれらの "or" を表示したいところです。つまり、真ん中の穴が緑色で塗りつぶされています。
どうすればいいですか?Openlayers の表示の問題だと確信していますが、それを制御するためのフラグがどこにも見つかりません。
元の 2 つのポリゴンは次のとおりです。
ポリゴン ホール http://www.jackhollow.co.uk/misc/polygon2.png
1 つのレイヤーに一緒に表示すると重なりますが、Openlayers は交差部分を塗りつぶしません。