UNPKG

openlayers

Version:

Build tools and sources for developing OpenLayers based mapping applications

63 lines (56 loc) 1.68 kB
goog.provide('ol.geom.flat.area'); /** * @param {Array.<number>} flatCoordinates Flat coordinates. * @param {number} offset Offset. * @param {number} end End. * @param {number} stride Stride. * @return {number} Area. */ ol.geom.flat.area.linearRing = function(flatCoordinates, offset, end, stride) { var twiceArea = 0; var x1 = flatCoordinates[end - stride]; var y1 = flatCoordinates[end - stride + 1]; for (; offset < end; offset += stride) { var x2 = flatCoordinates[offset]; var y2 = flatCoordinates[offset + 1]; twiceArea += y1 * x2 - x1 * y2; x1 = x2; y1 = y2; } return twiceArea / 2; }; /** * @param {Array.<number>} flatCoordinates Flat coordinates. * @param {number} offset Offset. * @param {Array.<number>} ends Ends. * @param {number} stride Stride. * @return {number} Area. */ ol.geom.flat.area.linearRings = function(flatCoordinates, offset, ends, stride) { var area = 0; var i, ii; for (i = 0, ii = ends.length; i < ii; ++i) { var end = ends[i]; area += ol.geom.flat.area.linearRing(flatCoordinates, offset, end, stride); offset = end; } return area; }; /** * @param {Array.<number>} flatCoordinates Flat coordinates. * @param {number} offset Offset. * @param {Array.<Array.<number>>} endss Endss. * @param {number} stride Stride. * @return {number} Area. */ ol.geom.flat.area.linearRingss = function(flatCoordinates, offset, endss, stride) { var area = 0; var i, ii; for (i = 0, ii = endss.length; i < ii; ++i) { var ends = endss[i]; area += ol.geom.flat.area.linearRings(flatCoordinates, offset, ends, stride); offset = ends[ends.length - 1]; } return area; };