GeoLineTripEffectLayer

new Cesium.GeoLineTripEffectLayer(options)

轨迹线图层
Name Type Default Description
options Object {} optional 参数选项:
Name Type Default Description
viewer Viewer optional 三维球对象
effectType String 'glow' optional 轨迹效果,有如下值:1.'glow'(辉光);2.'solid'(单色实线);3.'dashed'(单色虚线)。
width Number 10.0 optional 线宽度。
widthMapField String optional width映射字段,数据对象中映射字段的值优先级高于设置的width值。
color Color Color.WHITE optional 线颜色。
colorMapField String optional color映射字段。
startTime JulianDate optional 轨迹开始时间,若不设置,则程序内部随机生成时间或使用数据中的时间。
startTimeMapField String optional startTime映射字段。例如映射字段名称为timeStamp,值为1603778552000,,即properties: {timeStamp: 1603778552000}。该数值代表时间戳,表示格林威治时间1970年01月01日00时00分00秒起至现在的毫秒数。
duration Number optional 轨迹运行的时间,单位:秒(s)。若不设置,则程序内部自动计算。
durationMapField String optional duration映射字段。
uniqueIdentifierMapField String 'OID' optional 要素的唯一标识。例如{type: feature, geometry: {}, properties: {OID: 1}}。必填参数。
nodeTimeMapField String optional 当轨迹数据是点要素数组时,每个节点的时间的映射字段,格式要求参见startTimeMapField。可缺省。详见setData接口文档。
samplePositionEnabled Boolean false optional 是否采样位置,默认false。如果为true,则轨迹运行过程中,会对当前地形或模型或图元进行采样以获得真实高度。
objectsToExclude Array.<Object> optional 不进行采样的图元集合,包括primitives, entities, or 3D Tiles。
Author:
  • liuhonglei
Examples:
let data = [
     {
         "type": "Feature",
         "geometry": {
             "type": "LineString",
             "coordinates": [
                 [114.20089, 30.77664, 15], [114.20089, 30.77664, 289.56], [114.19276, 30.76836, 480.06]
             ]
         },
         "properties": {
             OID: 1,  //必填
             color: "rgb(0, 255, 255)",  //可缺省
             duration: 5545, //可缺省
             startTime: 1593950758000  //可缺省
         }
     },
     {
         "type": "Feature",
         "geometry": {
             "type": "LineString",
             "coordinates": [
                 [114.21236, 30.78822, 22.86], [114.21451, 30.79028, 243.84], [114.21451, 30.79028, 281.94]
             ]
         },
         "properties": {
             OID: 2,
             color: "rgb(0, 255, 0)",
             duration: 3899,
             startTime: 1603866190000
         }
     },
     ...
];
let geoLineTripEffectLayer = new Cesium.GeoLineTripEffectLayer({
     effectType: 'glow',
     width: 10,
     startTimeMapField: 'startTime',
     durationMapField: 'duration',
     colorMapField: 'color'
     uniqueIdentifierMapField: 'OID'
});
geoLineTripEffectLayer.setData(data);
// 贴地轨迹
// 构造数据
let data = [
     {
         "type": "Feature",
         "geometry": {
             "type": "LineString",
             "coordinates": [
                 [114.21236, 30.78822, 22.86], [114.21451, 30.79028, 243.84], [114.21451, 30.79028, 281.94]
             ]
         },
         "properties": {
             OID: 1,  //必填
             color: "rgb(0, 255, 0)",
             startTime: 1603866190000
         }
     }
];
// 添加汽车模型
let entity = viewer.entities.add({
     model: {
         uri: '/geomap-api/JsCesuimDemo/resource/models/CesiumMilkTruck/CesiumMilkTruck.glb',
         minimumPixelSize: 64,
     }
});
let geoLineTripEffectLayer = new Cesium.GeoLineTripEffectLayer({
     effectType: 'solid',
     width: 2,
     uniqueIdentifierMapField: 'OID',
     color: new Cesium.Color(0.0, 1.0, 1.0),  // 线数据里面的属性优先级更高
     samplePositionEnabled: true,  // 开启采样
     objectsToExclude: entity, // 采样时不采样汽车
});
Demo:

Extends

Members

readonlyonTripCompleted : Event

轨迹线运行结束回调,每条轨迹线结束时都会触发回调,参数是对应的轨迹的要素
Example:
function appendDataFunc(feature) {
     let data = [
         {
             type: "Feature",
             geometry: {
                 type: "LineString",
                 coordinates: [
                     [114.30322150526807, 30.545919790841396],[114.32871070512215, 30.555526174411533]
                 ]
             },
             properties: {
                 OID: 0
             }
         }
     ];
     // 在OID为0的轨迹线后面追加数据
     geoLineTripEffectLayer.appendData({data: data});
     // 移除事件监听
     geoLineTripEffectLayer.onTripCompleted.removeEventListener(appendDataFunc);
}
geoLineTripEffectLayer.onTripCompleted.addEventListener(appendDataFunc);

readonlyonTripNodeChanged : Event

轨迹运行到节点时触发的回调,参数为1.当前节点在轨迹中的索引2.当前时间3.当前轨迹的要素
Example:
geoLineTripEffectLayer.onTripNodeChanged.addEventListener((nodeIndex, currentTime, feature) => {
     
});

readonlyonTripping : Event

轨迹运动中事件。回调函数有形参四个,第一个参数是当前轨迹的feature,第二个参数为轨迹运动中的坐标,第三个是轨迹运动中的方位角,第四个参数是轨迹运动的当前时间。

Methods

addTo(map)

绑定到三维地图
Name Type Description
map viewer
Inherited From:

appendData(options)

追加数据。在追加的数据中如果与现有数据中存在OID相同的数据,则在此轨迹线后面添加数据(可以是点数据或线数据); 如果不存在OID相同的数据,则新增轨迹线。
Name Type Description
options Object 追加的数据说明:
Name Type Default Description
data Array [] optional 追加的要素数组
duration Number optional 轨迹运行时间。若在已有轨迹后面追加数据,duration计算方式是追加数据的最后一个点和已有轨迹的第一个点的时间差值,即总的时间。
Example:
let duration = 10;
let data = [
     {
         type: 'Feature',
         geometry: {
             type: 'LineString',  //可以在已有轨迹后面追加一条线
             coordinates: []
         },
         properties: {
             'OID': 1,
             'duration': 10  // 可不设置,如果不设置则程序自动计算时间。如果该条轨迹线已经存在,则更新该轨迹线,此时需要更新duration,需计算追加数据的最后一个节点到当前轨迹的第一个节点之间的时间间隔。
         }
     },
     {
         type: 'Feature',
         geometry: {
             type: 'Point',  //可以在已有轨迹后面追加一个点
             coordinates: []
         },
         properties: {
             'OID': 2,
         }
     },
     {
         type: 'Feature',
         geometry: {
             type: 'LineString',  //可以新增轨迹线
             coordinates: []
         },
         properties: {
             'OID': 3,
             'duration': 20  // 可不设置,如果不设置则程序自动计算时间。如果该条轨迹线不存在,则依据此要素添加一条轨迹线。
         }
     }
];
geoLineTripEffectLayer.appendData({
     data: data,
     duration: duration  //可以不设置,如果不设置,则程序自动计算。其中duration的优先级是属性里面durationMapField对应的值优先级最高。
});

continue(id)

继续飞行,可指定轨迹id,若不指定,则对所有轨迹起作用
Name Type Description
id String | Number 轨迹id

destroy()

销毁图层对象
Inherited From:

getData()

获取图层数据
Inherited From:

getDataById(id)Object|Array

根据id获取对应的数据
Name Type Description
id String | Number 轨迹id
Returns:
线要素或者点要素数组

getDataSource()

获取数据源
Inherited From:

getSpeed(id)

获得指定轨迹的速度。
Name Type Description
id String | Number 轨迹线id(唯一标识)。
Returns:
speed 指定轨迹线的速度。

hide(id)

隐藏轨迹,可以指定轨迹id,若不指定,则对所有轨迹起作用
Name Type Description
id String | Number 轨迹id

pause(id)

暂停飞行,可指定轨迹id,若不指定,则对所有轨迹起作用
Name Type Description
id String | Number 轨迹id

pickFeatures(pickedFeatures, windowPosition, geographicPosition, eventType)Object

