Factor out ol.geom.flat.center
This commit is contained in:
26
src/ol/geom/flat/centerflatgeom.js
Normal file
26
src/ol/geom/flat/centerflatgeom.js
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
goog.provide('ol.geom.flat.center');
|
||||||
|
|
||||||
|
goog.require('ol.extent');
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {Array.<number>} flatCoordinates Flat coordinates.
|
||||||
|
* @param {number} offset Offset.
|
||||||
|
* @param {Array.<Array.<number>>} endss Endss.
|
||||||
|
* @param {number} stride Stride.
|
||||||
|
* @return {Array.<number>} Flat centers.
|
||||||
|
*/
|
||||||
|
ol.geom.flat.center.linearRingss =
|
||||||
|
function(flatCoordinates, offset, endss, stride) {
|
||||||
|
var flatCenters = [];
|
||||||
|
var i, ii;
|
||||||
|
var extent = ol.extent.createEmpty();
|
||||||
|
for (i = 0, ii = endss.length; i < ii; ++i) {
|
||||||
|
var ends = endss[i];
|
||||||
|
extent = ol.extent.createOrUpdateFromFlatCoordinates(
|
||||||
|
flatCoordinates, offset, ends[0], stride);
|
||||||
|
flatCenters.push((extent[0] + extent[2]) / 2, (extent[1] + extent[3]) / 2);
|
||||||
|
offset = ends[ends.length - 1];
|
||||||
|
}
|
||||||
|
return flatCenters;
|
||||||
|
};
|
||||||
@@ -1,26 +1 @@
|
|||||||
goog.provide('ol.geom.flat');
|
goog.provide('ol.geom.flat');
|
||||||
|
|
||||||
goog.require('ol.extent');
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param {Array.<number>} flatCoordinates Flat coordinates.
|
|
||||||
* @param {number} offset Offset.
|
|
||||||
* @param {Array.<Array.<number>>} endss Endss.
|
|
||||||
* @param {number} stride Stride.
|
|
||||||
* @return {Array.<number>} Flat centers.
|
|
||||||
*/
|
|
||||||
ol.geom.flat.linearRingssGetFlatCenters =
|
|
||||||
function(flatCoordinates, offset, endss, stride) {
|
|
||||||
var flatCenters = [];
|
|
||||||
var i, ii;
|
|
||||||
var extent = ol.extent.createEmpty();
|
|
||||||
for (i = 0, ii = endss.length; i < ii; ++i) {
|
|
||||||
var ends = endss[i];
|
|
||||||
extent = ol.extent.createOrUpdateFromFlatCoordinates(
|
|
||||||
flatCoordinates, offset, ends[0], stride);
|
|
||||||
flatCenters.push((extent[0] + extent[2]) / 2, (extent[1] + extent[3]) / 2);
|
|
||||||
offset = ends[ends.length - 1];
|
|
||||||
}
|
|
||||||
return flatCenters;
|
|
||||||
};
|
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ goog.require('ol.geom.Polygon');
|
|||||||
goog.require('ol.geom.SimpleGeometry');
|
goog.require('ol.geom.SimpleGeometry');
|
||||||
goog.require('ol.geom.flat');
|
goog.require('ol.geom.flat');
|
||||||
goog.require('ol.geom.flat.area');
|
goog.require('ol.geom.flat.area');
|
||||||
|
goog.require('ol.geom.flat.center');
|
||||||
goog.require('ol.geom.flat.closest');
|
goog.require('ol.geom.flat.closest');
|
||||||
goog.require('ol.geom.flat.contains');
|
goog.require('ol.geom.flat.contains');
|
||||||
goog.require('ol.geom.flat.deflate');
|
goog.require('ol.geom.flat.deflate');
|
||||||
@@ -176,7 +177,7 @@ ol.geom.MultiPolygon.prototype.getEndss = function() {
|
|||||||
*/
|
*/
|
||||||
ol.geom.MultiPolygon.prototype.getFlatInteriorPoints = function() {
|
ol.geom.MultiPolygon.prototype.getFlatInteriorPoints = function() {
|
||||||
if (this.flatInteriorPointsRevision_ != this.getRevision()) {
|
if (this.flatInteriorPointsRevision_ != this.getRevision()) {
|
||||||
var flatCenters = ol.geom.flat.linearRingssGetFlatCenters(
|
var flatCenters = ol.geom.flat.center.linearRingss(
|
||||||
this.flatCoordinates, 0, this.endss_, this.stride);
|
this.flatCoordinates, 0, this.endss_, this.stride);
|
||||||
this.flatInteriorPoints_ = ol.geom.flat.interiorpoint.linearRingss(
|
this.flatInteriorPoints_ = ol.geom.flat.interiorpoint.linearRingss(
|
||||||
this.getOrientedFlatCoordinates(), 0, this.endss_, this.stride,
|
this.getOrientedFlatCoordinates(), 0, this.endss_, this.stride,
|
||||||
|
|||||||
Reference in New Issue
Block a user