在jquery、javascript和PHP中,如何将GPS度数转换为十进制数,反之亦然?
是否有人知道如何将GPS度数转换为十进制值,或反之亦然 我必须开发一种用户可以插入地址并获取GPS值(度和/或十进制)的方法,但我需要知道的主要事情是如何转换值,因为用户也可以插入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
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;
}