cesium实现轨迹超出电子围栏报警
时间: 2023-08-02 20:05:15 浏览: 147
Cesium可以通过监听轨迹的位置变化,判断轨迹是否超出电子围栏的范围,并触发相应的报警。下面是一个简单的Cesium代码实现轨迹超出电子围栏报警的示例:
```javascript
// 创建Cesium Viewer对象
var viewer = new Cesium.Viewer('cesiumContainer');
// 创建电子围栏对象
var polygon = viewer.entities.add({
polygon : {
hierarchy : Cesium.Cartesian3.fromDegreesArray([
-72.0, 40.0,
-70.0, 35.0,
-75.0, 30.0,
-80.0, 25.0,
-72.0, 40.0
]),
material : Cesium.Color.RED.withAlpha(0.5),
height : 0
}
});
// 创建轨迹对象
var entity = viewer.entities.add({
position: Cesium.Cartesian3.fromDegrees(-75.59777, 40.03883),
polyline: {
positions: Cesium.Cartesian3.fromDegreesArray([
-75.59777, 40.03883,
-80.23709, 25.79330,
-64.83778, 32.36404,
-72.71068, 41.39510
]),
width: 2,
material: Cesium.Color.RED
}
});
// 监听轨迹位置变化
viewer.clock.onTick.addEventListener(function(clock) {
var position = entity.position.getValue(clock.currentTime);
if (Cesium.Entity.isContainedWithin(polygon, position)) {
console.log('轨迹未超出电子围栏');
} else {
console.warn('轨迹已超出电子围栏');
// 触发报警
// ...
}
});
// 设置视角
viewer.zoomTo(viewer.entities);
```
以上代码创建了一个电子围栏对象和一个轨迹对象。通过监听轨迹位置变化,判断轨迹是否超出电子围栏的范围。如果超出,则触发相应的报警。