//首先将折线上的坐标点存入一个数组中 var arr = [pt1,pt2,pt3], brr = [], i = 0; while(i < arr.length){ //这样可以按照画线的顺序获取相邻的两个坐标点 var p1 = arr[i+1], p2 = arr[i]; //计算两点之间的实际距离,百度地图用map.getDistance(pointA,pointB)计算,其他地图可以用自定义函数distanceTo //然后除以一个整数M(M具体根据情况而定),得到等分点的个数N //计算两点的经纬度的偏移值 var disX = p1.x - p2.x; disY = p1.y - p2.y; //disX和disy分别除以N,得到每个等分点的经纬度分别需要偏移的值 var newdisX = disX/N, newdisY = disY/N; //得到新的经纬度坐标 var newptX = arr[i].x + newdisX * i, newptY = arr[i].y + newdisY * i; //实例化一个新的坐标点 var newpt = new Point(newptX,newptY); //将新的坐标点存到一个新的数组中,该数组即为我们需要的坐标点的集合 brr.push(newpt); i ++; } //计算两点的实际距离 distanceTo: function(pointA,pointB) { var distance = 0.0; if ((pointA.x != null) && (pointA.y != null) && (pointB != null) && (pointB.x != null) && (pointB.y != null)) { var dx2 = Math.pow(pointA.x - pointB.x, 2); var dy2 = Math.pow(pointA.y - pointB.y, 2); distance = Math.sqrt(dx2 + dy2); } return distance; }
时间: 2024-10-11 16:55:51