日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Cesium之初始化视图

發布時間:2023/12/31 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Cesium之初始化视图 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

搭建好cesium環境之后
在項目中找到helloworld.html頁面

這里面只有var viewer = new Cesium.Viewer(‘cesiumContainer’);這一段代碼
我們可以對其進行設置
具體可以參考官方的API
我這里就直接使用zlx312博客中的這一部分說明

var viewer = new Cesium.Viewer( 'cesiumContainer', { animation : false,//是否創建動畫小器件,左下角儀表 baseLayerPicker : false,//是否顯示圖層選擇器 fullscreenButton : false,//是否顯示全屏按鈕 geocoder : false,//是否顯示geocoder小器件,右上角查詢按鈕 homeButton : false,//是否顯示Home按鈕 infoBox : false,//是否顯示信息框 sceneModePicker : false,//是否顯示3D/2D選擇器 selectionIndicator : false,//是否顯示選取指示器組件 timeline : false,//是否顯示時間軸 navigationHelpButton : false,//是否顯示右上角的幫助按鈕 scene3DOnly : true,//如果設置為true,則所有幾何圖形以3D模式繪制以節約GPU資源 clock : new Cesium.Clock(),//用于控制當前時間的時鐘對象 selectedImageryProviderViewModel : undefined,//當前圖像圖層的顯示模型,僅baseLayerPicker設為true有意義 imageryProviderViewModels : Cesium.createDefaultImageryProviderViewModels(),//可供BaseLayerPicker選擇的圖像圖層ProviderViewModel數組 selectedTerrainProviderViewModel : undefined,//當前地形圖層的顯示模型,僅baseLayerPicker設為true有意義 terrainProviderViewModels : Cesium.createDefaultTerrainProviderViewModels(),//可供BaseLayerPicker選擇的地形圖層ProviderViewModel數組 imageryProvider : new Cesium.OpenStreetMapImageryProvider( { credit :'', url : '//192.168.0.89:5539/planet-satellite/' } ),//圖像圖層提供者,僅baseLayerPicker設為false有意義 terrainProvider : new Cesium.EllipsoidTerrainProvider(),//地形圖層提供者,僅baseLayerPicker設為false有意義 skyBox : new Cesium.SkyBox({ sources : { positiveX : 'Cesium-1.7.1/Skybox/px.jpg', negativeX : 'Cesium-1.7.1/Skybox/mx.jpg', positiveY : 'Cesium-1.7.1/Skybox/py.jpg', negativeY : 'Cesium-1.7.1/Skybox/my.jpg', positiveZ : 'Cesium-1.7.1/Skybox/pz.jpg', negativeZ : 'Cesium-1.7.1/Skybox/mz.jpg' } }),//用于渲染星空的SkyBox對象 fullscreenElement : document.body,//全屏時渲染的HTML元素, useDefaultRenderLoop : true,//如果需要控制渲染循環,則設為true targetFrameRate : undefined,//使用默認render loop時的幀率 showRenderLoopErrors : false,//如果設為true,將在一個HTML面板中顯示錯誤信息 automaticallyTrackDataSourceClocks : true,//自動追蹤最近添加的數據源的時鐘設置 contextOptions : undefined,//傳遞給Scene對象的上下文參數(scene.options) sceneMode : Cesium.SceneMode.SCENE3D,//初始場景模式 mapProjection : new Cesium.WebMercatorProjection(),//地圖投影體系 dataSources : new Cesium.DataSourceCollection() //需要進行可視化的數據源的集合 } );

cesium中提供了三種設置View的方式 :setView,flyto,lookAt
我們這里使用的是setView 其他的兩種可以查看下方鏈接,里面有詳細教程
http://cesium.xin/wordpress/archives/261.html
下面是設置初始化的視圖的位置,鏡頭以及視角
(116.427674,39.977968)為經緯度也就是位置,
獲取地方經緯度可以在http://api.map.baidu.com/lbsapi/getpoint/index.html
中點擊自己想要選擇的位置就可以看到經緯度
10000代表的是高度為一萬公里
-90為傾斜角度
下面的heading、pitch和roll就是鏡頭相對于xyz軸的角度

viewer.camera.setView({destination: Cesium.Cartesian3.fromDegrees(111.07, 39.05, 10000),orientation: {heading : Cesium.Math.toRadians(0),pitch : Cesium.Math.toRadians(-90),roll : Cesium.Math.toRadians(0) }});

這樣就可以運行測試。
但在運行之后打開helloworld頁面發現是空白
于是在借鑒zlx312博客中的那一部分中找到如下代碼

imageryProvider : new Cesium.OpenStreetMapImageryProvider( { credit :'', url : '//192.168.0.89:5539/planet-satellite/' } ),

將其修改為以下幾種中的一種就可以了
1、加載arcgis數據——ArcGisMapServerImageryProvider

var viewer = new Cesium.Viewer("cesiumDiv",{imageryProvider:new Cesium.ArcGisMapServerImageryProvider({url:'http://atlasmaps.esri.com/arcgis/rest/services/Esri/USA_Population_Density/MapServer',enablePickFeatures:false}),baseLayerPicker:false  //這句不加可能會出錯 });

2、加載OSM數據——createOpenStreetMapImageryProvider

var viewer = new Cesium.Viewer("cesiumDiv",{imageryProvider:new Cesium.createOpenStreetMapImageryProvider({url:'https://a.tile.openstreetmap.org/'}),baseLayerPicker:false });

3、加載MapBox數據——MapboxImageryProvider

var viewer = new Cesium.Viewer("cesiumDiv",{imageryProvider:new Cesium.MapboxImageryProvider({mapId:'mapbox.satellite'}),baseLayerPicker:false });

4、加載離線的影像服務——SingleTileImageryProvider
在Provider上多做一些文章,比如搞一張透明的圖片,達到一些虛幻的效果,

或者在近地面實現一種類似平面的瀏覽效果,畢竟2D和3D在相機,數據單位上是有區別的。

比如隱藏地球主體后,疊加一些矢量面,突出主題.

var viewer = new Cesium.Viewer("cesiumDiv",{skyBox:false,skyAtmosphere:false,baseLayerPicker:false,imageryProvider:new Cesium.SingleTileImageryProvider({url:'globe.jpg'}),contextOptions:{webgl:{alpha:true}} });

最后效果如下

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的Cesium之初始化视图的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。