diff --git a/src/ol/array.js b/src/ol/array.js index a50cd774e9..9bd4df5a7a 100644 --- a/src/ol/array.js +++ b/src/ol/array.js @@ -38,13 +38,13 @@ ol.array.binaryFindNearest = function(arr, target) { /** - * Default compare for array sort, will make sure number sort works okay. + * Compare function for array sort that is safe for numbers. * @param {*} a The first object to be compared. * @param {*} b The second object to be compared. * @return {number} A negative number, zero, or a positive number as the first * argument is less than, equal to, or greater than the second. */ -ol.array.defaultCompare = function(a, b) { +ol.array.numberSafeCompareFunction = function(a, b) { return a > b ? 1 : a < b ? -1 : 0; }; diff --git a/src/ol/geom/flat/interiorpointflatgeom.js b/src/ol/geom/flat/interiorpointflatgeom.js index f73e423e14..bffd186d20 100644 --- a/src/ol/geom/flat/interiorpointflatgeom.js +++ b/src/ol/geom/flat/interiorpointflatgeom.js @@ -41,7 +41,7 @@ ol.geom.flat.interiorpoint.linearRings = function(flatCoordinates, offset, // inside the linear ring. var pointX = NaN; var maxSegmentLength = -Infinity; - intersections.sort(ol.array.defaultCompare); + intersections.sort(ol.array.numberSafeCompareFunction); x1 = intersections[0]; for (i = 1, ii = intersections.length; i < ii; ++i) { x2 = intersections[i]; diff --git a/src/ol/render/canvas/canvasimmediate.js b/src/ol/render/canvas/canvasimmediate.js index ae13f9def7..8920002fcc 100644 --- a/src/ol/render/canvas/canvasimmediate.js +++ b/src/ol/render/canvas/canvasimmediate.js @@ -722,7 +722,7 @@ ol.render.canvas.Immediate.prototype.drawText = goog.abstractMethod; ol.render.canvas.Immediate.prototype.flush = function() { /** @type {Array.} */ var zs = Object.keys(this.callbacksByZIndex_).map(Number); - zs.sort(ol.array.defaultCompare); + zs.sort(ol.array.numberSafeCompareFunction); var i, ii, callbacks, j, jj; for (i = 0, ii = zs.length; i < ii; ++i) { callbacks = this.callbacksByZIndex_[zs[i].toString()]; diff --git a/src/ol/render/canvas/canvasreplay.js b/src/ol/render/canvas/canvasreplay.js index 421fab76db..6c6668ca75 100644 --- a/src/ol/render/canvas/canvasreplay.js +++ b/src/ol/render/canvas/canvasreplay.js @@ -2001,7 +2001,7 @@ ol.render.canvas.ReplayGroup.prototype.replay = function( /** @type {Array.} */ var zs = Object.keys(this.replaysByZIndex_).map(Number); - zs.sort(ol.array.defaultCompare); + zs.sort(ol.array.numberSafeCompareFunction); // setup clipping so that the parts of over-simplified geometries are not // visible outside the current extent when panning diff --git a/src/ol/render/webgl/webglimmediate.js b/src/ol/render/webgl/webglimmediate.js index 37ca04cb4f..d6590cea31 100644 --- a/src/ol/render/webgl/webglimmediate.js +++ b/src/ol/render/webgl/webglimmediate.js @@ -80,7 +80,7 @@ goog.inherits(ol.render.webgl.Immediate, ol.render.VectorContext); ol.render.webgl.Immediate.prototype.flush = function() { /** @type {Array.} */ var zs = Object.keys(this.callbacksByZIndex_).map(Number); - zs.sort(ol.array.defaultCompare); + zs.sort(ol.array.numberSafeCompareFunction); var i, ii, callbacks, j, jj; for (i = 0, ii = zs.length; i < ii; ++i) { callbacks = this.callbacksByZIndex_[zs[i].toString()]; diff --git a/src/ol/renderer/canvas/canvastilelayerrenderer.js b/src/ol/renderer/canvas/canvastilelayerrenderer.js index 11c404996b..af355159ad 100644 --- a/src/ol/renderer/canvas/canvastilelayerrenderer.js +++ b/src/ol/renderer/canvas/canvastilelayerrenderer.js @@ -365,7 +365,7 @@ ol.renderer.canvas.TileLayer.prototype.prepareFrame = /** @type {Array.} */ var zs = Object.keys(tilesToDrawByZ).map(Number); - zs.sort(ol.array.defaultCompare); + zs.sort(ol.array.numberSafeCompareFunction); var opaque = tileSource.getOpaque(); var origin = ol.extent.getTopLeft(tileGrid.getTileCoordExtent( [z, canvasTileRange.minX, canvasTileRange.maxY], diff --git a/src/ol/renderer/canvas/canvasvectortilelayerrenderer.js b/src/ol/renderer/canvas/canvasvectortilelayerrenderer.js index ad9f8c588d..b299254f80 100644 --- a/src/ol/renderer/canvas/canvasvectortilelayerrenderer.js +++ b/src/ol/renderer/canvas/canvasvectortilelayerrenderer.js @@ -406,7 +406,7 @@ ol.renderer.canvas.VectorTileLayer.prototype.prepareFrame = /** @type {Array.} */ var zs = Object.keys(tilesToDrawByZ).map(Number); - zs.sort(ol.array.defaultCompare); + zs.sort(ol.array.numberSafeCompareFunction); var replayables = []; var i, ii, currentZ, tileCoordKey, tilesToDraw; for (i = 0, ii = zs.length; i < ii; ++i) { diff --git a/src/ol/renderer/dom/domtilelayerrenderer.js b/src/ol/renderer/dom/domtilelayerrenderer.js index fbf77cde40..e26469bd85 100644 --- a/src/ol/renderer/dom/domtilelayerrenderer.js +++ b/src/ol/renderer/dom/domtilelayerrenderer.js @@ -178,7 +178,7 @@ ol.renderer.dom.TileLayer.prototype.prepareFrame = /** @type {Array.} */ var zs = Object.keys(tilesToDrawByZ).map(Number); - zs.sort(ol.array.defaultCompare); + zs.sort(ol.array.numberSafeCompareFunction); /** @type {Object.} */ var newTileLayerZKeys = {}; @@ -204,7 +204,7 @@ ol.renderer.dom.TileLayer.prototype.prepareFrame = /** @type {Array.} */ var tileLayerZKeys = Object.keys(this.tileLayerZs_).map(Number); - tileLayerZKeys.sort(ol.array.defaultCompare); + tileLayerZKeys.sort(ol.array.numberSafeCompareFunction); var i, ii, j, origin, resolution; var transform = goog.vec.Mat4.createNumber(); diff --git a/src/ol/renderer/webgl/webgltilelayerrenderer.js b/src/ol/renderer/webgl/webgltilelayerrenderer.js index a22b653e29..d6a6484dfe 100644 --- a/src/ol/renderer/webgl/webgltilelayerrenderer.js +++ b/src/ol/renderer/webgl/webgltilelayerrenderer.js @@ -297,7 +297,7 @@ ol.renderer.webgl.TileLayer.prototype.prepareFrame = /** @type {Array.} */ var zs = Object.keys(tilesToDrawByZ).map(Number); - zs.sort(ol.array.defaultCompare); + zs.sort(ol.array.numberSafeCompareFunction); var u_tileOffset = goog.vec.Vec4.createFloat32(); var i, ii, sx, sy, tileKey, tilesToDraw, tx, ty; for (i = 0, ii = zs.length; i < ii; ++i) { diff --git a/test/spec/ol/array.test.js b/test/spec/ol/array.test.js index ae142d3411..035824e045 100644 --- a/test/spec/ol/array.test.js +++ b/test/spec/ol/array.test.js @@ -2,13 +2,12 @@ goog.provide('ol.test.array'); describe('ol.array', function() { - describe('defaultCompare', function() { + describe('numberSafeCompareFunction', function() { it('sorts as expected', function() { var arr = [40, 200, 3000]; - var expected = [40, 200, 3000]; // default sort would yield [200, 3000, 40] - arr.sort(ol.array.defaultCompare); - expect(arr).to.eql(expected); + arr.sort(ol.array.numberSafeCompareFunction); + expect(arr).to.eql(arr); }); });