西藏旅游地图社区

谷歌地图路径回放动画的实现(一)

钱端工程师2018-12-04 12:58:33

因为公司有一些特殊的需求,前几天在做上一个上一个项目的时候,用到了谷歌地图,路径回放这个功能再百度地图和高德地图是有API直接可以使用的,奈何公司领导只让用谷歌地图,搜索发现网上并无多少相关文章,所以我把我在开发过程中遇到的问题记录下来,希望能够帮助大家。

       第一个遇到问题就是,两点之间的路径如果已经实现,怎么能够让路径在点击一个按钮之后一点一点绘制出来。

       我是通过谷歌内置的 Polyline 这个方法来实现的,假如在点击进入页面的时候两点之间的路线已经生成在页面中,说明有一个数组中存放了两点之间路径的详细地点,比如为  my_trip

        则我们可以声明一个新的数组new_trips,设置一个时间循环,增加时间,每次循环则把my_trip中的数组多一个放入new_trips中来绘制路径,会产生一种路径在一点点绘制出来的效果,代码如下:

    假设按钮为:<div class="top_btn1">开始回放</div>

    

    //声明一个数组放入不同的颜色

    var polyLineColor = new Array(["blue"], ["#00FF00"], ["#333333"]);

    //声明一个计数变量

    var trip_count = 1;

    //声明两个变量用来存储时间循环
    var begin;


    //回放路径执行的函数

    //点击开始回放按钮
    $('.top_btn1').on('click', function() {
          if ($('.top_btn1').text() == '开始回放') {
              //时间循环控制速度,go函数是绿色路径的绘制,200为一秒五次,可以使用一个变量来控制速度
              begin = setInterval(go, 200);
              $('.top_btn1').text('暂停回放');
          } else {
              //暂定时间循环
              clearInterval(begin);
              $('.top_btn1').text('开始回放');
          }
     });

    function go() {
          //根据计数当前进度截取my_trip数组
          let new_trips = my_trip.slice(0, trip_count );
          //画出回放(绿色)路径
          flightPath = new google.maps.Polyline({ //创建线性叠加层对象
              path: myTrips, //路径
              strokeColor: polyLineColor[1], //线条颜色
              strokeOpacity: 0.8, //线条透明度
              strokeWeight: 3, //线条宽度
          });
          flightPath.setMap(map);
          //进度加一
          trip_count++;

        }

但是绘制路径的时候没有方向,效果不是太好,若有加剪头的需求,请看:谷歌地图路径回放动画的实现(二)

实现的效果: