初遇Citymaker (十三)
视角巡航
- 调用
-
let p1 = cw5.geometryCreator.createPoint(150139, 37917, 64);
-
let p2 = cw5.geometryCreator.createPoint(150180, 37854, 64);
-
let poi1 = cw5.geometryCreator.createPOI(150258, 37887, 64);
-
switch (type) {
-
case "load":
-
cw5.cameraTourUtils.loadPoints([p1,p2,poi1])
-
break;
-
case "flyByLine":
-
cw5.cameraTourUtils.flyByLine()
-
break;
-
case "play":
-
cw5.cameraTourUtils.play();
-
break;
-
case "pause":
-
cw5.cameraTourUtils.pause();
-
break;
-
case "stop":
-
cw5.cameraTourUtils.stop();
-
break;
-
}
- cameraTourUtils工具类
```javascript
import { cw5 } from "../index.js";
export const cameraTourUtils = {};
let __cameraTour = null;
let flyByLine={};
flyByLine.v = {};
/**
*初始化tour
*/
cameraTourUtils.initTour=function() {
flyByLine.clearLine();
if(__cameraTour==null){
__cameraTour = cw5.__g.objectManager.createCameraTour(cw5.rootId);
}
__cameraTour.clearWaypoints()
}
/**
- 加载XML
*/
cameraTourUtils.loadXML = function(xml) {
cameraTourUtils.initTour();
__cameraTour.fromXml(xml);
};
/**
- 加载路径节点数组 points
*/
cameraTourUtils.loadPoints = function(points) {
cameraTourUtils.initTour();
let angle = cw5.__g.new_EulerAngle;
let tilt = -20;
let heading = 0;
let duration=5;
angle.set(heading, tilt, 0);
if(points!=null&&points.length>0){
for(let i=0;i<points.length;i++){
__cameraTour.addWaypoint2(points[i].object,angle, duration,1);
}
}
};
/**
-
通过鼠标点选路径飞行
*/
cameraTourUtils.flyByLine=function(){
flyByLine.v.equidistantArry = [];
let __g = cw5.__g;
// rLine = flyByLine.v.rLine;
// let geoLine = flyByLine.v.geoLine;
cameraTourUtils.initTour();
__g.objectEditor.finishEdit(); //取消编辑状态
__g.interactMode = 4; //交互模式 4 几何数据编辑模式
let geoLine = __g.geometryFactory.createGeometry(cw5.innerConfig.gviGeometryType.gviGeometryPolyline, cw5.innerConfig.gviVertexAttribute.gviVertexAttributeZ);
let curveSymbol = __g.new_CurveSymbol;
curveSymbol.width = -3;
curveSymbol.color = 0xff0000ff;
let rLine = __g.objectManager.createRenderPolyline(geoLine, curveSymbol, "");
rLine.glow(5);
let result = __g.objectEditor.startEditRenderGeometry(rLine, cw5.innerConfig.gviGeoEditType.gviGeoEditCreator);
if(cw5.version==7){
__g.onobjectediting = flyByLine.fnonobjectediting;
__g.onobjecteditfinish = flyByLine.fnonobjecteditfinish;
}
else if(cw5.version==8){
cw5.callback["onObjectEditing"] = flyByLine.fnonobjectediting;
cw5.callback["onObjectEditFinish"] = flyByLine.fnonobjecteditfinish;
cw5.__g.callback=cw5.callback;
}flyByLine.v.rLine = rLine;
}
/**
- 开始漫游
*/
cameraTourUtils.play = function () {
if(__cameraTour){
__cameraTour.play();
}
else{
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律