2023-01-09
Cesium雖然也支持兩種方式(Entity和Primitive)加載3D Tiles資料,
但因為多數情況下3D Tiles資料都是成片區的資料,資料量比較大,所以為了保證性能,建議使用Primitive方式,
entity和primitives的處理邏輯稍有不同,正因如此,我們需要針對entity和primitives分開寫
//系結滑鼠移動到物體上時候的事件 viewer.screenSpaceEventHandler.setInputAction(function onm ouseMove( movement ) { var pickedFeature = viewer.scene.pick(movement.endPosition); var selectedEntity = null; if(Cesium.defined(pickedFeature)){ //如果指到primitive,因為其不能調整輪廓,所以當作空地處理 //也可以用 pickedFeature instanceof Cesium.Cesium3DTileFeature 來判斷,這樣更好一些 if(typeof(pickedFeature.id) == "undefined"){ that.space=1; return; } selectedEntity = entityCollection.getById(pickedFeature.id.id); selectedEntity.model.silhouetteSize=2; if(that.selectedEntity==null){ that.selectedEntity=selectedEntity; return; } //只是在同一模型內部動 if(selectedEntity._id === that.selectedEntity._id && that.space==0){ return; } //從一個模型直接滑動到另一個模型 else if(selectedEntity._id != that.selectedEntity._id) { selectedEntity.model.silhouetteSize=2; that.selectedEntity.model.silhouetteSize=0; that.selectedEntity=selectedEntity; that.space=0; } //經過空白 else if(that.space==1){ selectedEntity.model.silhouetteSize=2; that.space=0; } } //指到空地 else if(!Cesium.defined(pickedFeature) && that.selectedEntity!=null ){ that.selectedEntity.model.silhouetteSize=0; that.space=1; } },Cesium.ScreenSpaceEventType.MOUSE_MOVE);
這是針對entity的代碼,而我找了一圈,并沒有在primitives中找到silhouetteSize之類的屬性
所以如果實在需要的話,就還是用entity加載3dtile
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/541605.html
標籤:GIS
上一篇:day05-Vue02
