Javascript - GPS DMS格式到十进制格式功能

时间:2014-03-19 14:54:03

标签: javascript gps converter

我搜索了一个javascript函数,可以将DMS格式的GPS数据解析为十进制格式。我得到的帮助很少,这主要是因为我所拥有的GPS数据是一种奇怪的格式。

My Data;
3550.192270N, 01432.026391E
Format;
ddmm.mmmmmmN, ddmm.mmmmmmE

我想将这些值转换为纬度和经度十进制格式。

提前致谢, 让

2 个答案:

答案 0 :(得分:1)

<强>解决 在线找到了与我的需求类似的功能,并将其转换为仅接受日期和分钟。

function ConvertDMSToDD(days, minutes) {
   var dd = days + minutes / 60;
   return dd;
}

我使用此功能转换我从带有GPS模块的Arduino屏蔽中获取的数据。

答案 1 :(得分:0)

  

Javascript-DMS字符串转换为十进制格式

var dmsStr = "40° 19′ 22.81″ N 49° 19′ 15.61″ E";
var dmsToLonLatRegex= /[-]{0,1}[\d.]*[\d]|([NSEW])+/g;
var dmsParsed = dmsStr.match(dmsToLonLatRegex);
>Result => ["40", "19", "22.81", "N", "49", "19", "15.61", "E"];



    var dmsParsedObj = {
        latitude: {
            degree: dmsParsed[0],
            minute: dmsParsed[1],
            second: dmsParsed[2],
            direction: dmsParsed[3]
        },
        longitude: {
            degree: dmsParsed[4],
            minute: dmsParsed[5],
            second: dmsParsed[6],
            direction: dmsParsed[7]
        }
    }


    var dmsToLonLat = function (o) {
        var n = NaN;
        if (o) {
            var t = Number(o.degree),
                d = "undefined" != typeof o.minute ? Number(o.minute) / 60 : 0,
                l = "undefined" != typeof o.second ? Number(o.second) / 3600 : 0,
                r = o.direction || null;
            null !== r && /[SW]/i.test(r) && (t = -1 * Math.abs(t)), n = 0 > t ? t - d - l : t + d + l
        }
        return n
    }

var lonLat = [dmsToLonLat(dmsParsedObj.latitude), dmsToLonLat(dmsParsedObj.longitude)];
> Result => [49.321, 40.323]