收藏
回答

MapContext.translateMarker在移动过程中能停止么?

我目前是想在移动过程中想停止移动,这个有办法可以实现么?

回答关注问题邀请回答
收藏

2 个回答

  • 谭小谭
    谭小谭
    2022-01-21

    不用那么复杂啊

    命名一个变量playStates,用来显示播放或者暂停的状态,false为暂停,true为正在播放,控制显示播放或者暂停按钮(polyline为轨迹路线,playTime 为运动次数,通过自加来控制播放,运动完一次,自加一次,再开始下次运动)

    <text class="iconfont icon-play" @click="play" v-if="!playStates">&#xe663;</text>

    <text class="iconfont icon-pause" @click="pause" v-if="playStates">&#xe662;</text>

    暂停按钮方法 :

    pause() {

            this.playStates= false;

          },

    播放按钮方法:

          play() {

            this.playStates= true;

            this.run(this.polyline[0].points[this.playTime + 1])

          },

    轨迹运动方法:

    run(nextPoint) {

            this.mapContext.translateMarker({

              markerId: 0,

              destination: {

                latitude: nextPoint.latitude,

                longitude: nextPoint.longitude

              },

              autoRotate: false,

              duration: 2000,

              animationEnd: (res) => {

                // 单段运动完成

                if (++this.playTime < this.polyline[0].points.length - 1) {

                  // 如果播放次数小于路径总数,则未播放完成

                  if(this.playStates) {

    // 如果是播放状态,就继续回调播放方法

                    this.play();

                  }

                } else {

                  // 播放完成

                  console.log('播放完成')

                  this.playTime = 0;

                }

              },

              fail: (err) => {

                console.log('轨迹播放失败', err)

              }

            })

          },

    写得有点粗糙,看不懂再问我吧

    2022-01-21
    有用
    回复
  • bibolibo
    bibolibo
    2019-08-30

    文档里面还没有看到,不过你可以将想停下来的位置赋给 destination 的指定地点,相当于用变量将中间点,临时放在 指定地点.不过你要将最终的指定地点用另一个变量保存下来,不然当前的位置就是你的目的最终位置..

    你试一下这个呢.

    2019-08-30
    有用
    回复 2
    • 邹
      2019-08-30
      谢谢 我试试啊
      2019-08-30
      回复
    • 马新杰
      马新杰
      2020-02-13
      可以先把对应的marker清除了掉,然后再重新设置新位置,实现停止的效果。
      2020-02-13
      回复
登录 后发表内容
问题标签