diff --git a/src/ol/coordinate.js b/src/ol/coordinate.js index 0b3bd07916..223b5fd306 100644 --- a/src/ol/coordinate.js +++ b/src/ol/coordinate.js @@ -112,20 +112,21 @@ ol.coordinate.degreesToStringHDMS_ = function(degrees, hemispheres, opt_fraction var normalizedDegrees = ol.math.modulo(degrees + 180, 360) - 180; var x = Math.abs(3600 * normalizedDegrees); var dflPrecision = opt_fractionDigits || 0; + var precision = Math.pow(10, dflPrecision); var deg = Math.floor(x / 3600); - var min = Math.floor((x / 60) % 60); - var precision = Math.pow(10, dflPrecision); - var sec = Math.ceil((x * precision) % 60) / precision; + var min = Math.floor((x - deg * 3600) / 60); + var sec = x - (deg * 3600) - (min * 60); + sec = Math.ceil(sec * precision) / precision; - if (60 === sec) { + if (sec >= 60) { sec = 0; min += 1; } if (min >= 60) { - min -= 60; - deg = deg >= 0 ? deg + 1 : deg - 1; + min = 0; + deg += 1; } return deg + '\u00b0 ' + ol.string.padNumber(min, 2) + '\u2032 ' +