gisempire100
捉鬼专家
捉鬼专家
  • 注册日期2004-08-13
  • 发帖数552
  • QQ
  • 铜币2462枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1718回复:1

Mapbar坐标的加密与解密算法

楼主#
更多 发布于:2008-04-11 00:01
<P><FONT face=Verdana><script language="javascript"></FONT></P>
<P><FONT face=Verdana>  var EncodeKey = 699;<BR>  //加密密钥,数值型;可以每个客户都不一样<BR>  <BR>  function Decode(encodedcoord)<BR>  //解密坐标<BR>  {<BR>    var MaxNumPos=-1;<BR>    //最大数位的位置<BR>    var MaxNum=0;<BR>    //最大数<BR>    var Org='';<BR>    //出除修改后的原始值<BR>    for(var i=0;i<encodedcoord.length;i++)<BR>    {<BR>      var Tmp=parseInt(encodedcoord.charAt(i),36)-10;<BR>      if(Tmp>=10)<BR>        Tmp=Tmp-7;<BR>      Org+=(Tmp).toString(36);<BR>      if(Tmp>MaxNum)<BR>      {<BR>        MaxNumPos=i;<BR>        MaxNum=Tmp<BR>      }<BR>      //获取最大数及其位置<BR>    } <BR>    var Diff=parseInt(Org.substring(0,MaxNumPos),16);<BR>    //纬度-经度<BR>     var Sum=parseInt(Org.substring(MaxNumPos+1),16);<BR>     //纬度+经度<BR>     var Coord=new Array();<BR>     //坐标<BR>     Coord[0]=(Diff+Sum-parseInt(EncodeKey))/2; <BR>     //纬度<BR>     Coord[1]=(Sum-Coord[0])/100000.0;<BR>     //经度<BR>     Coord[0]/=100000.0;<BR>     return Coord<BR>  };<BR>  //解密坐标的实例<BR>  document.write('这是IJSVSDZVJACRV解密后的值:<br>'+Decode('IJSVSDZVJACRV')+'<br><br>');<BR>  <BR>  //加密坐标<BR>  function Encode(Lat,Lng)<BR>    {<BR>        var BLat=parseInt(parseFloat(Lat)*100000); <BR>        // 纬度<BR>        var BLng=parseInt(parseFloat(Lng)*100000);<BR>        // 经度<BR>        var Diff=(BLng-BLat+parseInt(EncodeKey)).toString(16); //之差<BR>        var Sum=(BLng+BLat).toString(16);  //之和<BR>        var EncodedCoord=''; //编码后的坐标<BR>        for(var i=0;i<Diff.length;i++)<BR>        {<BR>            var TmpInt=parseInt(Diff.charAt(i),16);<BR>             EncodedCoord+=(((TmpInt>=10)?(TmpInt+7):TmpInt)+10).toString(36)<BR>        }<BR>        //对差进行36位编码,大于10的+7,再全部加10<BR>        EncodedCoord+='z';<BR>        //加上分隔符<BR>        for(var i=0;i<Sum.length;i++)<BR>        {<BR>            var TmpInt=parseInt(Sum.charAt(i),16);<BR>             EncodedCoord+=(((TmpInt>=10)?(TmpInt+7):TmpInt)+10).toString(36)<BR>        }<BR>        //对和进行36位编码<BR>        return EncodedCoord.toUpperCase()<BR>     }<BR>     //加密实例<BR>     document.write('这是31.2336597442627,121.472076416016加密后的值:<br>'+Encode('31.2336597442627','121.472076416016'));    <BR></script></FONT></P>
喜欢0 评分0
A friend is never known till a man has need. ...CL
j980950
路人甲
路人甲
  • 注册日期2004-11-09
  • 发帖数12
  • QQ
  • 铜币178枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2008-08-01 13:12
<P>好</P>
举报 回复(0) 喜欢(0)     评分
游客

返回顶部