Refactor ol.geom.MultiPolygon

This commit is contained in:
Tom Payne
2013-11-09 18:55:52 +01:00
parent daecad22ae
commit df48e2de5c
2 changed files with 22 additions and 46 deletions

View File

@@ -1,7 +1,5 @@
goog.provide('ol.geom.MultiPolygon'); goog.provide('ol.geom.MultiPolygon');
goog.require('goog.asserts');
goog.require('ol.extent');
goog.require('ol.geom.Geometry'); goog.require('ol.geom.Geometry');
@@ -9,44 +7,39 @@ goog.require('ol.geom.Geometry');
/** /**
* @constructor * @constructor
* @extends {ol.geom.Geometry} * @extends {ol.geom.Geometry}
* @param {ol.geom.RawMultiPolygon} ringss Ringss. * @param {ol.geom.RawMultiPolygon} coordinates Coordinates.
* @param {ol.geom.Layout=} opt_layout Layout.
*/ */
ol.geom.MultiPolygon = function(ringss) { ol.geom.MultiPolygon = function(coordinates, opt_layout) {
goog.base(this); goog.base(this);
/** /**
* @type {Array.<Array.<number>>}
* @private * @private
* @type {ol.geom.RawMultiPolygon}
*/ */
this.ringss_ = ringss; this.endss_ = [];
this.setCoordinates(coordinates, opt_layout);
}; };
goog.inherits(ol.geom.MultiPolygon, ol.geom.Geometry); goog.inherits(ol.geom.MultiPolygon, ol.geom.Geometry);
/** /**
* @inheritDoc * @return {ol.geom.RawMultiPolygon} Coordinates.
*/ */
ol.geom.MultiPolygon.prototype.getExtent = function(opt_extent) { ol.geom.MultiPolygon.prototype.getCoordinates = function() {
if (this.extentRevision != this.revision) { return ol.geom.inflateCoordinatesss(
this.extent = ol.extent.createOrUpdateEmpty(this.extent); this.flatCoordinates, 0, this.endss_, this.stride);
var ringss = this.ringss_;
var i, ii;
for (i = 0, ii = ringss.length; i < ii; ++i) {
ol.extent.extendRings(this.extent, ringss[i]);
}
}
goog.asserts.assert(goog.isDef(this.extent));
return ol.extent.returnOrUpdate(this.extent, opt_extent);
}; };
/** /**
* @return {ol.geom.RawMultiPolygon} Ringss. * @return {Array.<Array.<number>>} Endss.
*/ */
ol.geom.MultiPolygon.prototype.getRingss = function() { ol.geom.MultiPolygon.prototype.getEndss = function() {
return this.ringss_; return this.endss_;
}; };
@@ -59,30 +52,13 @@ ol.geom.MultiPolygon.prototype.getType = function() {
/** /**
* @param {ol.geom.RawMultiPolygon} ringss Ringss. * @param {ol.geom.RawMultiPolygon} coordinates Coordinates.
* @param {ol.geom.Layout=} opt_layout Layout.
*/ */
ol.geom.MultiPolygon.prototype.setRingss = function(ringss) { ol.geom.MultiPolygon.prototype.setCoordinates =
this.ringss_ = ringss; function(coordinates, opt_layout) {
this.setLayout(opt_layout, coordinates, 3);
ol.geom.deflateCoordinatesss(
this.flatCoordinates, 0, coordinates, this.stride, this.endss_);
this.dispatchChangeEvent(); this.dispatchChangeEvent();
}; };
/**
* @inheritDoc
*/
ol.geom.MultiPolygon.prototype.transform = function(transformFn) {
var ringss = this.ringss_;
var i, ii;
for (i = 0, ii = ringss.length; i < ii; ++i) {
var rings = ringss[i];
var j, jj;
for (j = 0, jj = rings.length; j < jj; ++j) {
var coordinates = rings[j];
var k, kk;
for (k = 0, kk = coordinates.length; k < kk; ++k) {
var coordinate = coordinates[k];
transformFn(coordinate, coordinate, 2);
}
}
}
};

View File

@@ -418,7 +418,7 @@ ol.replay.canvas.PolygonBatch.prototype.drawMultiPolygonGeometry =
function(multiPolygonGeometry) { function(multiPolygonGeometry) {
goog.asserts.assert(!goog.isNull(this.state_)); goog.asserts.assert(!goog.isNull(this.state_));
this.setFillStrokeStyles_(); this.setFillStrokeStyles_();
var ringss = multiPolygonGeometry.getRingss(); var ringss = multiPolygonGeometry.getCoordinates();
var i, ii; var i, ii;
for (i = 0, ii = ringss.length; i < ii; ++i) { for (i = 0, ii = ringss.length; i < ii; ++i) {
this.drawRings_(ringss[i]); this.drawRings_(ringss[i]);