三維引擎cesium學(xué)習(xí)經(jīng)驗

初始化viewer對象
//創(chuàng)建cesium Viewer
viewer = new Cesium.Viewer(‘cesiumContainer’,{
animation:false, //是否創(chuàng)建動畫小器件,左下角儀表
baseLayerPicker:false, //是否顯示圖層選擇器
fullscreenButton:false, //是否顯示全屏按鈕
geocoder:false, //是否顯示geocoder小器件影钉,右上角查詢按鈕
homeButton:false, //是否顯示Home按鈕
infoBox : false, //是否顯示信息框
sceneModePicker:false, //是否顯示3D/2D選擇器
selectionIndicator : false , //是否顯示選取指示器組件
timeline:false, //是否顯示時間軸
navigationHelpButton:false, //是否顯示右上角的幫助按鈕
scene3DOnly : true, //如果設(shè)置為true,則所有幾何圖形以3D模式繪制以節(jié)約GPU資源
navigationInstructionsInitiallyVisible:false,
showRenderLoopErrors:false,
imageryProvider : new Cesium.OpenStreetMapImageryProvider({ url : ‘//a.tile.openstreetmap.org/’ }) //加載自定義地圖瓦片需要指定一個自定義圖片服務(wù)器//URL為瓦片數(shù)據(jù)服務(wù)器地址
});
對entity的操作:添加、隱藏纵顾、修改、去除栋盹、居中顯示
Var rainEntity=viewer.entities.add({
       id: "rain",
     name: 'RainStation',
     parent: rainLayer3D,                
     position: Cesium.Cartesian3.fromDegrees(lon, lat),
    billboard: {
        image: 'images/pointIcons/rain1.png',
        scale:0.7,
        verticalOrigin: Cesium.VerticalOrigin.BOTTOM
    },
    label: {
              text: rainfall,
              font: '12px SimHei ',
              Width: 3,
         style: Cesium.LabelStyle.FILL,
              fillColor: Cesium.Color.AQUA,
              horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
              verticalOrigin: Cesium.VerticalOrigin.TOP
    }
  });  //添加

viewer.entities.getById("rain").show = false;   //隱藏
viewer.entities.getById("rain").label.text= "drp";   //修改屬性
viewer.entities.removeAll();  //移除所有
viewer.zoomTo(rainEntity);   //居中顯示
去掉entity的雙擊事件
問題所在:雙擊entity施逾,會放大視圖,entity居中顯示例获,且鼠標(biāo)左鍵失去移動功能汉额,鼠標(biāo)滾輪失去作用
解決問題:
viewer.screenSpaceEventHandler.setInputAction(function(){},Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK );

獲取當(dāng)前視角高度

var scene = viewer.scene;

var ellipsoid = scene.globe.ellipsoid;

var height=ellipsoid.cartesianToCartographic(viewer.camera.position).height;
獲取某個經(jīng)緯度在屏幕上的位置
var position = Cesium.Cartesian3.fromDegrees(lon, lat);

var clickPt =Cesium.SceneTransforms.wgs84ToWindowCoordinates (viewer.scene, position);

var screenX=clickPt.x;

var screenY=clickPt.y;
獲取三維場景屏幕中心點坐標(biāo)
var result = viewer.camera.pickEllipsoid(new Cesium.Cartesian2 ( viewer.canvas.clientWidth /2 , viewer.canvas.clientHeight / 2));

var curPosition = Cesium.Ellipsoid.WGS84.cartesianToCartographic(result);

var lon = curPosition.longitude*180/Math.PI;

var lat = curPosition.latitude*180/Math.PI;
響應(yīng)鼠標(biāo)單擊等事件,獲取屏幕點擊坐標(biāo)
var handler = new Cesium.ScreenSpaceEventHandler(canvas);

               handler.setInputAction(function(click){},Cesium.ScreenSpaceEventType.LEFT_CLICK);

               var clickX=click.position.x;

        var clickY=click.position.y;

這個LEFT_CLICK可以換成MIDDLE_CLICK榨汤、MOUSE_MOVE等就會響應(yīng)滾輪點擊蠕搜、鼠標(biāo)移動等事件,見參考文檔中的ScreenSpaceEventType()收壕,注意不同的事件中妓灌,function中的click會有不同的屬性,可console.log(click)蜜宪,找到所需

 
跟蹤相機視角的改變
viewer.camera.moveStart.addEventListener(function(moveStartPosition){})虫埂;

viewer.camera.moveEnd.addEventListener(function(moveEndPosition){});

其實還有個

viewer.camera.changed.addEventListener(function(moveEndPosition){})圃验,但我不會用告丢,總是提示changed不存在,但是camera的參考文檔中這個changed和moveStart和moveEnd都可以addEventListener

使視角到達某一地點
viewer.camera.setView({

        destination: Cesium.Cartesian3.fromDegrees(lon, lat, height),

        orientation: {

            heading : curHeading,  //左右偏移

            pitch : curPitch,   //上下偏移

            roll : 0.0                           

        }

    });
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末损谦,一起剝皮案震驚了整個濱河市岖免,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌照捡,老刑警劉巖颅湘,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異栗精,居然都是意外死亡闯参,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進店門悲立,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鹿寨,“玉大人,你說我怎么就攤上這事薪夕〗挪荩” “怎么了?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵原献,是天一觀的道長馏慨。 經(jīng)常有香客問我埂淮,道長,這世上最難降的妖魔是什么写隶? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任倔撞,我火速辦了婚禮,結(jié)果婚禮上慕趴,老公的妹妹穿的比我還像新娘痪蝇。我一直安慰自己,他們只是感情好冕房,可當(dāng)我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布霹俺。 她就那樣靜靜地躺著,像睡著了一般毒费。 火紅的嫁衣襯著肌膚如雪丙唧。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天觅玻,我揣著相機與錄音想际,去河邊找鬼。 笑死溪厘,一個胖子當(dāng)著我的面吹牛胡本,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播畸悬,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼侧甫,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了蹋宦?” 一聲冷哼從身側(cè)響起披粟,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎冷冗,沒想到半個月后守屉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡蒿辙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年拇泛,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片思灌。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡俺叭,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出泰偿,到底是詐尸還是另有隱情熄守,我是刑警寧澤,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站柠横,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏课兄。R本人自食惡果不足惜牍氛,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望烟阐。 院中可真熱鬧搬俊,春花似錦、人聲如沸蜒茄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽檀葛。三九已至玩祟,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間屿聋,已是汗流浹背空扎。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留润讥,地道東北人转锈。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像楚殿,于是被迫代替她去往敵國和親撮慨。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,700評論 2 354

推薦閱讀更多精彩內(nèi)容