自2018年10月18日起,高德开发者论坛除车机板块外,其他板块将停止发帖与维护,如您有使用问题请 提交工单 联系我们,感谢您的理解。

查看: 522|回复: 8
打印 上一主题 下一主题

[报错] JavaScript V1.3.7 API 轨迹回放过程中有些点不执行移动

[复制链接]
最佳答案
0 

1

主题

5

帖子

17

积分

新手上路

Rank: 1

积分
17
跳转到指定楼层
楼主
发表于 2015-6-4 17:14:52 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
今天开发新版API的轨迹回放功能,发现了如下问题:
这里有14个点,但轨迹回放的时候只运行了9个点就不执行了(很多点经纬度一样)
经纬度没有问题,不知道可能是什么原因呢?
我使用的是this._marker.moveTo(this._path[nextIndex], speedRate);
求官方大神指点迷津
有没有谁能指点一下
官方Bug?

  /**
         * 向前移动一步
         */
        MarkerMovingControl.prototype.step = function(){
            var nextIndex = this._currentIndex + 1;
            if (nextIndex < this._path.length) {
                if (!this._listenToMoveend) {
                    this._listenToMoveend = AMap.event.addListener(this._marker, 'moveend', function(){
                        this._currentIndex++;
                        AMap.event.trigger(this, 'stepend');
                    }, this);
                }
                console.log("nextIndex:"+nextIndex+";speed="+speedRate+";Data:"+this._path[nextIndex]);
                pauseMarkerIndex = this._currentIndex;
                this._marker.moveTo(this._path[nextIndex], speedRate);
            }
        };


日志:
traceReplayCtrl.js:187 Object {content: Array[11], totalElements: 11, totalPages: 1, last: true, sort: null…}

traceReplayCtrl.js:205 104.040809913144,30.6262879652452,106

traceReplayCtrl.js:206 104.04081,30.626288

traceReplayCtrl.js:205 104.040870087803,30.6261430514454,107

traceReplayCtrl.js:206 104.04087,30.626143

traceReplayCtrl.js:205 104.040809913144,30.6262879652452,114

traceReplayCtrl.js:206 104.04081,30.626288

traceReplayCtrl.js:205 104.040870087803,30.6261430514454,117

traceReplayCtrl.js:206 104.04087,30.626143

traceReplayCtrl.js:205 104.040809913144,30.6262879652452,118

traceReplayCtrl.js:206 104.04081,30.626288

traceReplayCtrl.js:205 104.040870087803,30.6261430514454,137

traceReplayCtrl.js:206 104.04087,30.626143

traceReplayCtrl.js:205 104.040809913144,30.6262879652452,138

traceReplayCtrl.js:206 104.04081,30.626288

traceReplayCtrl.js:205 104.040870087803,30.6261430514454,139

traceReplayCtrl.js:206 104.04087,30.626143

traceReplayCtrl.js:205 104.04087008780324,30.626143051445382,115

traceReplayCtrl.js:206 104.04087,30.626143

traceReplayCtrl.js:205 104.04080991314417,30.626287965245165,116

traceReplayCtrl.js:206 104.04081,30.626288

traceReplayCtrl.js:205 104.04122951600971,30.626419040429795,136

traceReplayCtrl.js:206 104.04123,30.626419

traceReplayCtrl.js:432 nextIndex:1;speed=1500;Data:104.04087,30.626143

traceReplayCtrl.js:432 nextIndex:2;speed=1500;Data:104.04081,30.626288

traceReplayCtrl.js:432 nextIndex:3;speed=1500;Data:104.04087,30.626143

traceReplayCtrl.js:432 nextIndex:4;speed=1500;Data:104.04081,30.626288

traceReplayCtrl.js:432 nextIndex:5;speed=1500;Data:104.04087,30.626143

traceReplayCtrl.js:432 nextIndex:6;speed=1500;Data:104.04081,30.626288

traceReplayCtrl.js:432 nextIndex:7;speed=1500;Data:104.04087,30.626143

traceReplayCtrl.js:432 nextIndex:8;speed=1500;Data:104.04087,30.626143



加粗部分为未执行的点(就是最后2个点,经纬度都没有问题)



贴图




图片终点位置的点始终没有执行到。。。



