<script language="javascript">
var EncodeKey = 699;
//加密密钥,数值型;可以每个客户都不一样
function Decode(encodedcoord)
//解密坐标
{
var MaxNumPos=-1;
//最大数位的位置
var MaxNum=0;
//最大数
var Org='';
//出除修改后的原始值
for(var i=0;i<encodedcoord.length;i++)
{
var Tmp=parseInt(encodedcoord.charAt(i),36)-10;
if(Tmp>=10)
Tmp=Tmp-7;
Org+=(Tmp).toString(36);
if(Tmp>MaxNum)
{
MaxNumPos=i;
MaxNum=Tmp
}
//获取最大数及其位置
}
var Diff=parseInt(Org.substring(0,MaxNumPos),16);
//纬度-经度
var Sum=parseInt(Org.substring(MaxNumPos+1),16);
//纬度+经度
var Coord=new Array();
//坐标
Coord[0]=(Diff+Sum-parseInt(EncodeKey))/2;
//纬度
Coord[1]=(Sum-Coord[0])/100000.0;
//经度
Coord[0]/=100000.0;
return Coord
};
//解密坐标的实例
document.write('这是IJSVSDZVJACRV解密后的值:<br>'+Decode('IJSVSDZVJACRV')+'<br><br>');
//加密坐标
function Encode(Lat,Lng)
{
var BLat=parseInt(parseFloat(Lat)*100000);
// 纬度
var BLng=parseInt(parseFloat(Lng)*100000);
// 经度
var Diff=(BLng-BLat+parseInt(EncodeKey)).toString(16); //之差
var Sum=(BLng+BLat).toString(16); //之和
var EncodedCoord=''; //编码后的坐标
for(var i=0;i<Diff.length;i++)
{
var TmpInt=parseInt(Diff.charAt(i),16);
EncodedCoord+=(((TmpInt>=10)?(TmpInt+7):TmpInt)+10).toString(36)
}
//对差进行36位编码,大于10的+7,再全部加10
EncodedCoord+='z';
//加上分隔符
for(var i=0;i<Sum.length;i++)
{
var TmpInt=parseInt(Sum.charAt(i),16);
EncodedCoord+=(((TmpInt>=10)?(TmpInt+7):TmpInt)+10).toString(36)
}
//对和进行36位编码
return EncodedCoord.toUpperCase()
}
//加密实例
document.write('这是31.2336597442627,121.472076416016加密后的值:<br>'+Encode('31.2336597442627','121.472076416016'));
</script>