JSAPI Three API Reference
    正在准备搜索索引...

    车辆数字孪生,用于在3D地图上实时渲染和管理大量移动车辆模型。 通过定时推送位置数据驱动车辆平滑移动,支持多种内置车辆模型(写实风格和极简风格), 并提供车辆追踪、颜色设置、可见性控制等交互能力。

    需要通过Engineadd方法添加到场景中才能生效。

    推送数据默认需要包含id、lng、lat、time字段,如果原始数据字段名不同, 可通过dataProvider自定义映射。

    // 创建Twin实例并配置模型
    const twin = engine.add(new mapvthree.Twin({
    modelConfig: {
    3: mapvthree.twinConstants.REALISTIC_TEMPLATE_MODEL.CAR,
    6: mapvthree.twinConstants.REALISTIC_TEMPLATE_MODEL.BUS,
    10: mapvthree.twinConstants.REALISTIC_TEMPLATE_MODEL.MAN,
    },
    delay: 2000,
    }));

    // 定时推送车辆数据
    setInterval(() => {
    twin.push([
    { id: 'car_1', lng: 116.39, lat: 39.9, dir: 90, time: Date.now(), modelType: 3 },
    { id: 'car_2', lng: 116.40, lat: 39.91, dir: 180, time: Date.now(), modelType: 6 },
    ]);
    }, 2000);

    // 追踪某辆车
    twin.trackById('car_1', { radius: 200, pitch: 1.0 });

    // 设置车辆颜色
    twin.setColorById('car_1', '#ff0000');

    // 监听点击事件
    twin.addEventListener('click', (e) => {
    console.log('点击的车辆:', e.clickInfo);
    });

    层级

    • Object3D
      • Twin
    索引

    构造函数

    • 构造函数,用于创建Twin

      参数

      • options: {
            autoClearTrack?: boolean;
            delay?: number;
            enableColorList?: string[];
            extraDir?: number;
            keepSize?: boolean;
            maxScale?: number;
            modelConfig?: { [modelType: number]: string };
            objectAttributes?: { [key: string]: string };
            objects?: Object3D<Object3DEventMap>[];
        } = {}

        配置选项

        • 可选autoClearTrack?: boolean

          追踪目标消失时是否自动清除追踪

        • 可选delay?: number

          数据刷新的时间间隔,默认为2000毫秒

        • 可选enableColorList?: string[]

          允许修改颜色的模型子网格名称列表

        • 可选extraDir?: number

          模型额外旋转角度

        • 可选keepSize?: boolean

          模型是否保持大小不变

        • 可选maxScale?: number

          模型最大缩放倍数

        • 可选modelConfig?: { [modelType: number]: string }

          模型配置,key为modelType,value为模型地址

        • 可选objectAttributes?: { [key: string]: string }

          附加物体所需数据,对应key值

        • 可选objects?: Object3D<Object3DEventMap>[]

          车辆额外伴随物体

      返回 Twin

    属性

    MINIMALIST_TEMPLATE_MODEL: {
        AMBULANCE: string;
        BICYCLE: string;
        BICYCLE_ANIMATE: string;
        BIGTRUCK: string;
        BUS: string;
        CAR: string;
        DANGEROUS: string;
        ELECTRICBICYCLE: string;
        FIRETRUCK: string;
        LARGETRUCK: string;
        MAN: string;
        MAN_ANIMATE: string;
        MINIBUS: string;
        MOTORCYCLE: string;
        MPV: string;
        POLICECAR: string;
        SMALLBUS: string;
        SMALLTRUCK: string;
        SUV: string;
        TAXI: string;
        TOUR: string;
        TRAFFICCONE: string;
        TRICYCLE: string;
        TRUCK: string;
        WATERCAR: string;
        WOMAN: string;
        WOMAN_ANIMATE: string;
    } = MINIMALIST_TEMPLATE_MODEL

    极简风格模型,详见 twinConstants.MINIMALIST_TEMPLATE_MODEL

    REALISTIC_TEMPLATE_COLOR: {
        black: string;
        blue: string;
        brown: string;
        cyanl: string;
        gray: string;
        green: string;
        orange: string;
        pink: string;
        purple: string;
        red: string;
        white: string;
        yellow: string;
    } = REALISTIC_TEMPLATE_COLOR

    写实风格的配色,详见 twinConstants.REALISTIC_TEMPLATE_COLOR

    REALISTIC_TEMPLATE_MODEL: {
        AMBULANCE: string;
        BICYCLE: string;
        BIGTRUCK: string;
        BUS: string;
        CAR: string;
        DANGEROUS: string;
        ELECTRICBICYCLE: string;
        FIRETRUCK: string;
        LARGETRUCK: string;
        MAN: string;
        MINIBUS: string;
        MOTORCYCLE: string;
        MPV: string;
        POLICECAR: string;
        SMALLBUS: string;
        SMALLTRUCK: string;
        SUV: string;
        TAXI: string;
        TOUR: string;
        TRAFFICCONE: string;
        TRICYCLE: string;
        TRUCK: string;
        WATERCAR: string;
        WOMAN: string;
    } = REALISTIC_TEMPLATE_MODEL

    写实风格模型,详见 twinConstants.REALISTIC_TEMPLATE_MODEL

    SERVICE_TEMPLATE_MODEL: {
        "10": string;
        "11": string;
        "12": string;
        "13": string;
        "14": string;
        "15": string;
        "17": string;
        "18": string;
        "19": string;
        "20": string;
        "21": string;
        "22": string;
        "23": string;
        "24": string;
        "25": string;
        "26": string;
        "27": string;
        "3": string;
        "4": string;
        "5": string;
        "6": string;
        "7": string;
        "8": string;
        "9": string;
    } = SERVICE_TEMPLATE_MODEL

    默认type字段的对应模型,详见 twinConstants.SERVICE_TEMPLATE_MODEL

    方法

    • 清除通过 trackById 设置的追踪

      返回 void

    • 销毁实例,释放资源

      返回 void

    • 获取模型实例

      参数

      • modelType: number

        模型类型

      返回 DynamicInstancedMesh

    • 暂停播放

      返回 void

    • 推送车辆数据

      参数

      • data: any[]

        车辆数据数组,每个元素需包含id、lng、lat、time数据,dir和modelType可选

      返回 void

      twin.push([
      { id: 'car_1', lng: 116.39, lat: 39.9, dir: 90, time: Date.now(), modelType: 3 },
      ]);
    • 重置状态

      返回 void

    • 设置车辆颜色

      参数

      • id: string | number

        车辆ID

      • color: string | number

        色值

      返回 void

    • 设置所有附加物可见性

      参数

      • status: boolean

        可见性状态

      返回 void

    • 根据模型类型设置附加物可见性

      参数

      • modelType: number

        模型类型

      • status: boolean

        可见性状态

      返回 void

    • 根据模型类型设置可见性

      参数

      • modelType: number

        模型类型

      • status: boolean

        可见性状态

      返回 void

    • 恢复播放

      返回 void

    • 追踪车辆

      参数

      • id: string | number

        车辆ID

      • option: { height: number; inside: boolean; pitch: number; radius: number } = {}

        配置

        • height: number

          高度

        • inside: boolean

          是否车内视角

        • pitch: number

          俯仰角

        • radius: number

          距离

      返回 boolean

      当前帧是否存在该车辆

    访问器

    • get dataProvider(): DataProvider

      数据处理器,用于自定义推送数据的字段映射,将原始数据转换为Twin所需的标准格式

      返回 DataProvider

      twin.dataProvider
      .process('time', 'timestamp')
      .process('point', item => [item.longitude, item.latitude, item.altitude])
      .process('dir', item => item.heading / 180 * Math.PI)
      .process('modelType', 'vehicleType');
    • get models(): {}

      所有模型实例的映射,key为modelType

      返回 {}