我在与地图上的几个计算点之间的距离的困难:JavaScript中的数学运算并在循环中实现它?
我有坐标系下的阵列,其中所述第一坐标[“30.327547”,“59.919676”]是跳闸的开头和其他都加油站:
var J = [
["30.327547", "59.919676"],
["29.84964", "58.737619"],
["28.250252", "57.785994"],
["30.098912", "55.175885"],
["30.37357", "54.503783"],
["27.572056", "53.898325"],
["26.000193", "53.11856"]
];
接下来,从这个COORDS使地图上的Geopoints我建议立即进行删除使用特殊Yandex的地图API函数YMaps.Geopoint:
var a=new YMaps.GeoPoint(30.327547,59.919676);
var b=new YMaps.GeoPoint(29.84964,58.737619);
var c=new YMaps.GeoPoint(28.250252,57.785994);
var d=new YMaps.GeoPoint(30.098912,55.175885);
var e=new YMaps.GeoPoint(30.37357,54.503783);
var f=new YMaps.GeoPoint(27.572056,53.898325);
var g=new YMaps.GeoPoint(26.000193,53.11856);
最后,计算我用另一个API函数“点1点之间的距离。距离(点2)“:
var d1=a.distance(b); //distance1
var d2=a.distance(b)+b.distance(c); //distance2
var d3=a.distance(b)+b.distance(c)+c.distance(d); //distance3
var d4=a.distance(b)+b.distance(c)+c.distance(d)+d.distance(e); //distance4
var d5=a.distance(b)+b.distance(c)+c.distance(d)+d.distance(e)+e.distance(f); //distance5
var d6=a.distance(b)+b.distance(c)+c.distance(d)+d.distance(e)+e.distance(f)+f.distance(g); //distance6
这工作得很好(我也相互转换结果格式化(导致 公里)),其结果是:
console.log(YMaps.humanDistance(d1));console.log(YMaps.humanDistance(d2));console.log(YMaps.humanDistance(d3));
console.log(YMaps.humanDistance(d4));console.log(YMaps.humanDistance(d5));console.log(YMaps.humanDistance(d6));
//{"Point1":"134 km.","Point2":"275 km.","Point3":"586 km.","Point4":"663 km.","Point5":"857 km.","Point6":"992 km."}
什么其实我是想使一个循环内作业本:
for(var i=0;i<J.length;i++){
// Iteratting through the array of points of J and creating Geoobjects on the map, dynamically putting them into public variables "temp_*"
window["temp_" + i]=new YMaps.GeoPoint(J[i][0],J[i][1]);
//next point
var next=i+1;
//master point (the begin of trip)
var master=window["temp_0"];
//calculating the distance between the master point and actual [i] point in the loop
var formula=master.distance(window["temp_"+i]);
// calculating the distance between the actual [i] point and the next in the loop
var formula2=window["temp_" + i].distance(window["temp_"+next]);
//summing and converting into human format and dinamically putting them into variables "result_*"
window["result_"+i]=YMaps.humanDistance(formula+formula2);
//logging the results
console.log(YMaps.humanDistance(window["result_"+i]));
}
这个循环的作品,但将返回错误的结果。任何人都可以建议循环中出现什么问题吗? 我想我可能需要在这个循环中使用另一个循环,它会根据需要返回其他点的汇总很多次。 谢谢。
它不使用parseFloat就可以解析,但我的难点在于实现这种依赖性: var d1 = a.distance(b); //距离1 var d2 = a.distance(b)+ b.distance(c); //距离2 var d3 = a.distance(b)+ b.distance(c)+ c.distance(d); ... 其中每次计算下一点加 – moogeek 2010-02-20 11:06:52
谢谢。我怎么能做到这一点,而不使用循环外的动态变量窗口[“temp _”+ i]? – moogeek 2010-02-20 11:27:39
邪恶!有效!!!你真是太棒了! – moogeek 2010-02-20 11:33:32