初遇Citymaker (十五)

场景渲染控制器

  • 调用
  • switch (type) {
  • case "pause":
  • cw5.sceneLayerCtrl.stopRendering();
  • break;
  • case "resume":
  • cw5.sceneLayerCtrl.resumeRendering();
  • break;
  • case "stop":
  • cw5.sceneLayerCtrl.stopRenderingTotal();
  • break;
  • case "reset":
  • cw5.sceneLayerCtrl.reset();
  • break;
  • case "init":
  • cw5.init();
  • cw5.loadMap();
  • break;
  • }
  • import { cw5 } from "../index.js";
  • import { map3dLog } from "../log/log";
  • export const sceneLayerInnerUtils={};
  •  
  • /**
  • * 功能:获取要素类
  • * @param mapInfo 三维地图的某一个图层的信息
  • * @returns {*} 返回要素类
  • */
  • sceneLayerInnerUtils.getFeatureClass=function(mapInfo){
  • let ds = null, ci = null, fc = null, fl = null;
  • //参数检查
  • for (let item in mapInfo) {
  • let key = item.toString();
  • if (mapInfo[key] === "") {
  • // console.log(key+" is empty!");
  • }
  • }
  • ci = cw5.__g.new_ConnectionInfo;
  • ci.connectionType = cw5.GetEnumValue1(cw5.innerConfig.gviConnectionType, mapInfo.ConnectionType);
  • ci.database = mapInfo.service;
  • ci.server = mapInfo.host;
  • ci.port = mapInfo.port;
  • if (mapInfo.password !== "") {
  • ci.password = mapInfo.password;
  • }
  •  
  • ds = cw5.__g.dataSourceFactory.openDataSource(ci);
  • let fds = ds.openFeatureDataset(mapInfo.dataSet);
  • let fcNames;
  • if(cw5.version==7){
  • fcNames = fds.getNamesByType(cw5.innerConfig.gviDataSetType.gviDataSetFeatureClassTable);
  • }
  • else if(cw5.version==8){
  • fcNames = fds.getNamesByType(cw5.innerConfig.gviDataSetType.gviDataSetFeatureClassTable).toArray();
  • }
  • if (fcNames && fcNames.indexOf(mapInfo.featureClassName) > -1) {
  • fc = fds.openFeatureClass(mapInfo.featureClassName);
  • }else{
  • map3dLog.error("fcNames is Error!")
  • }
  •  
  • return fc;
  • }
  •  
  • /**
  • * 加载栅格图层,可以支持WMS、MapServer
  • * @param mapInfo
  • * @returns {*}
  • */
  • sceneLayerInnerUtils.getRasterLayer=function(mapInfo) {
  • let fl = null;
  • let __g = cw5.__g;
  • let url = mapInfo.server;
  • let connectionType = cw5.GetEnumValue1(cw5.innerConfig.gviRasterConnectionType, mapInfo.ConnectionType);
  • let source = __g.rasterSourceFactory.openRasterSource(url, connectionType);
  • if (source) {
  • let names = source.getRasterNames();
  • let raster = source.openRaster(names[0]);
  • fl = __g.objectManager.createImageryLayer(raster.connStr, "");
  • }
  • return fl;
  • }
  •  
  •  
  • /**
  • * 获取要素图层
  • * @param fc 要素类
  • * @param mapInfo 某一个图层的地图信息
  • * @returns {*} 返回某个要素图层
  • */
  • sceneLayerInnerUtils.getFeatureLayer = function (fc, mapInfo) {
  • let __g =cw5.__g;
  • let fl = null;
  • let textRender = null;
  • let geoRender = null;
  • let geoName = mapInfo.geoName;
  • if (fc === null) {
  • throw new Error("Feature class is null!");
  • }
  • fl = __g.objectManager.createFeatureLayer(fc, geoName, textRender, geoRender, "");
  • if (fl) {
  • fl.maxVisibleDistance = mapInfo.maxVisibleDistance;
  • fl.minVisibleDistance = mapInfo.minVisibleDistance;
  • fl.minVisiblePixels = mapInfo.minVisiblePixels;
  • }
  • if (!mapInfo.visible) {
  • __g.projectTree.setVisibility(fl.guid, mapInfo.visible);
  • }
  •  
  • return fl;
  • };
  •  
  •  
  •  
  • /**
  • * 功能:加载地形
  • */
  • sceneLayerInnerUtils.loadTerrain = function (mapInfo) {
  • let __g = cw5.__g;
  • let terrainUrl = mapInfo.service + ':' + mapInfo.dataSet + '@' + mapInfo.host + ':' + mapInfo.port;
  •  
  • if (__g.terrain.registerTerrain(terrainUrl, mapInfo.password)) {
  • __g.terrain.demAvailable = mapInfo.demAvailable;
  • __g.terrain.opacity = mapInfo.opacity;
  • cw5.isTerrainLoad = true;
  •  
  • if (mapInfo.visible) {
  • __g.terrain.visibleMask = cw5.innerConfig.gviViewportMask.gviViewAllNormalView;
  • } else {
  • __g.terrain.visibleMask = cw5.innerConfig.gviViewportMask.gviViewNone;
  • }
  • }
  • };
  •  
  • /**
  • * 功能:加载瓦片服务
  • * */
  • sceneLayerInnerUtils.loadTileLayer = function (mapInfo) {
  • let __g = cw5.__g;
  • let terrainUrl = mapInfo.service + '@' + mapInfo.host + ':' + mapInfo.port;
  • let layer = __g.objectManager.create3DTileLayer(terrainUrl, "", "");
  • if (mapInfo.visible) {
  • layer.visibleMask = cw5.innerConfig.gviViewportMask.gviViewAllNormalView;
  • } else {
  • layer.visibleMask = cw5.innerConfig.gviViewportMask.gviViewNone;
  • }
  • return layer;
  • };
  • sceneLayerCtrl
    ```javascript

import { sceneLayerInnerUtils } from "./sceneLayerInnerUtils";
import { cw5 } from "../index.js";
export const sceneLayerCtrl= {};

const sceneLayerContainer={}

/**

  • 加载地图配置信息 场景控制器核心
  • mapInfo 地图配置信息 来自配置文件或自定义
  • */
    sceneLayerCtrl.loadMapInfo = function(mapInfo) {
    let fc = null, fl = null;
    let type = mapInfo.type;
    try{
    switch (type) {
    case "raster":
    fl = sceneLayerInnerUtils.getRasterLayer(mapInfo);
    mapInfo.fl=fl;
posted @ 2022-01-23 23:39  haibalai  阅读(31)  评论(0编辑  收藏  举报