经纬度与小数点之间的转化

1.项目中遇到与经纬度打交道,数据库中保存为小数,显示的时候必须为度分秒。在网上找了找没有合适的。自己写了一下。如下代码:

{
                    fieldLabel: '经度',
                    name: 'BT_LONGITUDE',
                    value:' ° \' "',
                    id:'longitude',
//                    xtype: 'numberfield',
                    width:250
                },{
                    fieldLabel: '纬度',
                    name: 'BT_LATITUDE',
                    value:' ° \' "',
                    id:'latitude',
//                    xtype: 'numberfield',
                    width:250
                },
在actioncomplete方法里处理后根据定义的id,将数据放到指定的位置即可。下面是这个方法的代码:

 form.on('actioncomplete',function(_form, _action){
var longitude = Ext.getCmp("longitude");
var sValue = ' ° \' "';
var fValue = Ext.num(longitude.getValue(), 0);
if(fValue != 0){
var du=Math.floor(Math.abs(fValue));    //获取整数部分
var temp=Math.abs(fValue-du)*60;
var fen=Math.floor(Math.abs(temp)); //获取整数部分
var miao=(temp-fen)*60;
if(fValue<0)
sValue = "-"+du+'°'+fen+'\''+miao.toFixed(2)+'"';

sValue = du+'°'+fen+'\''+miao.toFixed(2)+'"';
}
longitude.setValue(sValue);

var latitude = Ext.getCmp("latitude");
var sValue = ' ° \' "';
var fValue = Ext.num(latitude.getValue(), 0);
if(fValue != 0){
var du=Math.floor(Math.abs(fValue));    //获取整数部分
var temp=Math.abs(fValue-du)*60;
var fen=Math.floor(Math.abs(temp)); //获取整数部分
var miao=(temp-fen)*60;
if(fValue<0)
sValue = "-"+du+'°'+fen+'\''+miao.toFixed(2)+'"';
sValue = du+'°'+fen+'\''+miao.toFixed(2)+'"'
}
latitude.setValue(sValue);
})
这是显示页面的处理,关于数据库保存的时候处理为下面的代码所示:

//将经纬度转化为小数

 converJWD = function(x){
if(!x) return 0;
try{
x = x.replace('E', '').replace('N', '');
var l1 = x.indexOf('°');
var l2 = x.indexOf('\'');
var l3 = x.indexOf('"');
var du = parseFloat(x.substring(0, l1), 0);
var fen = parseFloat(x.substring(l1+1, l2), 0);
var miao = parseFloat(x.substring(l2+1, l3), 0);
if(du<0)
return "-"+du + (fen +(miao/60))/60;
return du + (fen +(miao/60))/60;
}catch(e){
return 0;
}
}
比如我项目中是以map形式传递过去的,我获取到后,那这个方法处理一下即可实现小数的转换:

if(form.BT_LONGITUDE !="")
form.put("BT_LONGITUDE", converJWD(form.BT_LONGITUDE));
if(form.BT_LATITUDE !="")
form.put("BT_LATITUDE", converJWD(form.BT_LATITUDE));
处理完后保存到数据库后的效果图为:经纬度与小数点之间的转化_第1张图片

前台界面显示如下图:

经纬度与小数点之间的转化_第2张图片

这样起初添加,固定的格式为度分秒格式。

你可能感兴趣的:(经纬度转化小数,经纬度显示,经纬度处理)