Utils.js 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. "use strict";
  2. exports.__esModule = true;
  3. /*
  4. 205.395583333332 = 205°23'44.1"
  5. 1,直接读取"度":205
  6. 2,(205.395583333332-205)*60=23.734999999920 得到"分":23
  7. 3,(23.734999999920-23)*60=44.099999995200 得到"秒":44.1
  8. return string,
  9. */
  10. function latLngDecimalToDegrees(decimal) {
  11. var absDecimal = Math.abs(decimal);
  12. var isNegative = Math.abs(decimal) != decimal;
  13. var d = Math.floor(absDecimal); //度
  14. var m = Math.floor((absDecimal - d) * 60); //分
  15. var s = Math.round((absDecimal - d) * 3600 % 60); //秒
  16. if (s == 60) {
  17. s = 0;
  18. m++;
  19. }
  20. if (m == 60) {
  21. m = 0;
  22. d++;
  23. }
  24. //d = ('000'+d).slice(-3); // left-pad with leading zeros
  25. var mm = ('00' + m).slice(-2); // left-pad with leading zeros
  26. var ss = ('00' + s).slice(-2);
  27. //if (s<10) s = '0' + s; // left-pad with leading zeros (note may include decimals)
  28. return (isNegative ? "-" : "") + d + '°' + mm + "′" + ss + '″';
  29. }
  30. exports.latLngDecimalToDegrees = latLngDecimalToDegrees;
  31. /*
  32. Decimal Degrees = Degrees + minutes/60 + seconds/3600
  33. 例:57°55'56.6" =57+55/60+56.6/3600=57.9323888888888
  34. return Float or NaN
  35. */
  36. function latLngDegreesToDecimal(degreesStr) {
  37. var degreesArr = degreesStr.split("°");
  38. var degrees = parseInt(degreesArr[0]);
  39. var isNegative = Math.abs(degrees) != degrees;
  40. if (degreesArr.length == 1) {
  41. return degrees;
  42. }
  43. else if (!isSafeString(degreesArr[1])) {
  44. return degrees;
  45. }
  46. var minutesArr = degreesArr[1].split("′");
  47. var minutes = parseInt(minutesArr[0]);
  48. var min = parseFloat((isNegative ? "-" : "") + (Math.abs(degrees) + Math.abs(minutes) / 60));
  49. if (minutesArr.length == 1) {
  50. return min;
  51. }
  52. else if (!isSafeString(minutesArr[1])) {
  53. return min;
  54. }
  55. var secondsStr = minutesArr[1];
  56. var secondsArr = secondsStr.split('″');
  57. var seconds = parseFloat(secondsArr[0]);
  58. return parseFloat((isNegative ? "-" : "") + (Math.abs(degrees) + Math.abs(minutes) / 60 + Math.abs(seconds) / 3600));
  59. }
  60. exports.latLngDegreesToDecimal = latLngDegreesToDecimal;
  61. function isObject(arg) {
  62. return typeof arg === 'object' && arg !== null;
  63. }
  64. exports.isObject = isObject;
  65. function isUndefined(arg) {
  66. return arg === void 0;
  67. }
  68. exports.isUndefined = isUndefined;
  69. function isString(arg) {
  70. return typeof arg === 'string';
  71. }
  72. exports.isString = isString;
  73. function isSafeString(arg) {
  74. if (isUndefined(arg)) {
  75. return false;
  76. }
  77. if (!isString(arg)) {
  78. return false;
  79. }
  80. if (arg.length == 0) {
  81. return false;
  82. }
  83. return true;
  84. }
  85. exports.isSafeString = isSafeString;
  86. function isNumber(arg) {
  87. return typeof arg === 'number';
  88. }
  89. exports.isNumber = isNumber;
  90. function hasPoint(obj) {
  91. return (isObject(obj)
  92. && isSafeString(obj.lat)
  93. && isSafeString(obj.lng));
  94. }
  95. exports.hasPoint = hasPoint;