google map 经纬度转换成ASCII码的方法(暂未优化)
来源:互联网 发布:家庭网络打印机共享 编辑:程序博客网 时间:2024/06/11 11:26
//经纬度转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;
}
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;
}
- google map 经纬度转换成ASCII码的方法(暂未优化)
- google Map经纬度坐标取得方法
- google Map经纬度坐标取得方法
- google map 解析 经纬度
- ZOJ2855 Google Map 经纬度
- google map 获取经纬度
- C#通过Google Map获取给定地名的经纬度值的方法
- 点击获取GOOGLE MAP地图上的经纬度坐标的方法
- 经纬度坐标转换的方法
- Google Map 经纬度解码算法
- google map 右键获取经纬度
- C# 通过Google Map获取给定地名的经纬度值
- C#通过Google Map获取给定地名的经纬度值
- Geocoder google map地点搜索----地址及经纬度的解析
- 利用Google Map获得某点的经纬度
- Python下用Google Map查询地址的经纬度
- excel中将经纬度坐标转换成十进制度的方法
- threejs-经纬度转换成xyz坐标的方法
- cpu 技术参数
- 2008-03-06
- 华章与数据挖掘大会同行——2008年(第五届)中国数据挖掘大会现场报道
- c# 枚举基础 与 枚举属性的访问
- 优秀论文什么是教育技术学
- google map 经纬度转换成ASCII码的方法(暂未优化)
- [收藏]对于makefile的理解
- 优秀论文教育技术学与现代教育
- K线图分析法简介
- 2008 Jolt 大奖新鲜出炉_华章公司国内首家报道
- [收藏]基于devkitPro的PSP开发环境搭建指南
- What's new in BCGControlBar Library 9.56
- 注册表中的翻译(超实用滴)
- Java技术-J2EE开发日记-MyEclipse快捷键与插件大全