便利的網(wǎng)站建設(shè)網(wǎng)站是如何建立的
SuperMap GIS基礎(chǔ)產(chǎn)品三維GIS FAQ集錦(2)
【W(wǎng)ebGL】桌面對三維緩存設(shè)置了最大最小可見高度,在iServer發(fā)布三維服務(wù)并進(jìn)行預(yù)覽是可以看到該效果的,但在前端代碼打開該服務(wù),最大最小可見高度效果丟失,請問怎么解決?
【問題原因】最大最小可見高度是圖層屬性,在前端加載需要代碼設(shè)置。
【解決辦法】前端代碼設(shè)置如下:
var S3MTilesLayer=scene.layers.find('圖層名');
S3MTilesLayer.maxVisibleAltitude=最大可見高度值;
S3MTilesLayer.minVisibleAltitude=最小可見高度值;
【W(wǎng)ebGL】三維線放樣生成的模型數(shù)據(jù)集,生成三維緩存后發(fā)布三維服務(wù),然后在前端顯示。在一定高度下,發(fā)現(xiàn)顯示為虛線。請問怎么讓它在一定高度下顯示為實(shí)線?
【問題原因】該問題是由相機(jī)視角過高導(dǎo)致的
【解決辦法】可以設(shè)置反走樣進(jìn)行改善。反走樣代碼如下:
var viewer = new Cesium.Viewer('cesiumContainer', {orderIndependentTranslucency: false,//反走樣contextOptions: {msaaLevel: 8, //硬件反走樣,1-8,默認(rèn)值為1requestWebgl2: true},});viewer.scene.fxaa =false;viewer.scene.hdrEnabled = false;
【W(wǎng)ebGL】【11.0.1】三維標(biāo)繪里加載gltf模型,本身自帶動畫的模型不運(yùn)動靜止了,請問是否支持gltf的模型動畫讓它保留自身的動畫效果?
【解決辦法】WebGL目前是支持在三維標(biāo)繪里加載gltf的模型動畫,且讓它保留自身的動畫效果的。請使用最新11i版本的WebGL,且引用js文件里如果有,需要刪除該引用。
【W(wǎng)ebGL】在三維場景里對模型材質(zhì)修改的時(shí)候,材質(zhì)賦予了白色,但是【保存到模型】操作后材質(zhì)還是灰色,有解決方法嗎?
【問題原因】受太陽光照的影響
【解決辦法】有兩種辦法:
1.在【場景】-【瀏覽】-【可見】,關(guān)閉太陽特效;
2.在【場景】-【瀏覽】-【軌跡】,左右滑動設(shè)置太陽運(yùn)動軌跡。
【W(wǎng)ebGL】如何判斷S3MTilesLayer的屬性文件是否已經(jīng)下載完成?
【解決辦法】 可監(jiān)聽S3MTilesLayer的attributeDownloaded事件,示例代碼如下:
layer.attributeDownloaded.addEventListener(function (){ cosole.log("屬性已下載完成") })
【W(wǎng)ebGL】只需下載部分屬性字段,S3MTilesLayer如何設(shè)置呢?
【解決辦法】 不需要開啟indexedDB的isAttributesSave,設(shè)置queryFiledNames即可,示例如下:
layer.queryFiledNames=['SmID','Floor']
【W(wǎng)ebGL】傾斜攝影疊加二維面后如何在模型上標(biāo)注名稱?
【解決辦法】如果二維面屬性中沒有中心點(diǎn)坐標(biāo),可以通過桌面打開數(shù)據(jù)屬性表,計(jì)算幾何得到面數(shù)據(jù)中心坐標(biāo)。然后實(shí)例化entity添加文字標(biāo)注,如:
let text = viewer.entities.add({name: 'feature1',position: Cesium.Cartesian3.fromDegrees(pt.x,pt.y,50),label: { //文字標(biāo)簽text: '測試點(diǎn)',//名稱字段// 字體樣式,以CSS語法指定字體font: '14pt Source Han Sans CN',// 字體顏色fillColor: Cesium.Color.BLACK,// 是否顯示show: true}});
【W(wǎng)ebGL】在iClient3D for Cesium中如何修改系統(tǒng)時(shí)間?
【解決辦法】
viewer.clock.currentTime = Cesium.JulianDate.addHours(Cesium.JulianDate.now(new Date()), 8, new Cesium.JulianDate());
【W(wǎng)ebGL】在iClient3D for Cesium中如何刪除所有標(biāo)繪對象?
【解決辦法】PlottingLayer.removeAll()
【W(wǎng)ebGL】在iClient3D for Cesium中如何監(jiān)聽當(dāng)前視角的heading、pitch、roll
【解決辦法】
viewer.scene.camera.moveEnd.addEventListener(function(){console.log(viewer.camera._positionWC,"position")console.log(viewer.camera.pitch,"pitch",viewer.camera.roll,'roll',viewer.camera.heading,'head');
});
【W(wǎng)ebGL】在iClient3D for Cesium中如何使用本地圖片替換地球影像?
【解決方法】 要在iClient3D for Cesium 中使用本地圖片替換地球影像,可以按照以下步驟操作:
1.準(zhǔn)備一張地球表面的圖片,比如說一張衛(wèi)星拍攝的高清圖片。
2.將圖片轉(zhuǎn)換成紋理格式(如 JPEG、PNG 等),并保存到本地。
3.在 Cesium 中創(chuàng)建一個(gè)新的影像圖層(ImageryLayer),并設(shè)置其使用本地圖片作為紋理。
var imageryProvider = new Cesium.SingleTileImageryProvider({
url : 'path/to/local/image.jpg',
rectangle : Cesium.Rectangle.fromDegrees(-180.0, -90.0, 180.0, 90.0)
});
viewer.imageryLayers.addImageryProvider(imageryProvider);
【W(wǎng)ebGL】在iClient3D for Cesium 中如何繪制一條虛線?
【解決方法】
在iClient3D for Cesium 中繪制一條虛線可以使用 Cesium 中的 PolylineDashMaterial 來實(shí)現(xiàn)。PolylineDashMaterial 可以創(chuàng)建一個(gè)由虛線組成的材質(zhì),然后將其應(yīng)用到 Polyline 上即可。以下是使用 PolylineDashMaterial 繪制虛線的示例代碼:
var positions = [
Cesium.Cartesian3.fromDegrees(-75.59777, 40.03883),
Cesium.Cartesian3.fromDegrees(-75.58777, 40.03883),
Cesium.Cartesian3.fromDegrees(-75.57777, 40.03883),
Cesium.Cartesian3.fromDegrees(-75.56777, 40.03883)
];var polyline = viewer.entities.add({
name : 'Polyline',
polyline : {
positions : positions,
width : 3,
material : new Cesium.PolylineDashMaterialProperty({
color : Cesium.Color.RED
})
}
});viewer.zoomTo(viewer.entities);
【W(wǎng)ebGL】在iClient3D for Cesium 中飛行到某一個(gè)位置如何修改飛行速度?
【解決方法】 在iClient3D for Cesium 中,可以通過設(shè)置duration的時(shí)長來調(diào)整飛行速度。
viewer.scene.camera.flyTo({destination: Cesium.Cartesian3.fromDegrees(lon, lat, height),duration: 5, // 飛行時(shí)間為5秒maximumHeight: 10000 // 最大飛行高度為10000米
});
通過增加duration的數(shù)值來延長飛行的時(shí)間。
【W(wǎng)ebGL】在iClient3D for Cesium 中飛行過程中如何控制飛行的角度?
【解決方法】 在iClient3D for Cesium 中的camera.flyTo函數(shù)可以使用orientation方法來實(shí)現(xiàn)控制飛行角度, orientation一個(gè)包含方向和傾斜角度的對象,可以將攝像機(jī)的視線朝向指定方向。例如:
viewer.camera.flyTo({destination: Cesium.Cartesian3.fromDegrees(-75.59777, 40.03883, 5000.0),orientation: {heading: Cesium.Math.toRadians(45.0),pitch: Cesium.Math.toRadians(-30.0),roll: 0.0},duration: 3.0
});
【W(wǎng)ebGL】在iClient3D for Cesium 中如何實(shí)現(xiàn)飛行到指定矩形范圍區(qū)域內(nèi)?
【解決方法】 在iClient3D for Cesium 中通過Cesium.Rectangle的方法可以指定一個(gè)矩形范圍并使用flyTo定位到這個(gè)范圍內(nèi) 例如:
viewer.camera.flyTo({
destination : Cesium.Rectangle.fromDegrees(115, 42, 116, 43)
});
【W(wǎng)ebGL】在iClient3D for Cesium的二維場景模式下,能夠進(jìn)行點(diǎn)線面的繪制嗎?
【問題原因】iClient3D for Cesium支持在二維模式下繪制點(diǎn)線面??蓞⒖脊倬W(wǎng)示例“繪制點(diǎn)線面”( 官網(wǎng)鏈接為http://support.supermap.com.cn:8090/webgl/examples/webgl/editor.html#drawHandler )
【解決方法】設(shè)置Cesium.SceneMode.SCENE2D為二維場景后,在2D模式繪制后對象貼地,需要給繪制的實(shí)體賦予高程height即可正常顯示。
【W(wǎng)ebGL】iClient3D for Cesium的SceneMode類中的COLUMBUS_VIEW和SCENE2D有什么區(qū)別么?
【問題原因】API文檔中( 3D WebGL API (http://support.supermap.com.cn:8090/webgl/web/apis/3dwebgl.html) )對 COLUMBUS_VIEW和SCENE2D 進(jìn)行了說明,這兩個(gè)場景是不同的,一個(gè)是2.5D場景一個(gè)是2D場景??蓞⒖脊倬W(wǎng)示例中二三維切換部分的示例:(http://support.supermap.com.cn:8090/webgl/examples/webgl/editor.html#sceneModeSwitching)。
【解決方法】兩者間的區(qū)別,最明顯的在于,按住鼠標(biāo)中鍵,2D不支持中間上下拖動,2.5D可以支持上下拖動 。
【W(wǎng)ebGL】iClient3D for Cesium地形數(shù)據(jù)上添加本地的KML文件,為什么看不見呢?
【問題原因】iClient3D for Cesium中,添加地形后KML圖層不顯示,是由于地形遮擋了KML圖層導(dǎo)致圖層不顯示。如果使用importFile方式加載KML文件,原生Cesium中是不支持貼地的,因此iClient3D for Cesium中也不支持。
【解決方法】以繪制entity的方式繪制KML,或者以Cesium.KmlDataSource.load方式加載KML,開啟KML貼地即可顯示KML圖層,并可設(shè)置參數(shù)clampToGround為true設(shè)置貼地。另外,建議開啟地形深度檢測viewer.scene.globe.depthTestAgainstTerrain = true; //默認(rèn)為false;開啟地形檢測后,會計(jì)算其他地理要素和地形之間的遮擋關(guān)系。未開啟時(shí),將會出現(xiàn),場景變化,地物位置顯示不正確的情況。
【W(wǎng)ebGL】調(diào)整影像圖層的順序,如何將某個(gè)圖層置于最上面
【解決辦法】ImageryLayerCollection接口下的raise可以移動影像圖層的順序,如果要置頂可以使用raiseToTop
【W(wǎng)ebGL】在iClient3D for Cesium中如何設(shè)置影像圖層無值透明
【解決方案】
imagerLayer.transparentBackColor= Cesium.Color.BLACK;
imagerLayer.transparentBackColorTolerance = 0.1 // 不能設(shè)置0,設(shè)0無效
【W(wǎng)ebGL】iClient3D for Cesium中標(biāo)簽專題圖中標(biāo)簽會被地面遮擋,應(yīng)該怎么解決?
【解決方案】關(guān)閉深度檢測,代碼如下:
viewer.scene.globe.depthTestAgainstTerrain = false;
【W(wǎng)ebGL】加載mvt矢量瓦片,數(shù)據(jù)能加載,但是報(bào)大量500請求錯(cuò)誤,請問是什么原因?
【問題原因】WebGL請求mvt矢量瓦片時(shí),會往下多請求一級,導(dǎo)致500錯(cuò)誤
【解決辦法】添加mvt時(shí),設(shè)置最大最小請求層級,最大請求層級設(shè)置為地圖最大層級-1,如:
mvtMap = scene.addVectorTilesMap({url: url,canvasWidth: 512,name: 'testMVT',viewer: viewer,minimumLevel: 10,maximumLevel: 16
});
【W(wǎng)ebGL】模型圖層在相機(jī)外時(shí)會釋放緩存,瀏覽時(shí)會重新加載,設(shè)置圖層不釋放緩存,為什么不起效果?
【問題原因】使用該參數(shù),需要先設(shè)置瀏覽器最大可用內(nèi)存
【解決辦法】1、獲取電腦最大可用內(nèi)存空間:
Cesium.MemoryManager.getMaxMemory()
2、設(shè)置瀏覽器最大可用空間:
Cesium.MemoryManager.setCacheSize(1024)
這個(gè)值不能超過電腦最大可用內(nèi)存空間
3、設(shè)置圖層不釋放緩存:
layer.clearMemoryImmediately = false
【W(wǎng)ebGL】如何移除標(biāo)繪圖層,API中沒有找到對應(yīng)接口?
【解決辦法】
1、標(biāo)繪圖層由標(biāo)繪圖層集合plotLayers管理;API中沒有該類,可以將scene設(shè)置為window對象,再運(yùn)行頁面后在控制臺打印scene.plotLayers,即可看到該類和他包含的方法,詳情如下貼圖:
2、移除標(biāo)繪圖層可使用scene.plotLayers.remove()和scene.plotLayers.removeAll()
【Revit插件】使用Revit插件導(dǎo)出模型,在桌面打開發(fā)現(xiàn)模型細(xì)節(jié)處不夠精細(xì),沒有輪廓感
【問題原因】新版Revit插件導(dǎo)出時(shí)簡化率為上次導(dǎo)出時(shí)設(shè)置的,簡化率過低會導(dǎo)致模型一些地方輪廓不清晰
【解決辦法】在導(dǎo)出模型的時(shí)候手動設(shè)置簡化率為合適的值
【Revit插件】Revit導(dǎo)出插件使用時(shí)報(bào)錯(cuò):Revit 遇到 System.TypelnitializationException: "SuperMap.Data.Workspace"的類型初始值設(shè)定項(xiàng)引發(fā)異常。
【問題原因】從報(bào)錯(cuò)可以看到是工作空間相關(guān)的報(bào)錯(cuò),且是初始值設(shè)定的時(shí)候報(bào)錯(cuò),可以確認(rèn)應(yīng)該是許可的問題
【解決方法】確定插件使用時(shí),指定的Bin包的版本,是11的還是10的。然后申請對應(yīng)的試用許可,放到C:\Program Files\Common Files\SuperMap\License下即可(申請時(shí)一定要勾選組件)。
【W(wǎng)ebGL】啟動Cesium項(xiàng)目后,電腦CPU占用率過高,溫度過高怎么優(yōu)化呢
【問題原因】CPU占用高可能是因?yàn)檎{(diào)用的是核顯渲染
【解決辦法】將運(yùn)行項(xiàng)目的瀏覽器設(shè)置調(diào)用獨(dú)顯。設(shè)置可以參考博客https://blog.csdn.net/supermapsupport/article/details/128440798 中的設(shè)置。其次在代碼層面可以參考博客https://blog.csdn.net/supermapsupport/article/details/128330725 中的請求與內(nèi)存優(yōu)化
【iDesktop 11.0.1】ENU坐標(biāo)系的傾斜攝影數(shù)據(jù),生成配置文件后在場景中看不到怎么解決
【問題原因】生成之后在場景中能夠定位,但是預(yù)覽不到,是因?yàn)樽x取到的高程有問題,數(shù)據(jù)在地下,被地球遮擋了
【解決辦法】根據(jù)源文件metadata中的高程信息手動修改生成配置文件時(shí)的高程
【W(wǎng)ebGL】在使用label時(shí),外邊框?qū)傩詏utlineWidth設(shè)置無效
【問題原因】:不論是瀏覽器的種類還是系統(tǒng)的種類,都對 outlineWidth 的設(shè)置有影響。 它只是映射到WebGL的內(nèi)置lineWidth。
【解決方法】:使用“實(shí)體線代替邊線”的方法,即用添加polyline的方式添加寬度大于1的線。具體可參考https://www.baidu.com/link?url=699KpvD3JccvbfOtO_zG8MYAQbdIj6bA6qL0IXhPeK58xPJaDWzX9F4uNHD4xNeixkxrfddnnthLL5oPATrF8K&wd=&eqid=a723d35e0003e48700000006624673f0
【W(wǎng)ebGL】【11.0.1】如何直接加載.dae、.x、.osgb格式的數(shù)據(jù)。
【解決辦法】直接加載.dae、.x、.osgb是11i版本開始新支持的特性,老版本不支持。 使用接口S3MInstanceCollection 參考:http://support.supermap.com.cn:8090/webgl/docs/Documentation/S3MInstanceCollection.htm
【W(wǎng)ebGL】osgb傾斜攝影生成配置文件后桌面加載正常,iSever發(fā)布三維服務(wù)WebGL看不到為什么?
【解決辦法】對傾斜攝影生成配置文件只是為了快速預(yù)覽數(shù)據(jù)是否全面,如果需要前端使用iSever發(fā)布三維服務(wù),還需要使用生成的配置文件進(jìn)行傾斜攝影入庫,用入庫后的傾斜攝影發(fā)布三維服務(wù)。
【W(wǎng)ebGL】投影坐標(biāo)系的數(shù)據(jù)在桌面端球面場景加載正常,切緩存發(fā)布三維服務(wù)后,WebGL加載無法看到數(shù)據(jù)也無法定位怎么辦?
【問題原因】WebGL球面場景支持的坐標(biāo)系只有地理坐標(biāo)系和墨卡托投影坐標(biāo)系(3857),普通的分度帶坐標(biāo)系球面場景模式是不支持的,只能在平面場景加載。
【解決辦法】在iDesktop將數(shù)據(jù)集投影轉(zhuǎn)換成地理坐標(biāo)系或墨卡托投影坐標(biāo)系后,再切三維緩存。
【W(wǎng)ebGL】使用WebGL可以進(jìn)行爆管分析嗎?
【解決辦法】可以的,爆管分析是業(yè)務(wù)功能所以沒有直接的接口,但是可以使用iSever發(fā)布網(wǎng)絡(luò)分析服務(wù),根據(jù)業(yè)務(wù)情況進(jìn)行上下游追蹤分析,然后使用WebGL的噴泉粒子,綜合實(shí)現(xiàn)爆管分析效果。
【W(wǎng)ebGL】在iClient3D for Cesium中地形開挖的貼圖,如何設(shè)置不重復(fù)貼圖(拉伸到邊緣貼圖)?
【解決方案】關(guān)鍵接口是textureWrap,具體代碼如下:
viewer.scene.globe.addExcavationRegion({name : 'ggg' ,position : positions,height : dep,textureWrap :Cesium.TextureWrap.CLAMP_TO_EDGE // 不重復(fù)貼圖(拉伸到邊緣貼圖)設(shè)置transparent : false
});
【W(wǎng)ebGL】原生Cesium使用超圖插件庫,加載超圖地形服務(wù)沒有效果怎么辦?
【解決方法】插件庫SuperMap3D.js為GitHub(https://github.com/SuperMap)上開源工具,使用原生cesium版本不要太高,建議不超過1.9,如有問題建議直接GitHub中提issues反饋。
【W(wǎng)ebGL】如何獲得陰影分析的所有結(jié)果點(diǎn)和陰影率?
【解決辦法】在陰影分析查詢結(jié)果添加事件中添加監(jiān)聽,將每一個(gè)結(jié)果點(diǎn)輸出即可。
shadowQuery.queryPointsEvent.addEventListener(function(e) { console.log(e) })
【W(wǎng)ebGL】建筑模型生成三維緩存后發(fā)三維服務(wù),顏色和桌面顏色不一樣怎么辦?
【解決辦法】生成模型緩存時(shí),紋理壓縮格式選擇webp的話會出現(xiàn)顏色通道翻轉(zhuǎn)的問題, WebGL加載數(shù)據(jù)設(shè)置圖層的rgb翻轉(zhuǎn)S3MTilesLaye.RGBTOBGR為true。(layer可以通過scene.layers.find獲取)
【W(wǎng)ebGL】S3M 2.0標(biāo)準(zhǔn)看起來沒有公開,我沒有搜索到任何有關(guān)的信息,官方是否有公開標(biāo)準(zhǔn)和解析方法的計(jì)劃?
【解決辦法】S3M2.0是SuperMap GIS內(nèi)部的標(biāo)準(zhǔn)版本,暫時(shí)不對外公開。
【W(wǎng)ebGL】官方針對 https://github.com/SuperMap/s3m-spec 倉庫是否仍然維護(hù),因?yàn)閏esium.js新版本去掉when.js依賴,當(dāng)前倉庫狀態(tài)無法適配最新版本的Cesium.js
【解決辦法】官方一直在維護(hù)該倉庫,相關(guān)工具和解析源碼正在升級優(yōu)化中,未來將會陸續(xù)上傳。
【W(wǎng)ebGL】在iDesktop里對緩存圖層設(shè)置了不可選,發(fā)布三維服務(wù)后在前端怎么不起作用呢?
【問題原因】桌面的場景屬性和緩存圖層屬性設(shè)置的參數(shù)不能作為前端展示的依據(jù),需要在前端用代碼設(shè)置具體參數(shù)。
【解決辦法】具體代碼如下:
var S3MTilesLayer =scene.layers.find('緩存圖層名');
S3MTilesLayer.selectEnabled=false;
【W(wǎng)ebGL】模型緩存的空間查詢,能用數(shù)據(jù)服務(wù)里面的三維面做查詢嗎?
【問題原因】空間查詢只能使用數(shù)據(jù)服務(wù)中的二維面數(shù)據(jù)。
【解決辦法】將三維面轉(zhuǎn)化成二維面以后,再發(fā)布二維服務(wù)到iserver即可??蓞⒖家韵虏┛?#xff1a;https://blog.csdn.net/supermapsupport/article/details/126398306
【W(wǎng)ebGL】一份BIM緩存,桌面加載不透明,發(fā)布服務(wù)后變?yōu)榘胪该?#xff0c;如何解決?
【問題原因】透明排序?qū)е?br /> 【解決辦法】關(guān)閉圖層透明排序,詳細(xì)代碼如下:
layer.orderIndependentTranslucency = false;
【W(wǎng)ebGL】如何去除影像黑邊?
【解決辦法】設(shè)置影像透明色為黑色,并設(shè)置透明容限,詳細(xì)代碼如下:
imgLayer.transparentBackColor = Cesium.Color.BLACK; imgLayer.transparentBackColorTolerance = 0.5
【W(wǎng)ebGL】地球表皮上有一層白蒙蒙的東西,如何去除?
【問題原因】這層白蒙蒙的東西是霧氣
【解決辦法】關(guān)閉霧氣,詳細(xì)代碼如下:
viewer.scene.fog.enable = false
【W(wǎng)ebGL】如何關(guān)閉地球周圍的大氣層?
【解決辦法】
viewer.scene.skyAtmosphere.show = false;
【W(wǎng)ebGL】如何在前端繪制島洞多邊形?
【解決辦法】在構(gòu)建面對象時(shí),除了需要在hierarchy傳入外面島的面節(jié)點(diǎn),還需要在holes傳洞的節(jié)點(diǎn)。具體的代碼見下面截圖
【W(wǎng)ebGL】在iClient3D for Cesium 中如何更新primitive中的屬性值?
【解決方法】 在iClient3D for Cesium 中,使用 primitive.getGeometryInstanceAttributes(‘id’) 可以獲取某個(gè) GeometryInstance 的屬性,當(dāng)然,它的返回值的屬性可以直接修改。例如:
var attributes = primitive.getGeometryInstanceAttributes('circle');
attributes.color = Cesium.ColorGeometryInstanceAttribute.toValue(Cesium.Color.fromRandom({alpha : 1.0}));
【W(wǎng)ebGL】在iClient3D for Cesium 中如何實(shí)現(xiàn)實(shí)體不可選中?
【解決方法】 在iClient3D for Cesium 中,可以使用
viewer.cesiumWidget.screenSpaceEventHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK)
以及
viewer.cesiumWidget.screenSpaceEventHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK);
移除實(shí)體點(diǎn)擊事件。
【W(wǎng)ebGL】在iClient3D for Cesium 中如何以球體為中心進(jìn)行縮放?
【問題原因】 iClient3D for Cesium 在對地球進(jìn)行縮放,默認(rèn)會根據(jù)鼠標(biāo)擺放的位置來判斷當(dāng)前縮放的中心點(diǎn)位置。
【解決方法】 在camera中存在放大縮小的方法 zoomIn(amount), 并不會改變球體的位置。只對球體進(jìn)行放大縮小??梢詤⒖枷路酱a。
viewer.screenSpaceEventHandler.setInputAction((movement) => {const height = viewer.scene.camera.positionCartographic.height;const Amount = Cesium.Math.sign(movement) * height / Math.log(height);if (!isNaN(Amount)) {viewer.scene.camera.zoomIn(Amount);}
}, Cesium.ScreenSpaceEventType.WHEEL);
【W(wǎng)ebGL】在iClient3D for Cesium 中如何直接加載shp文件?
【解決方法】
在iClient3D for Cesium 中并不直接支持加載shp文件,需要通過第三方庫進(jìn)行加載,可以在github中獲取第三方庫(https://github.com/MikesWei/CesiumVectorTile)
使用方法可參考下方博客
(https://mcaitaco.blog.csdn.net/article/details/127897229)
【W(wǎng)ebGL】在iClient3D for Cesium 中加載3dtiles如何獲取其所有屬性值?
【解決方法】
在iClient3D for Cesium 中,可以在3dtiles的加載事件中拿到其所有屬性值,具體方法可參考下方代碼
tileset.tileLoad.addEventListener(function(tile) {
let content = tile.content;
let featuresLength = content.featuresLength;
console.log("要素?cái)?shù)量為:");
console.log(featuresLength);
console.log("第一個(gè)要素為:");
let feature = content.getFeature(0);
console.log(feature);
})
【W(wǎng)ebGL】iClient3D for Cesium中如何顯示場景的幀率信息?
【解決辦法】通過設(shè)置以下代碼即可:
viewer.scene.debugShowFramesPerSecond = true
【W(wǎng)ebGL】iClient3D for Cesium中如何隱藏左下角的超圖Logo及點(diǎn)擊跳轉(zhuǎn)鏈接?
【解決辦法】通過設(shè)置以下代碼即可:
viewer._cesiumWidget._creditContainer.style.display = 'none'
【W(wǎng)ebGL】iClient3D for Cesium中如何控制右上角羅盤的顯隱?
【解決辦法】有兩種方式可以控制,參考以下代碼:
1、var viewer = new Cesium.Viewer('cesiumContainer',{navigation:false})
2、viewer.navigation.viewModel.showCompass = false
【W(wǎng)ebGL】iClient3D for Cesium中如何開啟并設(shè)置云層圖片?
【解決辦法】初始化一個(gè)CloudBox,初始化時(shí)設(shè)置好云層圖片。再在viewer.scene…cloudBox設(shè)置即可。也可以參考示例代碼:http://support.supermap.com.cn:8090/webgl/examples/webgl/editor.html#cloudAndSky,勾上【開啟云層】就能夠看到效果了
【W(wǎng)ebGL】將11i生成的緩存和10i生成的緩存放到統(tǒng)一場景下,發(fā)布三維服務(wù)后,使用iClient3D for Cesium加載為什么會出現(xiàn)偏移?
【問題原因】11i默認(rèn)生成橢球緩存,10i生成的是圓球緩存;在iDesktop中沒有偏移是由于iDesktop底層有投影轉(zhuǎn)換,但是前端沒有,因此出現(xiàn)的偏移。
【解決辦法】在11i生成緩存時(shí),取消勾選【橢球】復(fù)選框。
【W(wǎng)ebGL】如何將數(shù)據(jù)服務(wù)查詢到的多個(gè)數(shù)據(jù)高亮顯示?
【解決辦法】使用S3MTilesLayer.setObjsColor(ids, color)對指定的一組數(shù)據(jù)設(shè)置高亮顏色。
【W(wǎng)ebGL】iClient3D for Cesium中是否支持將多個(gè)地圖疊加到傾斜圖層上面?
【解決辦法】可以支持多個(gè)地圖圖層疊加到傾斜攝影上面,示例如下:
layer.coverImageryLayer = [imageryLayer1,imageryLayer2,imageryLayer3]
【W(wǎng)ebGL】iClient3D for Cesium中如何開啟標(biāo)簽避讓?
【解決辦法】設(shè)置
layer.isOverlapDisplayed = true
【W(wǎng)ebGL】iClient3D for Cesium中對s3m圖層做陰影分析沒有效果是為什么?
【解決辦法】需要設(shè)置圖層的陰影模式
layers.shadowType = 2;
【W(wǎng)ebGL】iClient3D for Cesium中如何顯示當(dāng)前場景的幀率信息?
【解決辦法】
viewer.scene.debugShowFramesPerSecond = true;
【iDesktop】對場景中的矢量數(shù)據(jù)配置風(fēng)格后切緩存,輸出窗口提示某些圖層生成緩存失敗,并且生成緩存路徑下并未有該圖層的緩存生成,這是什么原因呢
【問題原因】輸出窗口提示生成緩存失敗,是因?yàn)樵摂?shù)據(jù)集空間索引損壞了
【解決辦法】對生成失敗的圖層所對應(yīng)的數(shù)據(jù)集重新建立空間索引
【W(wǎng)ebGL】如何修改場景中水面特效的水面顏色
【解決辦法】可以通過S3MTileLayer的waterColor屬性進(jìn)行修改。參考代碼:
waterLayer.waterColor = Cesium.Color.RED;
【W(wǎng)ebgl】工作空間中多個(gè)場景發(fā)布三維服務(wù)怎么指定添加某個(gè)場景?
【問題原因】多個(gè)場景默認(rèn)加載第一個(gè)
【解決辦法】 open(url, sceneName, options),通過指定場景的名稱sceneName打開
【W(wǎng)ebGL】S3M傾斜模型轉(zhuǎn)換為3D Tiles出現(xiàn)偏移是什么原因?qū)е碌?#xff1f;
【問題原因】原生Cesium為橢球體,緩存時(shí)為圓球參數(shù),前端加載時(shí)需對球體進(jìn)行轉(zhuǎn)換。
【解決方法】前端iClient3D for Cesium中加載時(shí)需對球體進(jìn)行轉(zhuǎn)換:
var obj = [6378137.0, 6378137.0, 6356752.3142451793];
Cesium.Ellipsoid.WGS84 = Object.freeze(new Cesium.Ellipsoid(obj[0], obj[1], obj[2]));
此外,需要在原生Cesium加載S3MB數(shù)據(jù)的話,可以用開源的Cesium工具,地址 https://github.com/SuperMap/iClient3D-for-WebGL,iEarth插件能實(shí)現(xiàn)3DTiles與S3MB數(shù)據(jù)互轉(zhuǎn)。 SuperMap3D.js 工具,可以實(shí)現(xiàn)在原生Cesium直接加載超圖發(fā)布的服務(wù)。 開源工具問題可在github中提issue反饋。
【W(wǎng)ebGL】S3MTilesLayer圖層通過getAttributesById方法獲取本地對象屬性信息無效,返回結(jié)果為null,是什么原因,該怎么解決?
【解決辦法】s3m圖層必須設(shè)置
layer.indexedDBSetting.isOpen = true;
layer.indexedDBSetting.isAttributesSave = true;
getAttributesById的用法:
//獲取id為1198對象的所有本地屬性;
layer.getAttributesById(1198).then(function(data) {console.log(data);
});
【W(wǎng)ebGL】打開一個(gè)場景,綁定多個(gè)數(shù)據(jù)源和數(shù)據(jù)集進(jìn)行數(shù)據(jù)查詢,查詢的時(shí)候會很慢,有什么方式能優(yōu)化嗎
【解決辦法】如果直接將模型數(shù)據(jù)發(fā)布為數(shù)據(jù)服務(wù),查詢會自動將空間信息和屬性信息一起返回,這使得查詢速度緩慢。將需要查詢的模型數(shù)據(jù)集的屬性表單獨(dú)導(dǎo)出,然后發(fā)布為數(shù)據(jù)服務(wù),三維服務(wù)和數(shù)據(jù)服務(wù)分開發(fā)布,查詢的時(shí)候就直接查屬性表發(fā)布的數(shù)據(jù)服務(wù)即可。
【W(wǎng)ebGL】繪制 geojson 面,放大發(fā)現(xiàn)面被地形遮擋了,如何解決?
【解決辦法】Cesium.GeoJsonDataSource.load()方式加載geojson,設(shè)置clampToGround: true //是否貼地;獲取datasource的entity,設(shè)置entity.zIndex設(shè)置大一些。
【W(wǎng)ebGL】web端加載三維網(wǎng)絡(luò)數(shù)據(jù)集生成的管線,管線與管點(diǎn)鏈接處渲染為黑色,如何解決?
【問題原因】出現(xiàn)黑色紋理是由于管點(diǎn)模型數(shù)據(jù)本身沒有UV,但是引用了一個(gè)帶有紋理的PBR材質(zhì)導(dǎo)致的。
【解決辦法】管點(diǎn)圖層需要引用一個(gè)新的json文件,json文件中的參數(shù)"normalTextureIndex"設(shè)置為-1,如圖
【W(wǎng)ebGL】怎么獲取傾斜影像圖層名稱?
【解決方法】如果是在前端中獲取當(dāng)前選中的傾斜攝影圖層名稱, 可以使用 viewer.scene.layers.getSelectedLayer() 方法獲取選中對象的那一層s3m圖層
【W(wǎng)ebGL】三維場景中加入DEM地形,發(fā)現(xiàn)三維模型穿模了,如何解決?
【問題原因】管線數(shù)據(jù)是不能貼地貼對象的,所謂的貼地貼對象,是會隨著地形或者模型。發(fā)生數(shù)據(jù)的彎曲變形,而管線數(shù)據(jù)是筆直的,拐點(diǎn)處都必須有相應(yīng)的管點(diǎn)。通常的管線數(shù)據(jù)。都是“地下管線數(shù)據(jù)”,不會有該情況發(fā)生,畢竟管線裸露還是很少見的。
【解決方法】只能根據(jù)管線去修改地形,試用地形鑲嵌等功能。詳情可以查看幫助文檔中的“TIN地形操作”,裁剪-鑲嵌-挖洞等功能。
【W(wǎng)ebGL】在iClient3D for Cesium 中如何讓Camera指向鼠標(biāo)指向的方向?
【解決方法】 通過獲取鼠標(biāo)位置后,添加監(jiān)聽函數(shù)并以加camera的lookUp方法來實(shí)現(xiàn)代碼如下
if (flags.looking) {var width = canvas.clientWidth;var height = canvas.clientHeight;var x = (mousePosition.x - startMousePosition.x) / width;var y = -(mousePosition.y - startMousePosition.y) / height;var lookFactor = 0.05;camera.lookRight(x * lookFactor);camera.lookUp(y * lookFactor);
}
【W(wǎng)ebGL】在iClient3D for Cesium 中如何通過id來檢索實(shí)體?
【解決方法】 使用getByiId檢索實(shí)體。如果不存在具有提供的ID的實(shí)體,則返回undefined,實(shí)現(xiàn)代碼如下。
var entity = viewer.entities.getById('uniqueId');
【W(wǎng)ebGL】在iClient3D for Cesium 中如何避免標(biāo)簽與點(diǎn)重合?
【解決方法】
默認(rèn)情況下,標(biāo)簽水平和垂直居中。由于標(biāo)簽和點(diǎn)共享相同的位置,它們在屏幕上重疊。為避免這種情況,請指定標(biāo)簽源Verticalorigin.BOTTOM并將像素偏移量設(shè)置為(0,-9)。實(shí)現(xiàn)代碼如下
viewer.entities.add({position : Cesium.Cartesian3.fromDegrees(-75.166493, 39.9060534),billboard : {image : './Philadelphia_Phillies.png',width : 64,height : 64},label : {text : 'Citizens Bank Park',font : '14pt monospace',style: Cesium.LabelStyle.FILL_AND_OUTLINE,outlineWidth : 2,verticalOrigin : Cesium.VerticalOrigin.TOP,pixelOffset : new Cesium.Cartesian2(0, 32)}
});
【W(wǎng)ebGL】在iClient3D for Cesium 中如何跟隨實(shí)體?
【解決方法】 在iClient3D for Cesium 中可以通過trackedEntity 方法來跟隨實(shí)體運(yùn)動。 實(shí)現(xiàn)代碼如下
var entity = viewer.entities.add({position : Cesium.Cartesian3.fromDegrees(-123.0744619, 44.0503706),model : {uri : './GroundVehicle.glb'}
});
viewer.trackedEntity = entity;
【W(wǎng)ebGL】在iClient3D for Cesium 中如何輸出model類的節(jié)點(diǎn)與三角網(wǎng)信息?
【解決方法】Scene.pick 的返回值包括 Model 類的實(shí)例。同時(shí)可以返回gltf中的節(jié)點(diǎn)(node)id 和 三角網(wǎng)(mesh)id 信息。下面的代碼可以在控制臺輸出鼠標(biāo)所在位置對應(yīng)的gltf模型中的節(jié)點(diǎn)和三角網(wǎng)信息。
var handler = new Cesium.ScreenSpaceEventHandler(scene.canvas);
handler.setInputAction(
function (movement) {
var pick = scene.pick(movement.endPosition);
if (Cesium.defined(pick) && Cesium.defined(pick.node) && Cehack.mesh)) {
console.log('node: ' + pick.node.name + '. mesh: ' + pick.mesh.name);
}
},
Cesium.ScreenSpaceEventType.MOUSE_MOVE
);
【W(wǎng)ebGL】在iClient3D for Cesium 中如何創(chuàng)建webgl上下文?
【解決辦法】
// 獲取canvas元素
const canvas = document.getElementById('canvas');
// 實(shí)例化WebGLRenderingContext
const gl = canvas.getContext('webgl');
if (!gl) {throw new Error('Unable to create WebGL rendering context.');
}
【W(wǎng)ebGL】在iClient3D for Cesium 中如何修改當(dāng)前系統(tǒng)時(shí)間?
【解決辦法】
viewer.clock.currentTime = Cesium.JulianDate.addHours(Cesium.JulianDate.now(new Date()), 8, new Cesium.JulianDate())。
【W(wǎng)ebGL】在iClient3D for Cesium 中如何對影像進(jìn)行裁剪顯示?
【解決辦法】
viewer.scene.globe.addImageryClipRegions({position: positions,layers: [tmpLayer],name: "test"
})
【W(wǎng)ebGL】打開場景或添加圖層后,立刻使用S3MTilesLayer.getAttributesById()無法獲取到屬性。
【問題原因】
1.觸發(fā)獲取屬性方法時(shí),當(dāng)前數(shù)據(jù)還未添加進(jìn)場景中
2.可能使用加數(shù)據(jù)回調(diào)返回來的Layer,該Layer不支持進(jìn)行此查詢。
【解決辦法】
1.保完全加載后再觸發(fā)事件,可以考慮使用 S3MTilesLayer.allTilesLoaded事件來輔助,該事件內(nèi)的內(nèi)容是在緩存瓦片塊完全加載后才會觸發(fā)一次。
2.Layer的獲取使用scene.layers.find()把需要使用的圖層找出來,不要用scene.open()或者是scene.addS3MTilesLayerByScp()回調(diào)的Layer。
【W(wǎng)ebGL】使用billboard在地形上添加了一些圖標(biāo),在高空查看圖標(biāo)一半埋在地下,該如何解決?
【問題原因】圖標(biāo)是像素大小,大場景下容易被其它對象遮擋
【解決辦法】兩種方式:
1、關(guān)閉圖標(biāo)深度檢測:
disableDepthTestDistance: Number.POSITIVE_INFINITY
2、設(shè)置圖標(biāo)大小隨相機(jī)高度動態(tài)變化:
scaleByDistance: new Cesium.NearFarScalar(100, 1, 5000, 0.1)
【W(wǎng)ebGL】如何設(shè)置billboard圖片的定位錨點(diǎn)?
【解決辦法】
水平方向:
horizontalOrigin: Cesium.HorizontalOrigin.CENTER
豎直方向:
verticalOrigin: Cesium.VerticalOrigin.BOTTOM
【W(wǎng)ebGL】使用entity添加一條線對象并設(shè)置線寬,在大場景下線變寬了?
【問題原因】線寬是像素大小,任何高度下在屏幕中的像素大小保持不變;大場景下不是線變寬了,而是周圍的參照變小了
【解決辦法】使用走廊對象(corridor)代替線對象(polyline)
【W(wǎng)ebGL】如何添加小品模型,有幾種方式?
【解決辦法】兩種方式,
1、通過entity的model對象添加*.gltf格式模型,支持模型動畫
2、通過S3MInstanceCollection添加實(shí)例化模型對象,支持添加*.s3m和.s3mb格式模型
【W(wǎng)ebGL】想使用最新版本的cesium 我直接替換Cesium.js文件可以么,會有問題么,如果有問題的話,如何支持最新版本的Cesiumjs
【問題答案】不能直接替換Cesium.js文件,我們iClient使用的是1.67版本的Cesium,如果需要使用更高版本的Cesium,需要在GitHub上下載我們的插件使用,插件下載地址::https://gitcode.net/mirrors/SuperMap/iclient3d-for-webgl?utm_source=csdn_github_accelerator
對于插件的使用可以參考博客: https://blog.csdn.net/weixin_42532695/article/details/126757751
【W(wǎng)ebGL】如何查詢場景中地圖的要素信息
【問題答案】發(fā)布rest地圖服務(wù)在場景中加載不能查詢地圖要素的信息,可以使用MVT矢量瓦片。參考官網(wǎng)示例http://support.supermap.com.cn:8090/webgl/examples/webgl/editor.html#MVT
【W(wǎng)ebGL】使用iServer發(fā)布的3dtiles數(shù)據(jù),在iClient3D for Cesium中如何加載?
【解決方法】參考以下代碼就能夠正常加載:
viewer.scene.primitives.add(new Cesium.Cesium3DTileset({url: ‘***’,isSuperMapiServer:true
}))
【W(wǎng)ebGL】如何在場景中顯示幀率信息?
【解決方法】參考以下代碼就能夠顯示幀率信息:
viewer.scene.debugShowFramesPerSecond = true
【W(wǎng)ebGL】有很多個(gè)token,怎樣同時(shí)加載?
【解決方法】// 需要在構(gòu)造圖層provider前聲明Cesium.Credential.CREDENTIAL = new Cesium.Credential([{rooturl: "http://localhost:8090/portalproxy/iserver/services/3D-Buildings/rest/realspace/datas/MosaicResult@dem",type: "key",value: "SHf9H7YWmdMCSDRks4gdPxNF",},{rooturl: "http://localhost:8090/portalproxy/iserver/services/3D-CBD/rest/realspace",type: "key",value: "4x3T2UMNjlc78ugvfmo7MbDC",},]);
【W(wǎng)ebGL】SuperMap iDesktop中的太陽軌跡功能 對應(yīng)在SuperMap iClient 3D for Cesium 中應(yīng)該怎么做?
【解決辦法】SuperMap iClient 3D for Cesium中有timeline屬性,初始化viewer時(shí)將timeline設(shè)置為true即可。
【W(wǎng)ebGL】 使用new Cesium.TiandituTerrainProvider() 方法加載天地圖,請求的地圖范圍超過了t8,但是官網(wǎng)天地圖文檔顯示是0-7,如何解決?
【解決辦法】使用約束加載層級的 maximumLevel 、 minimumLevel,例如:
Cesium.TiandituTerrainProvider({token:URL_CONFIG.TOKEN_TIANDITU,maximumLevel:0,minimumLevel:7
})
【W(wǎng)ebGL】使用S3MInstanceCollection添加S3M模型到場景中,模型紋理直接變黑了是怎么回事?
【問題原因】在生成這類數(shù)據(jù)的時(shí)候強(qiáng)制把邊長2的n次方,所以當(dāng)貼圖尺寸不是2的n次方時(shí),會出現(xiàn)錯(cuò)亂的情況,更改后正常添加
【W(wǎng)ebGL】點(diǎn)云使用圖層加載的方式進(jìn)行加載,點(diǎn)會變得比使用scene.open直接打開場景的點(diǎn)小是為什么?
【問題原因】因?yàn)閳鼍爸?#xff0c;默認(rèn)點(diǎn)大小為3,但是圖層沒有風(fēng)格,直接加載默認(rèn)加載為1。
【解決辦法】在使用Scene.addS3MTilesLayerByScp(url, options)的方式添加圖層服務(wù)時(shí),設(shè)置點(diǎn)尺寸S3MTilesLayer.style3D.pointSize= 3;
【W(wǎng)ebGL】想要實(shí)現(xiàn)物體運(yùn)動的效果,但是不想使用kml,而是想點(diǎn)選添加,這需要怎么做?
【解決辦法】可以使用動態(tài)圖層的方法,具體實(shí)現(xiàn)方式可參考博客:https://blog.csdn.net/supermapsupport/article/details/103461476
【W(wǎng)ebGL】如何編輯實(shí)體模型,調(diào)整實(shí)體模型的位置、旋轉(zhuǎn)角度、縮放比例?
【解決辦法】使用模型編輯類ModelEditor,該類支持gltf、s3mb模型。 具體實(shí)現(xiàn)方式可參考技術(shù)博客:https://blog.csdn.net/supermapsupport/article/details/122208656
【W(wǎng)ebGL】entity添加的Wall對象,如何做出動態(tài)拉伸漸變的效果?
【解決辦法】使用Cesium.CallbackProperty回調(diào)函數(shù)實(shí)現(xiàn)。 拉伸效果:墻體對象有maximumHeights屬性,通過CallbackProperty函數(shù)不斷返回不同高度,即可實(shí)現(xiàn)墻體不斷增高的拉伸效果, 漸變效果:為墻體設(shè)置一張漸變圖片,再使用CallbackProperty回調(diào)函數(shù)不斷更改材質(zhì)顏色透明度即可實(shí)現(xiàn)漸變效果 具體實(shí)現(xiàn)方式可參考技術(shù)博客:https://blog.csdn.net/supermapsupport/article/details/109594395
【W(wǎng)ebGL】開啟地表透明后,地形上出現(xiàn)半透明面片?
【問題原因】該面片為地形裙邊 【解決辦法】可以設(shè)置參數(shù)關(guān)閉裙邊:
viewer.scene.terrainProvider.isCreateSkirt = false; // 關(guān)閉裙邊
【W(wǎng)ebGL】傾斜攝影淹沒分析,淹沒的高度與設(shè)置的高度不一致,請問是什么原因?
【問題原因】修改過傾斜攝影配置文件中的position位置,桌面風(fēng)格設(shè)置修改過傾斜攝影圖層高度,都會出現(xiàn)這種情況
【解決辦法】對傾斜攝影圖層設(shè)置重新計(jì)算高度參數(shù):layer.computeHeight = true
【W(wǎng)ebGL】地形開挖,如何不顯示封邊效果,不展示側(cè)面與底面貼圖?
【解決辦法】在場景地球globe類中,設(shè)置以下參數(shù):
scene.globe.showExcavationSide = false; //地形開挖側(cè)面不封邊 scene.globe.excavationBottomTextureUrl = null; //地形開挖底部不設(shè)置紋理 scene.globe.excavationSideTextureUrl = null; //地形開挖側(cè)面不設(shè)置貼圖
【W(wǎng)ebGL】Webgl對接Arcserver帶標(biāo)簽的服務(wù),矢量圖層的標(biāo)簽會在全球剖分層級劃分的網(wǎng)格中每塊都會顯示一次。
【解決辦法】在Arcmap里面把標(biāo)注轉(zhuǎn)成注記,添加一個(gè)注記圖層后再去發(fā)服務(wù),Webgl對接顯示即可正常
【W(wǎng)ebGL】將地圖加載到場景中,能不能點(diǎn)擊對象就獲取到對應(yīng)的屬性信息?
【解決辦法】地圖是通過imageryLayers.addImageryProvider添加的,是作為影像底圖,因此不能獲取到屬性信息。 建議將矢量數(shù)據(jù)切成矢量瓦片,切圖時(shí)勾選保存屬性信息的接口,發(fā)布矢量瓦片服務(wù)。 可參考官網(wǎng)示例代碼“MVT”:http://support.supermap.com.cn:8090/webgl/examples/webgl/editor.html#MVT
【W(wǎng)ebGL】場景一到晚上就變黑了,怎么設(shè)置才能一直為白天
【解決辦法】可以設(shè)置太陽的位置,參考代碼:
viewer.clockViewModel.currentTime = Cesium.JulianDate.fromDate(new Date('2022/12/30 12:00:00'))
【W(wǎng)ebGL】如何修改三維面生成的緩存圖層的顏色
【解決辦法】參考代碼進(jìn)行修改:
layer.style3D.fillForeColor = new Cesium.Color(0, 1, 0, 0.5)
【W(wǎng)ebGL】傾斜攝影淹沒分析,淹沒的高度與設(shè)置的高度不一致,請問是什么原因?
【問題原因】修改過傾斜攝影配置文件中的position位置,桌面風(fēng)格設(shè)置修改過傾斜攝影圖層高度,都會出現(xiàn)這種情況
【解決辦法】對傾斜攝影圖層設(shè)置重新計(jì)算高度參數(shù):
layer.computeHeight = true
【W(wǎng)ebGL】地形開挖,如何不顯示封邊效果,不展示側(cè)面與底面貼圖?
【解決辦法】在場景地球globe類中,設(shè)置以下參數(shù):
scene.globe.showExcavationSide = false; //地形開挖側(cè)面不封邊 scene.globe.excavationBottomTextureUrl = null; //地形開挖底部不設(shè)置紋理 scene.globe.excavationSideTextureUrl = null; //地形開挖側(cè)面不設(shè)置貼圖
【W(wǎng)ebGL】Webgl對接Arcserver帶標(biāo)簽的服務(wù),矢量圖層的標(biāo)簽會在全球剖分層級劃分的網(wǎng)格中每塊都會顯示一次。
【解決辦法】在Arcmap里面把標(biāo)注轉(zhuǎn)成注記,添加一個(gè)注記圖層后再去發(fā)服務(wù),Webgl對接顯示即可正常
【W(wǎng)ebGL】將地圖加載到場景中,能不能點(diǎn)擊對象就獲取到對應(yīng)的屬性信息?
【解決辦法】地圖是通過imageryLayers.addImageryProvider添加的,是作為影像底圖,因此不能獲取到屬性信息。 建議將矢量數(shù)據(jù)切成矢量瓦片,切圖時(shí)勾選保存屬性信息的接口,發(fā)布矢量瓦片服務(wù)。 可參考官網(wǎng)示例代碼“MVT”:http://support.supermap.com.cn:8090/webgl/examples/webgl/editor.html#MVT
【W(wǎng)ebGL】場景一到晚上就變黑了,怎么設(shè)置才能一直為白天
【解決辦法】可以設(shè)置太陽的位置,參考代碼:
viewer.clockViewModel.currentTime = Cesium.JulianDate.fromDate(new Date('2022/12/30 12:00:00'))
【W(wǎng)ebGL】如何修改三維面生成的緩存圖層的顏色
【解決辦法】參考代碼進(jìn)行修改:
layer.style3D.fillForeColor = new Cesium.Color(0, 1, 0, 0.5)