拾取图层中的要素
Name Type Description
pickedFeatures Array 场景中被拾取的对象集合,需要在图层自己内部判断识别出属于自己的,并挂接上图层的属性信息
windowPosition Cartesian2 画布的二维坐标
geographicPosition Object 地理位置,{ lng: lng, lat: lat, height: height }
eventType ScreenSpaceEventType 事件类型
Returns:
返回固定形态的结构数据
Inherited From:
Example:
//返回结构参考样例
{
			houseCode: fwCode,
			floorCode: floor,
			eventType: ScreenSpaceEventType.LEFT_CLICK,
			originalLayer: geoSingleBuildingLayer
			param:{
				info: pickedFeature,
				pickedInfos: pickedFeatureList
			}
		}

play(id, startIndex, endIndex)

开始飞行,可以指定轨迹的id,可以指定飞行的起止节点。若不指定id,则所有轨迹开始飞行;若不指定起止点,则默认从头飞到尾。
Name Type Description
id String | Number 轨迹id
startIndex Number 指定飞行的起始节点
endIndex Number 指定飞行的终止节点
Example:
geoLineTripEffectLayer.play(0, 2, 5);

remove()

清空图层中图元
Inherited From:

removeDataSource()

移除数据源
Inherited From:

render()

渲染
Inherited From:

setData(data)

设置图层数据
Name Type Description
data Array geojson线要素数组 或 geojson点要素数组的数组,每个点要素的数组代表一条轨迹
Examples:
// 线要素数组,实现轨迹的概略显示
let data = [
     {
         "type": "Feature",
         "geometry": {
             "type": "LineString",
             "coordinates": [
                 [114.20089, 30.77664, 15], [114.20089, 30.77664, 289.56], [114.19276, 30.76836, 480.06]
             ]
         },
         "properties": {
             OID: 1,  //必填
             color: "rgb(0, 255, 255)",  //可缺省
             duration: 5545, //可缺省
             startTime: 1593950758000  //可缺省
         }
     },
     {
         "type": "Feature",
         "geometry": {
             "type": "LineString",
             "coordinates": [
                 [114.21236, 30.78822, 22.86], [114.21451, 30.79028, 243.84], [114.21451, 30.79028, 281.94]
             ]
         },
         "properties": {
             OID: 2,
             color: "rgb(0, 255, 0)",
             duration: 3899,
             startTime: 1603866190000
         }
     },
     ...
];
// 点要素的数组的数组,实现轨迹的精确控制
let data = [
     [
         {
             "type": "Feature",
             "geometry": {
                 "type": "Point",
                 "coordinates": [116.59553, 40.0846, 45.72]
             },
             "properties": {
                 "OID": 1,  //必填
                 "updateTime": 1606098257000  //若该属性缺省,则本质上与线要素数组类型的数据等同
             }
         },
         {
             "type": "Feature",
             "geometry": {
                 "type": "Point",
                 "coordinates": [116.59479, 40.08902, 213.36]
             },
             "properties": {
                 "OID": 1,
                 "updateTime": 1606098272000,
             }
         },
         ...
     ],
     [
         {
             "type": "Feature",
             "geometry": {
                 "type": "Point",
                 "coordinates": [114.21618, 30.79143, 160.02]
             },
             "properties": {
                 "OID": 2,
                 "updateTime": 1603786626000
             }
         },
         {
             "type": "Feature",
             "geometry": {
                 "type": "Point",
                 "coordinates": [114.21618, 30.79143, 259.08]
             },
             "properties": {
                 "OID": 2,
                 "updateTime": 1603786636000
             }
         },
         ...
     ],
     ...
];

setDataSource(dataSource)

设置数据源
Name Type Description
dataSource GeoDataSource
Inherited From:

setSpeed(id, speed)

设置轨迹线的速度。如果指定了id,则对指定id的轨迹线设置速度;如果不指定id,则对所有轨迹线设置速度。
Name Type Description
id String | Number 轨迹线id(唯一标识)。
speed Number 轨迹对应的速度值,单位(m/s)。
Examples:
geoLineTripEffectLayer.setSpeed(0, 300);  //对id为0的轨迹线设置速度,设置为300m/s。
geoLineTripEffectLayer.setSpeed(null, 300);  //对所有轨迹线设置速度,设置为300m/s。

show(id)

显示轨迹,可以指定轨迹id,若不指定,则对所有轨迹起作用
Name Type Description
id String | Number 轨迹id

stop(id)

停止飞行,可指定轨迹id,若不指定,则对所有轨迹起作用
Name Type Description
id String | Number 轨迹id