Add ol.geom.MultiPolygon#getSimplifiedGeometryInternal
This commit is contained in:
@@ -3,6 +3,7 @@ goog.provide('ol.geom.MultiPolygon');
|
|||||||
goog.require('ol.geom.Geometry');
|
goog.require('ol.geom.Geometry');
|
||||||
goog.require('ol.geom.Polygon');
|
goog.require('ol.geom.Polygon');
|
||||||
goog.require('ol.geom.flat');
|
goog.require('ol.geom.flat');
|
||||||
|
goog.require('ol.geom.simplify');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -90,6 +91,24 @@ ol.geom.MultiPolygon.prototype.getInteriorPoints = function() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @inheritDoc
|
||||||
|
*/
|
||||||
|
ol.geom.MultiPolygon.prototype.getSimplifiedGeometryInternal =
|
||||||
|
function(squaredTolerance) {
|
||||||
|
var simplifiedFlatCoordinates = [];
|
||||||
|
var simplifiedEndss = [];
|
||||||
|
simplifiedFlatCoordinates.length =
|
||||||
|
ol.geom.simplify.douglasPeuckerss(this.flatCoordinates, 0,
|
||||||
|
this.endss_, this.stride, squaredTolerance, simplifiedFlatCoordinates,
|
||||||
|
0, simplifiedEndss);
|
||||||
|
var simplifiedMultiPolygon = new ol.geom.MultiPolygon(null);
|
||||||
|
simplifiedMultiPolygon.setFlatCoordinates(
|
||||||
|
ol.geom.GeometryLayout.XY, simplifiedFlatCoordinates, simplifiedEndss);
|
||||||
|
return simplifiedMultiPolygon;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return {Array.<ol.geom.Polygon>} Polygons.
|
* @return {Array.<ol.geom.Polygon>} Polygons.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -10,6 +10,30 @@ describe('ol.geom.MultiPolygon', function() {
|
|||||||
}).not.to.throwException();
|
}).not.to.throwException();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('with a simple MultiPolygon', function() {
|
||||||
|
|
||||||
|
var multiPolygon;
|
||||||
|
beforeEach(function() {
|
||||||
|
multiPolygon = new ol.geom.MultiPolygon([
|
||||||
|
[[[0, 0], [0, 2], [1, 1], [2, 0]]],
|
||||||
|
[[[3, 0], [4, 1], [5, 2], [5, 0]]]
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('#getSimplifiedGeometry', function() {
|
||||||
|
|
||||||
|
it('returns the expected result', function() {
|
||||||
|
var simplifiedGeometry = multiPolygon.getSimplifiedGeometry(1);
|
||||||
|
expect(simplifiedGeometry).to.be.an(ol.geom.MultiPolygon);
|
||||||
|
expect(simplifiedGeometry.getCoordinates()).to.eql([
|
||||||
|
[[[0, 0], [0, 2], [2, 0]]],
|
||||||
|
[[[3, 0], [5, 2], [5, 0]]]
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user