最近项目用到百度地图,由于司机错误使用导致上传的GPS点天少,两点之间的距离太长没有GPS点,现做了一个小算法来解决此问题(地图视为平面图形)代码如下。
//每1000米算作一个点
var pointA = new BMap.Point(ax,ay); // 创建点坐标A--大渡口区
var pointB = new BMap.Point(bx,by);
var d = (map.getDistance(pointA,pointB)).toFixed(2);
var n = Math.ceil(d/1000);
var dx = 1000*(bx - ax)/d;
var dy = 1000*(by-ay)/d;
alert(dx);
var xc = dx + ax;
var yc = dy + ay;
for(var i=1;i<=n;i++){
var xc = i*dx + ax;
var yc = i*dy + ay;
var new_point = new BMap.Point(xc,yc);
var marker = new BMap.Marker(new_point); // 创建标注
map.addOverlay(marker); // 将标注添加到地图中
map.panTo(new_point);
}
//每1000米算作一个点
var pointA = new BMap.Point(ax,ay); // 创建点坐标A--大渡口区
var pointB = new BMap.Point(bx,by);
var d = (map.getDistance(pointA,pointB)).toFixed(2);
var n = Math.ceil(d/1000);
var dx = 1000*(bx - ax)/d;
var dy = 1000*(by-ay)/d;
alert(dx);
var xc = dx + ax;
var yc = dy + ay;
for(var i=1;i<=n;i++){
var xc = i*dx + ax;
var yc = i*dy + ay;
var new_point = new BMap.Point(xc,yc);
var marker = new BMap.Marker(new_point); // 创建标注
map.addOverlay(marker); // 将标注添加到地图中
map.panTo(new_point);
}