
1 通过驾车实例,小人从起点经过多个途经点行驶到终点
2 :bo坐标标点数组,一变量,动态获取bo。本想通过循环bo长度来实现,但由于本人技术有限,对百度地图API了解不深,没有实现,只能用个笨法子。
3 下面这段代码是通过百度地图导航功能实现,将坐标点连起来得到行车路线轨迹
var driving2 = new BMap.DrivingRoute(map); //驾车实例
driving2.search(bo[0],bo[1]);
driving2.setSearchCompleteCallback(function(){
var pts= driving2.getResults().getPlan(0).getRoute(0).getPath(); //通过驾车实例,获得一系列点的数组
var polyline = new BMap.Polyline(pts);
map.addOverlay(polyline);
})
4 由于百度地图单点运动只支持两个点,是先找到两点间路线在把路线划分成坐标点数组,通过点到点的实现完成小人的移动。 想了很多法子也没有见途经点添加到两点中间
5 最后的实现,举个例子,要得到从a到b,在从b到c的结果,分别得到,从a到b的坐标点数组是s1,从b到c的坐标点数组s2,最后通过concat数组方法,将s2数组添加到s1数组成一个新的数组s3,让小人根据s3数组起点进行移动。实现添加途经点的方法。
6 目前的方法实现是写死的,最好能够通过for循环实现添加途经点,但研究了好久,总是无法实现,如果有能实现的,还望告知下,谢谢!
7 以下代码是动态实现7个节点,都是写死的。
var dri = new BMap.DrivingRoute(map);
if(bo.length==2){
var driving2 = new BMap.DrivingRoute(map); //驾车实例
driving2.search(bo[0],bo[1]);
driving2.setSearchCompleteCallback(function(){
var pts= driving2.getResults().getPlan(0).getRoute(0).getPath(); //通过驾车实例,获得一系列点的数组
var polyline = new BMap.Polyline(pts);
map.addOverlay(polyline);
})
dri.search(bo[0],bo[1]);
dri.setSearchCompleteCallback(function(){
var pts = dri.getResults().getPlan(0).getRoute(0).getPath(); //通过驾车实例,获得一系列点的数组
var paths = pts.length; //获得有几个点
var carMk = new BMap.Marker(pts[0],{icon:myIcon});
map.addOverlay(carMk);
i=0;
function resetMkPoint(i){
carMk.setPosition(pts[i]);
if(i < paths){
setTimeout(function(){
i++;
resetMkPoint(i);
},100);
}
}
setTimeout(function(){
resetMkPoint(5);
},100)
});
}else{
for(i=0;i<bo.length;i++) {
if(i<bo.length-1){
dri.search(bo[i],bo[(i+1)]);
}
}
dri.setSearchCompleteCallback(function(){
var pts= dri.getResults().getPlan(0).getRoute(0).getPath(); //通过驾车实例,获得一系列点的数组
var polyline = new BMap.Polyline(pts);
map.addOverlay(polyline);
})
//3个节点
if(bo.length==3){
var pts1=[];
var dri1 = new BMap.DrivingRoute(map);
dri1.search(bo[0],bo[(1)]);
dri1.setSearchCompleteCallback(function(){
pts1 = dri1.getResults().getPlan(0).getRoute(0).getPath();
})
var pts2=[];
var dri2 = new BMap.DrivingRoute(map);
dri2.search(bo[1],bo[(2)]);
dri2.setSearchCompleteCallback(function(){
pts2 = dri2.getResults().getPlan(0).getRoute(0).getPath();
var pts=pts1.concat(pts2);
var paths = pts.length; //获得有几个点
carMk = new BMap.Marker(pts[0],{icon:myIcon});
map.addOverlay(carMk);
i=0
function resetMkPoint(i){
carMk.setPosition(pts[i]);
if(i < paths){
setTimeout(function(){
i++;
resetMkPoint(i);
},30);
}
}
setTimeout(function(){
resetMkPoint(5);
},50)
})
}
//4个节点
if(bo.length==4){
var pts1=[];
var dri1 = new BMap.DrivingRoute(map);
dri1.search(bo[0],bo[(1)]);
dri1.setSearchCompleteCallback(function(){
pts1 = dri1.getResults().getPlan(0).getRoute(0).getPath();
})
var pts2=[];
var dri2 = new BMap.DrivingRoute(map);
dri2.search(bo[1],bo[(2)]);
dri2.setSearchCompleteCallback(function(){
pts2 = dri2.getResults().getPlan(0).getRoute(0).getPath();
})
var pts3=[];
var dri3 = new BMap.DrivingRoute(map);
dri3.search(bo[2],bo[(3)]);
dri3.setSearchCompleteCallback(function(){
pts3 = dri3.getResults().getPlan(0).getRoute(0).getPath();
var pts=pts1.concat(pts2).concat(pts3);
var paths = pts.length; //获得有几个点
carMk = new BMap.Marker(pts[0],{icon:myIcon});
map.addOverlay(carMk);
i=0
function resetMkPoint(i){
carMk.setPosition(pts[i]);
if(i < paths){
setTimeout(function(){
i++;
resetMkPoint(i);
},30);
}
}
setTimeout(function(){
resetMkPoint(5);
},50)
})
}
//5个节点
if(bo.length==5){
var pts1=[];
var dri1 = new BMap.DrivingRoute(map);
dri1.search(bo[0],bo[(1)]);
dri1.setSearchCompleteCallback(function(){
pts1 = dri1.getResults().getPlan(0).getRoute(0).getPath();
})
var pts2=[];
var dri2 = new BMap.DrivingRoute(map);
dri2.search(bo[1],bo[(2)]);
dri2.setSearchCompleteCallback(function(){
pts2 = dri2.getResults().getPlan(0).getRoute(0).getPath();
})
var pts3=[];
var dri3 = new BMap.DrivingRoute(map);
dri3.search(bo[2],bo[(3)]);
dri3.setSearchCompleteCallback(function(){
pts3 = dri3.getResults().getPlan(0).getRoute(0).getPath();
})
var pts4=[];
var dri4 = new BMap.DrivingRoute(map);
dri4.search(bo[3],bo[(4)]);
dri4.setSearchCompleteCallback(function(){
pts4 = dri4.getResults().getPlan(0).getRoute(0).getPath();
pts=pts1.concat(pts2).concat(pts3).concat(pts4);
var paths = pts.length; //获得有几个点
carMk = new BMap.Marker(pts[0],{icon:myIcon});
map.addOverlay(carMk);
i=0
function resetMkPoint(i){
carMk.setPosition(pts[i]);
if(i < paths){
setTimeout(function(){
i++;
resetMkPoint(i);
},30);
}
}
setTimeout(function(){
resetMkPoint(5);
},50)
})
}
//6个节点
if(bo.length==6){
var pts1=[];
var dri1 = new BMap.DrivingRoute(map);
dri1.search(bo[0],bo[(1)]);
dri1.setSearchCompleteCallback(function(){
pts1 = dri1.getResults().getPlan(0).getRoute(0).getPath();
})
var pts2=[];
var dri2 = new BMap.DrivingRoute(map);
dri2.search(bo[1],bo[(2)]);
dri2.setSearchCompleteCallback(function(){
pts2 = dri2.getResults().getPlan(0).getRoute(0).getPath();
})
var pts3=[];
var dri3 = new BMap.DrivingRoute(map);
dri3.search(bo[2],bo[(3)]);
dri3.setSearchCompleteCallback(function(){
pts3 = dri3.getResults().getPlan(0).getRoute(0).getPath();
})
var pts4=[];
var dri4 = new BMap.DrivingRoute(map);
dri4.search(bo[3],bo[(4)]);
dri4.setSearchCompleteCallback(function(){
pts4 = dri4.getResults().getPlan(0).getRoute(0).getPath();
})
var pts5=[];
var dri5 = new BMap.DrivingRoute(map);
dri5.search(bo[4],bo[(5)]);
dri5.setSearchCompleteCallback(function(){
pts5 = dri5.getResults().getPlan(0).getRoute(0).getPath();
pts=pts1.concat(pts2).concat(pts3).concat(pts4).concat(pts5);
var paths = pts.length; //获得有几个点
carMk = new BMap.Marker(pts[0],{icon:myIcon});
map.addOverlay(carMk);
i=0
function resetMkPoint(i){
carMk.setPosition(pts[i]);
if(i < paths){
setTimeout(function(){
i++;
resetMkPoint(i);
},30);
}
}
setTimeout(function(){
resetMkPoint(5);
},50)
})
}
if(bo.length==7){
var pts1=[];
var dri1 = new BMap.DrivingRoute(map);
dri1.search(bo[0],bo[(1)]);
dri1.setSearchCompleteCallback(function(){
pts1 = dri1.getResults().getPlan(0).getRoute(0).getPath();
})
var pts2=[];
var dri2 = new BMap.DrivingRoute(map);
dri2.search(bo[1],bo[(2)]);
dri2.setSearchCompleteCallback(function(){
pts2 = dri2.getResults().getPlan(0).getRoute(0).getPath();
})
var pts3=[];
var dri3 = new BMap.DrivingRoute(map);
dri3.search(bo[2],bo[(3)]);
dri3.setSearchCompleteCallback(function(){
pts3 = dri3.getResults().getPlan(0).getRoute(0).getPath();
})
var pts4=[];
var dri4 = new BMap.DrivingRoute(map);
dri4.search(bo[3],bo[(4)]);
dri4.setSearchCompleteCallback(function(){
pts4 = dri4.getResults().getPlan(0).getRoute(0).getPath();
})
var pts5=[];
var dri5 = new BMap.DrivingRoute(map);
dri5.search(bo[4],bo[(5)]);
dri5.setSearchCompleteCallback(function(){
pts5 = dri5.getResults().getPlan(0).getRoute(0).getPath();
})
var pts6=[];
var dri6 = new BMap.DrivingRoute(map);
dri6.search(bo[5],bo[(6)]);
dri6.setSearchCompleteCallback(function(){
pts6 = dri6.getResults().getPlan(0).getRoute(0).getPath();
pts=pts1.concat(pts2).concat(pts3).concat(pts4).concat(pts5).concat(pts6);
var paths = pts.length; //获得有几个点
carMk = new BMap.Marker(pts[0],{icon:myIcon});
map.addOverlay(carMk);
i=0
function resetMkPoint(i){
carMk.setPosition(pts[i]);
if(i < paths){
setTimeout(function(){
i++;
resetMkPoint(i);
},30);
}
}
setTimeout(function(){
resetMkPoint(5);
},50)
})
}
}

6274



被折叠的 条评论
为什么被折叠?



