Source: ext/layer/EasyRouteplayer.js

import { RoutePlayer } from "../../libs/maptalks-routeplayer/maptalks.routeplayer.es";

/**
 *轨迹图层类
 */
class EasyRouteplayer {
    /**
     * Creates an instance of EasyRouteplayer.
     * @param {*} routes 一个包含路径数据的对象数组
     * @param {*} EasyMap 地图实例
     * @param {*} mapPan 是否地图随动(只有一个轨迹时生效)
     * @param {*} [options=null] 选项对象选项
     * @param {Number} options.unitTime 播放倍速
     * @param {boolean} options.showRoutes 是否在播放过程中显示路线
     * @param {Number} options.totalTime 总时长(传递该值则该轨迹的运行时间按着该值处理,轨迹点匀速运动,传0则代表该值不生效,默认为0 单位是毫秒)
     * @param {boolean} options.rotating 是否车头随转(只有一个轨迹时生效)
     * @memberof EasyRouteplayer
     */
    constructor(
        routes,
        EasyMap,
        mapPan = false,
        options = {
            unitTime: 1,
            totalTime: 0,
            rotating:false
        }
    ) {
        if (options.totalTime && Number(options.totalTime) > 0) {
            routes.map((val) => {
                for (let i = 0; i < val.path.length; i++) {
                    val.path[i][2] = i * 1000;
                }
            });
            if (options.unitTime) {
                options.totalTime = options.totalTime / options.unitTime;
            }
        }
        if(!options.unitTime){
            options.unitTime=1
        }
        if(!options.rotating){
            options.rotating=false
        }
        this.layer = new RoutePlayer(
            routes,
            EasyMap.map,
            mapPan,
            options
        );
        this.id = this.layer.id;
    }

    /**
     *停止播放并从地图上删除。
     *
     * @memberof EasyRouteplayer
     */
    remove() {
        this.layer.remove();
    }

    /**
     *开始播放
     *
     * @memberof EasyRouteplayer
     */
    play() {
        this.layer.play();
    }

    /**
     *暂停播放
     *
     * @memberof EasyRouteplayer
     */
    pause() {
        this.layer.pause();
    }

    /**
     *取消播放
     *
     * @memberof EasyRouteplayer
     */
    cancel() {
        this.layer.cancel();
    }

    /**
     *完成播放
     *
     * @memberof EasyRouteplayer
     */
    finish() {
        this.layer.finish();
    }

    /**
     *获取开始时间。开始时间是所有路线的开始时间中的最少时间
     *
     * @return {Number} 时间
     * @memberof EasyRouteplayer
     */
    getStartTime() {
        return this.layer.getStartTime();
    }

    /**
     *获取结束时间。结束时间是所有路线的结束时间中的最大值
     *
     * @return {Number} 时间
     * @memberof EasyRouteplayer
     */
    getEndTime() {
        return this.layer.getEndTime();
    }

    /**
     *获取播放器的当前播放时间
     *
     * @return {Number} 时间
     * @memberof EasyRouteplayer
     */
    getCurrentTime() {
        return this.layer.getCurrentTime();
    }

    /**
     *将时间设置为t并在那一刻重新绘制所有内容
     *
     * @param {Number} t 时间
     * @memberof EasyRouteplayer
     */
    setTime(t) {
        this.layer.setTime(t);
    }

    /**
     *获取单位时间
     *
     * @return {*}
     * @memberof EasyRouteplayer
     */
    getUnitTime() {
        return this.layer.getUnitTime();
    }

    /**
     *设置单位时间
     *
     * @param {number} t options.unitTime
     * @memberof EasyRouteplayer
     */
    setUnitTime(t) {
        this.layer.setUnitTime(t);
    }

    /**
     *获取路线的点符号
     *
     * @param {*} idx 轨迹id
     * @return {object}
     * @memberof EasyRouteplayer
     */
    getMarkerSymbol(idx) {
        return this.layer.getMarkerSymbol(idx);
    }

    /**
     *设置路线的点符号
     *
     * @param {*} idx 轨迹id
     * @param {object} symbol
     * @memberof EasyRouteplayer
     */
    setMarkerSymbol(idx, symbol) {
        this.layer.setMarkerSymbol(idx, symbol);
    }

    /**
     *获取路线的线符号
     *
     * @param {*} idx 轨迹id
     * @return {*}
     * @memberof EasyRouteplayer
     */
    getLineSymbol(idx) {
        return this.layer.getLineSymbol(idx);
    }

    /**
     *设置路线的线符号
     *
     * @param {*} idx 轨迹id
     * @param {*} symbol
     * @memberof EasyRouteplayer
     */
    setLineSymbol(idx, symbol) {
        this.layer.setLineSymbol(idx, symbol);
    }
}

export default EasyRouteplayer;