From cdf34b558affd4152d27eaa5df819dbbd51952be Mon Sep 17 00:00:00 2001 From: Frederic Junod Date: Mon, 28 Oct 2013 14:14:42 +0100 Subject: [PATCH 1/3] Add ol.coordinate.format function Return a formatted coordinate. Example usage: > ol.coordinate.format([0.01 ,12.14], "{x}, {y}", 2) "0.01, 12.14" > ol.coordinate.format([0.01 ,12.14], "lat: {y} / lon: {x}", 1) "lat: 12.1 / lon: 0.0" --- src/ol/coordinate.exports | 1 + src/ol/coordinate.js | 27 ++++++++++++++++++++------- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/ol/coordinate.exports b/src/ol/coordinate.exports index 3680e852c2..aff059c305 100644 --- a/src/ol/coordinate.exports +++ b/src/ol/coordinate.exports @@ -1,4 +1,5 @@ @exportSymbol ol.coordinate.createStringXY +@exportSymbol ol.coordinate.format @exportSymbol ol.coordinate.toStringHDMS @exportSymbol ol.coordinate.toStringXY @exportSymbol ol.coordinate.fromProjectedArray diff --git a/src/ol/coordinate.js b/src/ol/coordinate.js index 1753c76ec5..334597e29b 100644 --- a/src/ol/coordinate.js +++ b/src/ol/coordinate.js @@ -75,6 +75,25 @@ ol.coordinate.degreesToStringHDMS_ = function(degrees, hemispheres) { }; +/** + * @param {ol.Coordinate|undefined} coordinate Coordinate. + * @param {string} template Template. + * @param {number=} opt_precision Precision. + * @return {string} Formated coordinate. + * @todo stability experimental + */ +ol.coordinate.format = function(coordinate, template, opt_precision) { + if (goog.isDef(coordinate)) { + var precision = opt_precision || 0; + return template + .replace('{x}', coordinate[0].toFixed(precision)) + .replace('{y}', coordinate[1].toFixed(precision)); + } else { + return ''; + } +}; + + /** * @param {ol.Coordinate} coordinate Coordinate. * @param {number} angle Angle. @@ -137,13 +156,7 @@ ol.coordinate.toStringHDMS = function(coordinate) { * @todo stability experimental */ ol.coordinate.toStringXY = function(coordinate, opt_precision) { - if (goog.isDef(coordinate)) { - var precision = opt_precision || 0; - return coordinate[0].toFixed(precision) + ', ' + - coordinate[1].toFixed(precision); - } else { - return ''; - } + return ol.coordinate.format(coordinate, '{x}, {y}', opt_precision); }; From 9ca74200ede9f2e4ac6698ed82896340befde327 Mon Sep 17 00:00:00 2001 From: Frederic Junod Date: Mon, 28 Oct 2013 15:34:11 +0100 Subject: [PATCH 2/3] Remove opt_precision check in ol.coordinate.format Default is already 0, see http://www.ecma-international.org/ecma-262/5.1/#sec-15.7.4.5 --- src/ol/coordinate.js | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/ol/coordinate.js b/src/ol/coordinate.js index 334597e29b..e6bedacdea 100644 --- a/src/ol/coordinate.js +++ b/src/ol/coordinate.js @@ -43,7 +43,7 @@ ol.coordinate.add = function(coordinate, delta) { /** - * @param {number=} opt_precision Precision. + * @param {number=} opt_precision Precision. Default is `0`. * @return {ol.CoordinateFormatType} Coordinate format. * @todo stability experimental */ @@ -78,16 +78,15 @@ ol.coordinate.degreesToStringHDMS_ = function(degrees, hemispheres) { /** * @param {ol.Coordinate|undefined} coordinate Coordinate. * @param {string} template Template. - * @param {number=} opt_precision Precision. + * @param {number=} opt_precision Precision. Default is `0`. * @return {string} Formated coordinate. * @todo stability experimental */ ol.coordinate.format = function(coordinate, template, opt_precision) { if (goog.isDef(coordinate)) { - var precision = opt_precision || 0; return template - .replace('{x}', coordinate[0].toFixed(precision)) - .replace('{y}', coordinate[1].toFixed(precision)); + .replace('{x}', coordinate[0].toFixed(opt_precision)) + .replace('{y}', coordinate[1].toFixed(opt_precision)); } else { return ''; } @@ -151,7 +150,7 @@ ol.coordinate.toStringHDMS = function(coordinate) { /** * @param {ol.Coordinate|undefined} coordinate Coordinate. - * @param {number=} opt_precision Precision. + * @param {number=} opt_precision Precision. Default is `0`. * @return {string} XY. * @todo stability experimental */ From 1217243f842550edd5edc0edf1b9695158d28d7a Mon Sep 17 00:00:00 2001 From: Frederic Junod Date: Mon, 28 Oct 2013 17:34:54 +0100 Subject: [PATCH 3/3] Better ol.coordinate.* documentation --- src/ol/coordinate.js | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/ol/coordinate.js b/src/ol/coordinate.js index e6bedacdea..85f0b5318e 100644 --- a/src/ol/coordinate.js +++ b/src/ol/coordinate.js @@ -43,18 +43,19 @@ ol.coordinate.add = function(coordinate, delta) { /** - * @param {number=} opt_precision Precision. Default is `0`. + * @param {number=} opt_fractionDigits The number of digits to include + * after the decimal point. Default is `0`. * @return {ol.CoordinateFormatType} Coordinate format. * @todo stability experimental */ -ol.coordinate.createStringXY = function(opt_precision) { +ol.coordinate.createStringXY = function(opt_fractionDigits) { return ( /** * @param {ol.Coordinate|undefined} coordinate Coordinate. * @return {string} String XY. */ function(coordinate) { - return ol.coordinate.toStringXY(coordinate, opt_precision); + return ol.coordinate.toStringXY(coordinate, opt_fractionDigits); }); }; @@ -77,16 +78,18 @@ ol.coordinate.degreesToStringHDMS_ = function(degrees, hemispheres) { /** * @param {ol.Coordinate|undefined} coordinate Coordinate. - * @param {string} template Template. - * @param {number=} opt_precision Precision. Default is `0`. + * @param {string} template A template string with `{x}` and `{y}` placeholders + * that will be replaced by first and second coordinate values. + * @param {number=} opt_fractionDigits The number of digits to include + * after the decimal point. Default is `0`. * @return {string} Formated coordinate. * @todo stability experimental */ -ol.coordinate.format = function(coordinate, template, opt_precision) { +ol.coordinate.format = function(coordinate, template, opt_fractionDigits) { if (goog.isDef(coordinate)) { return template - .replace('{x}', coordinate[0].toFixed(opt_precision)) - .replace('{y}', coordinate[1].toFixed(opt_precision)); + .replace('{x}', coordinate[0].toFixed(opt_fractionDigits)) + .replace('{y}', coordinate[1].toFixed(opt_fractionDigits)); } else { return ''; } @@ -150,12 +153,13 @@ ol.coordinate.toStringHDMS = function(coordinate) { /** * @param {ol.Coordinate|undefined} coordinate Coordinate. - * @param {number=} opt_precision Precision. Default is `0`. + * @param {number=} opt_fractionDigits The number of digits to include + * after the decimal point. Default is `0`. * @return {string} XY. * @todo stability experimental */ -ol.coordinate.toStringXY = function(coordinate, opt_precision) { - return ol.coordinate.format(coordinate, '{x}, {y}', opt_precision); +ol.coordinate.toStringXY = function(coordinate, opt_fractionDigits) { + return ol.coordinate.format(coordinate, '{x}, {y}', opt_fractionDigits); };