Advertisement

WebGIS开发【智慧校园】实战案例:21. 项目实战(四)

阅读量:

最后我们来谈⼀下动画的实现
动画实际可以理解为对轨迹的模拟,当路径成功生成后,激发对路径的模拟,这里用判断语句来实 现这个逻辑:

复制代码
 driving.search(start,end,opts,function(status, result){

    
 if(status=='complete'){ 
    
 // 实现轨迹的模拟 
    
                     }else{ 
    
                     }
    
                  }) 
    
    
    
    
    javascript
    
    

先做⼀个小车的标记

复制代码
 var marker = new AMap.Marker({

    
 map:map, 
    
 position:start, 
    
 icon:'https://webapi.amap.com/images/car.png', 
    
 offset: new AMap.Pixel(-26 -13), autoRotation:true, 
    
 angle:-180, 
    
                         }) 
    
    
    
    
    javascript
    
    

这个小车规定了可以自动旋转,起始位置,并显示在地图上。

之后,就创建⼀个折线对象,用来显示车行驶需要走的路。

复制代码
 var passedPolyline = new AMap.Polyline({

    
 map:map, 
    
 strokeColor:'#AF5',//描边的绿⾊ 
    
 strokeWeight:6,//线宽 
    
 }) 
    
 marker.on('moving',function(e){ 
    
 passedPolyline.setPath(e.passedPath) 
    
 }) 
    
    
    
    
    javascript
    
    

⾸先定义路径的属性,之后给marker的移动事件赋予回调函数,也就是给折线定义具体的路径。 之后,还需要给marker的移动进行设置。

复制代码
 map.setFitView()

    
 marker.moveAlong(lineArr,{ 
    
 duration:500, 
    
 autoRotation: true, 
    
 }) 
    
    
    
    
    javascript
    
    

先调整地图的显示范围,然后规定在车移动时,每个0.5s就⼀定⼀次,且开启自动旋转。

这里有⼀个量还需要预定⼀下,就是lineArr。

之前在规划路径是,路其实是由很多的散点顺序连接组成的,这个 lineArr就是存储这些散点,而这些散点都是在result中存储的。

也就是说生成路径后,result结果就会返回当前轨迹对象,其中包含了导航信息。
那么就需要在判断体中先根据reult计算lineArr

复制代码
 var lineArr = []

    
 result.routes[0].steps.forEach(function(item) {
    
 lineArr.push(...item.path) 
    
 }); 
    
    
    
    
    javascript
    
    

这样就将result中的结果逐个push到lineArr当中。

全部评论 (0)

还没有任何评论哟~