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

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));
处理完后保存到数据库后的效果图为:

前台界面显示如下图:

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

转载于:https://my.oschina.net/Android1989/blog/170453

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值