循环调用driving.search怎么按顺序实现每一条路径的轨迹回放

发布于 2022-09-07 21:55:05 字数 2242 浏览 20 评论 0

怎么实现路径按先后顺序回放?以下代码的执行结果是所有路径都同时回放。我想实现的效果是,第一条seach检索的路径轨迹回放完之后再回放第二条路径的轨迹回放,以此类推。

drawTrack(){
            var _this = this;
            _this.map.centerAndZoom(new BMap.Point(113.139612, 27.834782), 15);
            for (let index = 0; index < _this.pointObj.length-1; index++) {
                var driving = new BMap.DrivingRoute(_this.map, { 
                    renderOptions: { 
                        map: _this.map, 
                        autoViewport: true
                    },
                    onMarkersSet:function(routes) {
                        if(index != 0) _this.map.removeOverlay(routes[0].marker); //删除多余起点
                        else  _this.addClickHandler(_this.map, _this.openInfor[0], routes[0].marker); // 起点提示框

                        if(index != _this.pointObj.length-2) _this.map.removeOverlay(routes[1].marker);//删除多余终点
                        else _this.addClickHandler(_this.map, _this.openInfor[1], routes[1].marker); // 终点提示框
                        
                    },
                    onSearchComplete: function(res) {
                        var pts = res.getPlan(0).getRoute(0).getPath();    //通过驾车实例,获得一系列点的数组
                        var paths = pts.length;    //获得有几个点
                        var carMk = new BMap.Marker(pts[0]);
                        _this.map.addOverlay(carMk);
                        var i=0;
                        function resetMkPoint(i){
                            carMk.setPosition(pts[i]);
                            if(i < paths){
                                setTimeout(function(){
                                    i++;
                                    resetMkPoint(i);
                                },100);
                            } else {
                               _this.map.removeOverlay(carMk); 
                            }
                        }
                        setTimeout(function(){
                            resetMkPoint(5);
                        },100)
                    },
                })
                driving.search(_this.pointObj[index], _this.pointObj[index+1])
            }

结果: 每条路径的onSearchComplete函数同时执行。

期望实现效果: 新加标注从第一个起点规划路径走到最后一个终点。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

青朷 2022-09-14 21:55:05

driving.search(start, end, {waypoint: arr}) 有三个参数,start:起点; end:终点; {waypoint:arr} 途经点,将途经点数组放进第三个参数里面即可以根据指定定位点绘制出路径规划

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文