我使用坐标创建了一个GPS系统。
我使用此功能找到了最高和最低的经度和纬度坐标:
var maxLng = 0;
var maxLat = 0;
var minLng = 180;
var minLat = 180;
for(var i=0; i<coordinates.length; i++)
{
//get max coordinates (the +90 is to remove negative numbers)
if (coordinates[i][0]+90 > maxLat)
{
maxLat = coordinates[i][0] + 90;
}
if (coordinates[i][1]+90 > maxLng)
{
maxLng = coordinates[i][1]+ 90;
}
//get min coordinates
if (coordinates[i][0]+90 < minLat)
{
minLat = coordinates[i][0] + 90;
}
if (coordinates[i][1]+90 < minLng)
{
minLng = coordinates[i][1] + 90;
}
}
console.log(maxLat, maxLng,minLat, minLng);
//calculate distance between max and min points
var lngDistance = maxLng - minLng;
var latDistance = maxLat - minLat;
console.log(lngDistance, latDistance);
这将输出相距最远的2个经度点和纬度点之间的距离,然后我计划用它来创建一个基本的2d地图,如下所示:
我需要转换积分,它们可以是一系列值,例如:
0.0009321 19.332 1.9432123 0.0013432423 0.23432423 0.000034324
我想基本上将所有数字转换为小数点前面的2位有效数字,并将结果存储在数组中,说明我使用了多少次移位。
我希望输出是这样的(原始号码,转换号码,使用的班次):
[0.0009321, 93.21, 4]
[19.332, 19.332, 0]
[1.9432123, 19.432123, 1]
[0.0013432423, 13.432423, 3]
...
我在想,找到第一个有意义的数字,然后计算离小数点有多远。我发现了一些关于使用REGEX执行此操作的帖子,但我之前从未使用过REGEX。
有人可以给我一些指示吗?
干杯。
答案 0 :(得分:1)
这很有趣。
为你做了一个基本的功能,据我所知,它有效。
function change(data){
var ret=new Array();
for(var i=0,len=data.length;i<len;i++){
// make string from number, remove the dot
var st=(''+data[i]).replace('.','');
//remove leading zero's from string
var no_zero=st.replace(/^0+/,'');
//make value
var val=parseInt(no_zero)/(Math.pow(10,no_zero.length-2));
//calculate amount of steps
var steps=Math.round(Math.log(Math.round(val/data[i]))/Math.log(10));
//correction for floating point
if(data[i]<0.01)steps--;
ret.push([data[i],val,steps]);
}
return ret;
}