OpenLayersには、LineStringの頂点を単純化する機能が組み込まれていることに気付きましたが、ポリゴンには何も表示されません。これを行う簡単な方法はありますか?これがラインストリングの例です。 http://openlayers.org/dev/examples/simplify-linestring.html
質問する
1768 次
2 に答える
3
ポリゴンは、OpenLayers.Geometry.LinearRingで構成されます。これは、基本的に閉じている特別なLineStringです。これは、ポリゴンをLineStringに変換できることを意味します。このような:
var originalAsLinearRing = new OpenLayers.Geometry.LinearRing(originalPolygon.components[0].components);
var originalAsLineString = new OpenLayers.Geometry.LineString(originalAsLinearRing.components);
次に、例に示すようにLineStringを単純化し、LineStringをポリゴンに変換し直します。もっとエレガントな方法があると思いますが、これもうまくいきます。
于 2012-12-16T15:45:15.467 に答える
0
マーティンの答えに基づいてフィドルを作成しました:http: //jsfiddle.net/gdonarum/wxnd5gom/
var linearRing = new OpenLayers.Geometry.LinearRing(original.components[0].components);
var lineString = new OpenLayers.Geometry.LineString(linearRing.components);
var newLineString = lineString.simplify(tolerance);
var newLinearRing = new OpenLayers.Geometry.LinearRing(newLineString.getVertices());
var newPolygon = new OpenLayers.Geometry.Polygon(newLinearRing);
var reducedFeature = new OpenLayers.Feature.Vector(newPolygon);
于 2015-01-07T16:25:40.137 に答える