originality2010的专栏

一年之计,莫如树目;十年之计,莫如树心;终身之计,莫如树人。

彭彬ID:originality2010
3120次访问,排名2万外好友0人,关注者0
忍人所不忍,能人所不能!
originality2010的文章
原创 23 篇
翻译 0 篇
转载 5 篇
评论 0 篇
originality2010的公告
最近评论
文章分类
收藏
    相册
    存档
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 google map 经纬度转换成ASCII码的方法(暂未优化)收藏

    新一篇: 修改blog点击数 | 旧一篇: 2008-03-06

    //经纬度转ASCII码
    function pointEncoding(value, isStart, startValue)
    {
        
    var hasFlag = true;     //没有符号
        var strNum = value.toString();
        
    if (strNum.indexOf('.'== -1)  //如果没有小数点
        {
            strNum 
    += "00000";
        }

        
    else if (strNum.length - strNum.indexOf('.'< 5)   //小数点后位数不足5位
        {
            
    var stratLen = strNum.length;
            
    for (var i = 0; i < 6 - (stratLen - strNum.indexOf('.')); i++)
            
    {
                strNum 
    += "0";
            }

        }

        
    else    //仅保留小数点后5位
        {
            strNum 
    = strNum.substring(0, strNum.indexOf('.'+ 6);
        }

        strNum 
    = strNum.replace('.''');
       
        
    if (!isStart && startValue)
        
    {
            
    if (startValue.indexOf('.'== -1)  //如果没有小数点
            {
                startValue 
    += "00000";
            }

            
    else if (startValue.length - startValue.indexOf('.'< 5)   //小数点后位数不足5位
            {
                stratLen 
    = startValue.length;
                
    for (var i = 0; i < 6 - (stratLen - startValue.indexOf('.')); i++)
                
    {
                    startValue 
    += "0";
                }

            }

            
    else    //仅保留小数点后5位
            {
                startValue 
    = startValue.substring(0, startValue.indexOf('.'+ 6);
            }

            startValue 
    = startValue.replace('.''');
           
            strNum 
    = parseInt(strNum) - parseInt(startValue);
        }

       
        strNum 
    = complementCode(strNum);
    //    strNum = parseInt(parseInt(strNum, 10), 2);
       
        
    //左移一位,以符号为填充
        if (strNum.charAt(0== "0")
        
    {
            hasFlag 
    = false;
            strNum 
    = (strNum + strNum.charAt(0)).substring(1, strNum.length + 1);
        }

        
    else
        
    {
            
    //取补码
            var strTemp = "";
            
    for (i = 0; i < strNum.length; i++)
            
    {
                strTemp 
    += strNum.charAt(i) == "0" ? "1" : "0";
            }

    //       
    //
            var cy = 1;
    //
           
    //
            strNum = "";
    //
            for (i = strTemp.length - 1; i >= 0; i--)
    //
            {
    //
                strNum = (cy + parseInt(strTemp.charAt(i)) % 2).toString() + strNum;
    //
                cy = (cy + parseInt(strTemp.charAt(i)) == 2) ? 1 : 0;
    //
            }
            strNum = (strTemp + "1").substring(1, strTemp.length + 1);
        }

        
    //切割成5位2进制数组
        var bitList = new Array();
        stratLen 
    = strNum.length % 5;
        
    for (i = 0; i < (5 - stratLen); i++)
        
    {
            strNum 
    = "0" + strNum;
        }

       
        
    var index = 0;
        
    for (i = 0; i < strNum.length /5; i++)
        
    {
            
    if (strNum.substring(i * 5, (i + 1* 5== "00000" && hasFlag)
            
    {
                
    continue;
            }

            bitList[index
    ++= strNum.substring(i * 5, (i + 1* 5);
        }

       
        
    //颠倒顺序
        var bitStrTemp = "";
        
    for (i = 0; i < bitList.length / 2; i++)
        
    {
            bitStrTemp 
    = bitList[i];
            bitList[i] 
    = bitList[bitList.length - i - 1];
            bitList[bitList.length 
    - i - 1= bitStrTemp;
        }

       
        
    //对没一组字位同0x20做或运算,不包括最后一组,然后转换成10进制数,加63,并以ascii的方式存入
        strNum = "";
        
    for (i = 0; i < bitList.length; i++)
        
    {
            
    if (i != bitList.length - 1)
            
    {
                bitList[i] 
    = parseInt(parseInt(bitList[i], 2), 10| 0x20;
                bitList[i] 
    = bitList[i] + 63;
            }

            
    else
            
    {
                bitList[i] 
    = parseInt(parseInt(bitList[i], 2), 10+ 63;
            }

            strNum 
    += String.fromCharCode(bitList[i]);
        }

       
        
    return strNum;
    }

    // 补码转换函数
    function complementCode(n)
    {
    var cc = "";//补码
    var Num = Number(n);
    var aBit = "";
    var countFor1 = 0;
    var absNum = Math.abs(Num);
    var Num2 = absNum.toString(2); //转换成二进制
    if (Num < 0)
    {
        
    for(var i = Num2.length; i > 0; i--)
      
    {
          aBit 
    = Num2.substring(i - 1, i);
          
    if(countFor1 >= 1)
       
    {
            cc 
    = (1 ^ aBit) + cc;
          }

       
    else
       
    {
            
    if(aBit == "1")
        
    {
         countFor1
    =countFor1 + 1;
        }

            cc 
    = aBit + cc;
          }

        }

        cc 
    = "1" + cc;  //补标志位
       
        
    var stratLen = cc.length % 8;
        
    for (i = 0; i < (8 - stratLen); i++)
        
    {
            cc 
    = "1" + cc;
        }

    }

    else //整数的补码不变
    {
        cc 
    = "0"+Num2;  //补标志位 
    }

    return cc;
    }

    //偏差调整
    function pointAdjust(value, adjustValue)
    {
        
    return value + adjustValue;
    }

     

    发表于 @ 2008年03月08日 14:22:00|评论(loading...)|编辑

    新一篇: 修改blog点击数 | 旧一篇: 2008-03-06

    评论:没有评论。

    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © originality2010