Mapbar坐标的加密与解密算法

<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>

转载于:https://www.cnblogs.com/alic/archive/2008/04/09/1095350.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值