| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- /*
- 205.395583333332 = 205°23'44.1"
- 1,直接读取"度":205
- 2,(205.395583333332-205)*60=23.734999999920 得到"分":23
- 3,(23.734999999920-23)*60=44.099999995200 得到"秒":44.1
- return string,
- */
- export function latLngDecimalToDegrees(decimal: number): string {
- let absDecimal = Math.abs(decimal);
- let isNegative = Math.abs(decimal) != decimal;
- let d = Math.floor(absDecimal); //度
- let m = Math.floor((absDecimal - d) * 60); //分
- let s = Math.round((absDecimal - d) * 3600 % 60); //秒
- if(s == 60) {s = 0; m++}
- if(m == 60) {m = 0; d++}
- //d = ('000'+d).slice(-3); // left-pad with leading zeros
- const mm = ('00'+m).slice(-2); // left-pad with leading zeros
- const ss = ('00'+s).slice(-2);
- //if (s<10) s = '0' + s; // left-pad with leading zeros (note may include decimals)
- return (isNegative ? "-" : "") + d + '°' + mm + "′" + ss + '″';
- }
- /*
- Decimal Degrees = Degrees + minutes/60 + seconds/3600
- 例:57°55'56.6" =57+55/60+56.6/3600=57.9323888888888
- return Float or NaN
- */
- export function latLngDegreesToDecimal(degreesStr: string): number {
- let degreesArr = degreesStr.split("°");
- let degrees = parseInt(degreesArr[0]);
- let isNegative = Math.abs(degrees) != degrees;
- if (degreesArr.length == 1) {
- return degrees;
- } else if(!isSafeString(degreesArr[1])) {
- return degrees;
- }
- let minutesArr = degreesArr[1].split("′");
- let minutes = parseInt(minutesArr[0]);
- let min = parseFloat((isNegative ? "-" : "") + (Math.abs(degrees) + Math.abs(minutes) / 60));
- if (minutesArr.length == 1) {
- return min;
- } else if(!isSafeString(minutesArr[1])) {
- return min;
- }
- let secondsStr = minutesArr[1];
- let secondsArr = secondsStr.split('″');
- let seconds = parseFloat(secondsArr[0]);
- return parseFloat((isNegative ? "-" : "") + (Math.abs(degrees) + Math.abs(minutes) / 60 + Math.abs(seconds) / 3600));
- }
- export function isObject(arg: any): boolean {
- return typeof arg === 'object' && arg !== null;
- }
- export function isUndefined(arg: any): boolean {
- return arg === void 0;
- }
- export function isString(arg: any): boolean {
- return typeof arg === 'string';
- }
- export function isSafeString(arg: any): boolean {
- if (isUndefined(arg)) {
- return false;
- }
- if (!isString(arg)) {
- return false;
- }
- if (arg.length == 0) {
- return false;
- }
- return true;
- }
- export function isNumber(arg: any): boolean {
- return typeof arg === 'number';
- }
- export function hasPoint(obj: any): boolean {
- return (isObject(obj)
- && isNumber(obj.lat)
- && isNumber(obj.lng));
- }
|