使用下面的模拟数据却正常
var lngX = data.content[0].longitude;
                        var latY = data.content[0].latitude;
                        $scope.lineArr.push(new AMap.LngLat(lngX, latY));
                        for (var i = 1; i < 50; i++) {
                            lngX = lngX + Math.random() * 0.05;
                            if (i % 2) {
                                latY = latY + Math.random() * 0.0001;
                            } else {
                                latY = latY + Math.random() * 0.06;
                            }
                            $scope.lineArr.push(new AMap.LngLat(lngX, latY));
                        }



回复

使用道具 举报

最佳答案
0 

1

主题

5

帖子

17

积分

新手上路

Rank: 1

积分
17
沙发
 楼主| 发表于 2015-6-5 14:30:12 | 只看该作者
没人回答,经过自己分析处理,目前已经解决。
原因:marker.MoveTo方法会自动判断下一个点和当前点的经纬度一致的话则停止moveTo,认为已经到终点了。

解决办法:
/**
         * 向前移动一步
         */
        MarkerMovingControl.prototype.step = function(){
            var nextIndex = this._currentIndex + 1;
            if (nextIndex < this._path.length) {
                if (!this._listenToMoveend) {
                    this._listenToMoveend = AMap.event.addListener(this._marker, 'moveend', function(){
                        this._currentIndex++;
                        AMap.event.trigger(this, 'stepend');
                    }, this);
                }
                //如果下一个点与当前点位置相同,则跳过,直接执行到下下个点,以此循环
                if(this._path[nextIndex].lng == this._path[this._currentIndex].lng && this._path[nextIndex].lat == this._path[this._currentIndex].lat ) {
                    this._currentIndex++;
                    this.step();
                    return;
                }else{
                    this._marker.moveTo(this._path[nextIndex], speedRate);
                }

            }
        };

我参考的高人Demo(经过自己完善,修改后的源码可以用于V1.3 API,解决了上面我提到的Bug):
Demo(1.2)
http://zhaoziang.com/amap/zero_3_1.html
回复 支持 反对

使用道具 举报

最佳答案
0 

1

主题

5

帖子

17

积分

新手上路

Rank: 1

积分
17
板凳
 楼主| 发表于 2015-6-5 14:30:51 | 只看该作者
如果对你有帮助,请支持一下
回复 支持 反对

使用道具 举报

最佳答案
5 

0

主题

69

帖子

250

积分

中级会员

Rank: 3Rank: 3

积分
250
地板
发表于 2015-6-6 20:44:37 | 只看该作者
赞个!!
回复

使用道具 举报

最佳答案
0 

9

主题

19

帖子

134

积分

新手上路

Rank: 1

积分
134
5#
发表于 2015-7-9 16:40:52 | 只看该作者
为什么我按你的样子加上了step就不循环了,方法moveTo貌似也不执行了,什么情况
回复 支持 反对

使用道具 举报

最佳答案
4 

1

主题

16

帖子

45

积分

新手上路

Rank: 1

积分
45
6#
发表于 2016-11-17 10:51:02 | 只看该作者
楼主啊,原来我遇到你的问题,再构建路径点的时候把重复的点排除,还是到某个点就不走了;

把你的代码加上,还是到那个点就不走了,不起作用啊,楼主?
回复 支持 反对

使用道具 举报

最佳答案
4 

1

主题

16

帖子

45

积分

新手上路

Rank: 1

积分
45
7#
发表于 2016-11-17 17:16:08 | 只看该作者
本帖最后由 ljh_gd 于 2016-11-17 17:41 编辑

楼主,我通过实验发现,回放速度偏大,有些点就无法移动,这时候排除距离太小的点可以移动;
减小回放速度,这个两点距离范围可以相应扩大;
现在还没有搞清楚两点最小距离范围和移动速度的范围和关系,有谁知道?
回复 支持 反对

使用道具 举报

最佳答案
0 

0

主题

2

帖子

22

积分

新手上路

Rank: 1

积分
22
8#
发表于 2016-11-25 17:17:55 | 只看该作者
能够自己解决并且放出解决方案,赞一个
回复 支持 反对

使用道具 举报

最佳答案
4 

1

主题

16

帖子

45

积分

新手上路

Rank: 1

积分
45
9#
发表于 2016-11-29 10:03:49 | 只看该作者
楼主啊,排除重复点还是到有些点就停止了,求解啊?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|小黑屋|高德开发者论坛

Copyright ©2014 高德开发者论坛.All Rights Reserved |京ICP证070711号

意见反馈 常见问题 服务条款 联系我们
快速回复 返回顶部 返回列表