• 初遇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;
  • 相关阅读:
    android 监听ListView中的 item 和button
    android 获取当前系统及应用信息(二)
    MotionEvent中getX()和getRawX()的区别
    HITS 算法(Hypertext Induced Topic Selection)
    放之四海皆适用的设计原则(二)
    源自神话的写作要义之英雄之旅
    这就是搜索引擎:核心技术详解
    源自神话的写作要义之英雄
    使用Spinner和setDropDownViewResource
    友好界面menu
  • 原文地址:https://www.cnblogs.com/haibalai/p/15837878.html
Copyright © 2020-2023  润新知