Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在jquery、javascript和PHP中,如何将GPS度数转换为十进制数,反之亦然?_Javascript_Jquery_Gps - Fatal编程技术网

在jquery、javascript和PHP中,如何将GPS度数转换为十进制数,反之亦然?

在jquery、javascript和PHP中,如何将GPS度数转换为十进制数,反之亦然?,javascript,jquery,gps,Javascript,Jquery,Gps,是否有人知道如何将GPS度数转换为十进制值,或反之亦然 我必须开发一种用户可以插入地址并获取GPS值(度和/或十进制)的方法,但我需要知道的主要事情是如何转换值,因为用户也可以插入GPS值(度或十进制)。因为我需要从谷歌地图获取地图,这需要十进制 我尝试过一些代码,但我得到了很大的数字…就像这个: function ConvertDMSToDD(days, minutes, seconds, direction) { var dd = days + minutes/60 + second

是否有人知道如何将GPS度数转换为十进制值,或反之亦然

我必须开发一种用户可以插入地址并获取GPS值(度和/或十进制)的方法,但我需要知道的主要事情是如何转换值,因为用户也可以插入GPS值(度或十进制)。因为我需要从谷歌地图获取地图,这需要十进制

我尝试过一些代码,但我得到了很大的数字…就像这个:

function ConvertDMSToDD(days, minutes, seconds, direction) {
    var dd = days + minutes/60 + seconds/(60*60);
    //alert(dd);
    if (direction == "S" || direction == "W") {
        dd = '-' + dd;
    } // Don't do anything for N or E
    return dd;
}
有人吗


谢谢。

首先感谢您@Eugen Rieck的帮助。 这是我的最终代码,希望它能帮助别人:

十进制度

function getDMS2DD(days, minutes, seconds, direction) {
    direction.toUpperCase();
    var dd = days + minutes/60 + seconds/(60*60);
    //alert(dd);
    if (direction == "S" || direction == "W") {
        dd = dd*-1;
    } // Don't do anything for N or E
    return dd;
}
十进制到基于此的度数

函数getDD2DMS(dms,类型){ var符号=1,Abs=0; var天、分钟、秒、方向; 如果(dms<0){sign=-1;} Abs=Math.Abs(数学四舍五入(dms*1000000)); //Math.round用于消除计算机中由舍入引起的小误差: //e、 g.0.2与0.200000000000284不同 //错误检查 如果(类型==“横向”和横向(90*1000000)){ //警报(“纬度必须在-90到90之间”); 返回false; }否则如果(类型==“lon”和&Abs>(180*1000000)){ //警报(“经度必须在-180到180之间”); 返回false; } 天数=数学下限(绝对值/1000000); 分钟=数学下限((绝对值/1000000)-天)*60); 秒=数学地板(((绝对值/1000000)-天)*60)-分钟)*100000)*60/100000); 天=天*符号;
如果(type=='lat')direction=days无法让上面的脚本正常工作,那么经过一段时间后就会出现这个问题; 只需将dms赋予函数即可

function ConvertDMSToDEG(dms) {   
    var dms_Array = dms.split(/[^\d\w\.]+/); 
    var degrees = dms_Array[0];
    var minutes = dms_Array[1];
    var seconds = dms_Array[2];
    var direction = dms_Array[3];

    var deg = (Number(degrees) + Number(minutes)/60 + Number(seconds)/3600).toFixed(6);

    if (direction == "S" || direction == "W") {
        deg = deg * -1;
    } // Don't do anything for N or E
    return deg;
}
反之亦然,只需为脚本提供度,为lat(纬度)提供true或false


希望这对人们有所帮助。

你的功能运行得很完美:@Eugen Rieck问题是你尝试这个值
ConvertDMSToDD(41,11,1,“N”)
它会返回一个大数字,谷歌地图无法识别它!再次对我有效:-可能是浏览器问题?我尝试了Chrome和FF(Ubuntu Lucid上的当前版本)好的,我发现了一个问题,我将值传递为返回一个疯狂数字的stirng!
ConvertDMSToDD(“41”、“11”、“1”、“N”)
问题得到了解决!非常感谢。(如何结束讨论?)这取决于您的输入!如果您输入一个格(“N”或“S”),那么你会得到0的北面和==0的四分之一。如果你输入一个经度(“W”,“E”),你会得到0的东面格林威治和==0的零子午线。我知道这是一个老帖子,但非常感谢你发布你的最终代码。我已经尝试了一个小时。我非常感谢。
function ConvertDMSToDEG(dms) {   
    var dms_Array = dms.split(/[^\d\w\.]+/); 
    var degrees = dms_Array[0];
    var minutes = dms_Array[1];
    var seconds = dms_Array[2];
    var direction = dms_Array[3];

    var deg = (Number(degrees) + Number(minutes)/60 + Number(seconds)/3600).toFixed(6);

    if (direction == "S" || direction == "W") {
        deg = deg * -1;
    } // Don't do anything for N or E
    return deg;
}
function ConvertDEGToDMS(deg, lat) {
    var absolute = Math.abs(deg);

    var degrees = Math.floor(absolute);
    var minutesNotTruncated = (absolute - degrees) * 60;
    var minutes = Math.floor(minutesNotTruncated);
    var seconds = ((minutesNotTruncated - minutes) * 60).toFixed(2);

    if (lat) {
        var direction = deg >= 0 ? "N" : "S";
    } else {
        var direction = deg >= 0 ? "E" : "W";
    }

    return degrees + "°" + minutes + "'" + seconds + "\"" + direction;
}