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.Polygon');
|
||||
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.
|
||||
*/
|
||||
|
||||
@@ -10,6 +10,30 @@ describe('ol.geom.MultiPolygon', function() {
|
||||
}).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