初遇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{
posted @ 2022-01-23 23:38  haibalai  阅读(24)  评论(0编辑  收藏  举报