我注意到在 openlayers 中它们有一个内置功能来简化 LineString 的顶点,但我没有看到任何多边形。是否有捷径可寻?这是线串的示例。 http://openlayers.org/dev/examples/simplify-linestring.html
问问题
1768 次
2 回答
3
一个多边形由一个OpenLayers.Geometry.LinearRing组成,它基本上是一个封闭的特殊 LineString。这意味着您可以将 Polygon 转换为 LineString。像这样:
var originalAsLinearRing = new OpenLayers.Geometry.LinearRing(originalPolygon.components[0].components);
var originalAsLineString = new OpenLayers.Geometry.LineString(originalAsLinearRing.components);
然后如示例所示简化 LineString 并将 LineString 转换回 Polygon。我相信有一种更优雅的方式,但这也有效。
于 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 回答