Factor out ol.geom.flat.length
This commit is contained in:
45
src/ol/geom/flat/lengthflatgeom.js
Normal file
45
src/ol/geom/flat/lengthflatgeom.js
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
goog.provide('ol.geom.flat.length');
|
||||||
|
|
||||||
|
goog.require('ol.geom.flat');
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {Array.<number>} flatCoordinates Flat coordinates.
|
||||||
|
* @param {number} offset Offset.
|
||||||
|
* @param {number} end End.
|
||||||
|
* @param {number} stride Stride.
|
||||||
|
* @return {number} Length.
|
||||||
|
*/
|
||||||
|
ol.geom.flat.length.lineString =
|
||||||
|
function(flatCoordinates, offset, end, stride) {
|
||||||
|
var x1 = flatCoordinates[offset];
|
||||||
|
var y1 = flatCoordinates[offset + 1];
|
||||||
|
var length = 0;
|
||||||
|
var i;
|
||||||
|
for (i = offset + stride; i < end; i += stride) {
|
||||||
|
var x2 = flatCoordinates[i];
|
||||||
|
var y2 = flatCoordinates[i + 1];
|
||||||
|
length += Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
|
||||||
|
x1 = x2;
|
||||||
|
y1 = y2;
|
||||||
|
}
|
||||||
|
return length;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {Array.<number>} flatCoordinates Flat coordinates.
|
||||||
|
* @param {number} offset Offset.
|
||||||
|
* @param {number} end End.
|
||||||
|
* @param {number} stride Stride.
|
||||||
|
* @return {number} Perimeter.
|
||||||
|
*/
|
||||||
|
ol.geom.flat.length.linearRing =
|
||||||
|
function(flatCoordinates, offset, end, stride) {
|
||||||
|
var perimeter =
|
||||||
|
ol.geom.flat.length.lineString(flatCoordinates, offset, end, stride);
|
||||||
|
var dx = flatCoordinates[end - stride] - flatCoordinates[offset];
|
||||||
|
var dy = flatCoordinates[end - stride + 1] - flatCoordinates[offset + 1];
|
||||||
|
perimeter += Math.sqrt(dx * dx + dy * dy);
|
||||||
|
return perimeter;
|
||||||
|
};
|
||||||
@@ -198,29 +198,6 @@ ol.geom.flat.inflateCoordinatesss =
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param {Array.<number>} flatCoordinates Flat coordinates.
|
|
||||||
* @param {number} offset Offset.
|
|
||||||
* @param {number} end End.
|
|
||||||
* @param {number} stride Stride.
|
|
||||||
* @return {number} Length.
|
|
||||||
*/
|
|
||||||
ol.geom.flat.lineStringLength = function(flatCoordinates, offset, end, stride) {
|
|
||||||
var x1 = flatCoordinates[offset];
|
|
||||||
var y1 = flatCoordinates[offset + 1];
|
|
||||||
var length = 0;
|
|
||||||
var i;
|
|
||||||
for (i = offset + stride; i < end; i += stride) {
|
|
||||||
var x2 = flatCoordinates[i];
|
|
||||||
var y2 = flatCoordinates[i + 1];
|
|
||||||
length += Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
|
|
||||||
x1 = x2;
|
|
||||||
y1 = y2;
|
|
||||||
}
|
|
||||||
return length;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Array.<number>} flatCoordinates Flat coordinates.
|
* @param {Array.<number>} flatCoordinates Flat coordinates.
|
||||||
* @param {number} offset Offset.
|
* @param {number} offset Offset.
|
||||||
@@ -298,24 +275,6 @@ ol.geom.flat.linearRingIsClockwise =
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param {Array.<number>} flatCoordinates Flat coordinates.
|
|
||||||
* @param {number} offset Offset.
|
|
||||||
* @param {number} end End.
|
|
||||||
* @param {number} stride Stride.
|
|
||||||
* @return {number} Perimeter.
|
|
||||||
*/
|
|
||||||
ol.geom.flat.linearRingPerimeter =
|
|
||||||
function(flatCoordinates, offset, end, stride) {
|
|
||||||
var perimeter =
|
|
||||||
ol.geom.flat.lineStringLength(flatCoordinates, offset, end, stride);
|
|
||||||
var dx = flatCoordinates[end - stride] - flatCoordinates[offset];
|
|
||||||
var dy = flatCoordinates[end - stride + 1] - flatCoordinates[offset + 1];
|
|
||||||
perimeter += Math.sqrt(dx * dx + dy * dy);
|
|
||||||
return perimeter;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Array.<number>} flatCoordinates Flat coordinates.
|
* @param {Array.<number>} flatCoordinates Flat coordinates.
|
||||||
* @param {number} offset Offset.
|
* @param {number} offset Offset.
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ goog.require('ol.geom.SimpleGeometry');
|
|||||||
goog.require('ol.geom.flat');
|
goog.require('ol.geom.flat');
|
||||||
goog.require('ol.geom.flat.closest');
|
goog.require('ol.geom.flat.closest');
|
||||||
goog.require('ol.geom.flat.interpolate');
|
goog.require('ol.geom.flat.interpolate');
|
||||||
|
goog.require('ol.geom.flat.length');
|
||||||
goog.require('ol.geom.flat.simplify');
|
goog.require('ol.geom.flat.simplify');
|
||||||
|
|
||||||
|
|
||||||
@@ -136,7 +137,7 @@ ol.geom.LineString.prototype.getCoordinates = function() {
|
|||||||
* @todo stability experimental
|
* @todo stability experimental
|
||||||
*/
|
*/
|
||||||
ol.geom.LineString.prototype.getLength = function() {
|
ol.geom.LineString.prototype.getLength = function() {
|
||||||
return ol.geom.flat.lineStringLength(
|
return ol.geom.flat.length.lineString(
|
||||||
this.flatCoordinates, 0, this.flatCoordinates.length, this.stride);
|
this.flatCoordinates, 0, this.flatCoordinates.length, this.stride);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user