欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于Cesium實現(xiàn)拖拽3D模型的示例代碼

 更新時間:2022年06月22日 15:49:00   作者:王+V  
這篇文章主要為大家詳細介紹了如何利用Cesium實現(xiàn)在地圖上添加一個3D模型,并且可以實現(xiàn)拖拽效果。文中的示例代碼講解詳細,感興趣的可以了解一下

這個地方是想實現(xiàn)一個什么效果呢?就是使用 cesium 在地圖上添加一個3D模型,然后實現(xiàn)拖拽效果。

添加基站模型

然后這篇博文介紹的主要不是添加模型,但是也簡單把代碼直接粘貼過來吧,就不詳細說了。

  // 添加基站模型
  function addSite() {
    let position = Cesium.Cartesian3.fromDegrees(116.236393, 40.075119, 0);
    // 設(shè)置模型方向
    let hpRoll = new Cesium.HeadingPitchRoll(Cesium.Math.toRadians(0), 0, 0);
    let orientation = Cesium.Transforms.headingPitchRollQuaternion(position, hpRoll);
    // 添加模型
    let model = viewer.entities.add({
      id: 'site',   // 模型id
      position: position,   // 模型位置
      orientation: orientation,   // 模型方向
      model: {
        uri: './models/siteModel/scene.gltf',   // 模型路徑,自己換成自己的模型
        scale: 1,
        show: true, // 模型是否可見
      },
      description: '基站模型'  // 添加模型描述
    });
    viewer.trackedEntity = model;    // 視角切換到模型
  }

上邊的代碼就完成了在界面上添加模型功能。

拖拽

其實拖拽就是給這個cesium加一個監(jiān)聽事件。

比如說這個拖拽的簡單邏輯分析哈:

1、鼠標(biāo)按下事件,如果有模型的話,可以給模型設(shè)置一個顏色,知道按下選中的是哪個模型。

2、然后再監(jiān)聽鼠標(biāo)拖拽事件,獲取鼠標(biāo)拖拽的位置,賦值給模型。

3、鼠標(biāo)抬起事件,結(jié)束鼠標(biāo)移動事件,然后把顏色改回去。

   // 注冊事件
  function setHandler() {
    handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
    // 注冊鼠標(biāo)按下事件
    handler.setInputAction((e) => {
      const pick = viewer.scene.pick(e.position);
      if (!Cesium.defined(pick)) { return; };// 如果點擊空白區(qū)域,則不往下執(zhí)行
      viewer.scene.screenSpaceCameraController.enableRotate = false;// 將相機鎖定,不然后續(xù)移動實體時相機也會動
      pick.id.model.color = Cesium.Color.fromAlpha(Cesium.Color.RED, 1)  //設(shè)置顏色

      // 注冊鼠標(biāo)拖拽事件
      viewer.screenSpaceEventHandler.setInputAction((arg) => {// 為viewer綁定MOUSE_MOVE事件監(jiān)聽器(執(zhí)行函數(shù),監(jiān)聽的事件)
        const position = arg.endPosition;// arg有startPosition與endPosition兩個屬性,即移動前后的位置信息:Cartesian2對象
        const cartesian = viewer.scene.globe.pick(viewer.camera.getPickRay(position), viewer.scene);//將Cartesian2轉(zhuǎn)為Cartesian3
        pick.id.position._value = cartesian
      }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);


      // 綁定鼠標(biāo)抬起事件
      viewer.screenSpaceEventHandler.setInputAction(({ position }) => {//為viewer綁定LEFT_UP事件監(jiān)聽器(執(zhí)行函數(shù),監(jiān)聽的事件)
        viewer.scene.screenSpaceCameraController.enableRotate = true;// 取消相機鎖定
        pick.id.model.color = null  //設(shè)置顏色
        viewer.screenSpaceEventHandler.removeInputAction(Cesium.ScreenSpaceEventType.MOUSE_MOVE);// 解除viewer的MOUSE_MOVE事件監(jiān)聽器
      }, Cesium.ScreenSpaceEventType.LEFT_UP)

    }, Cesium.ScreenSpaceEventType.LEFT_DOWN);
  }

完成了這就,就是這么的簡單。

到此這篇關(guān)于基于Cesium實現(xiàn)拖拽3D模型的示例代碼的文章就介紹到這了,更多相關(guān)Cesium拖拽3D模型內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 純JavaScript實現(xiàn)HTML5 Canvas六種特效濾鏡示例

    純JavaScript實現(xiàn)HTML5 Canvas六種特效濾鏡示例

    實現(xiàn)了六款簡單常見HTML5 Canvas特效濾鏡,并且封裝成一個純JavaScript可調(diào)用的API文件gloomyfishfilter.js,程序源代碼如下,感興趣的朋友可以參考下哈
    2013-06-06
  • JavaScript Window窗口對象屬性和使用方法

    JavaScript Window窗口對象屬性和使用方法

    這篇文章主要介紹了JavaScript Window窗口對象屬性和使用方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • uni-app操作數(shù)據(jù)庫的三種方法總結(jié)

    uni-app操作數(shù)據(jù)庫的三種方法總結(jié)

    數(shù)據(jù)庫操作的,可以采用多方案,下面這篇文章主要給大家介紹了關(guān)于uni-app操作數(shù)據(jù)庫的三種方法,文中通過實例代碼和圖文介紹的非常詳細,需要的朋友可以參考下
    2023-05-05
  • 瘋掉了,盡然有js寫的操作系統(tǒng)

    瘋掉了,盡然有js寫的操作系統(tǒng)

    瘋掉了,盡然有js寫的操作系統(tǒng)...
    2007-04-04
  • 巧用canvas

    巧用canvas

    作為一項有意思的新技術(shù),canvas給我們帶來了對網(wǎng)頁繪圖和網(wǎng)頁動畫的新革命。本文簡單介紹下canvas實用的功能,下面跟著小編一起來看下吧
    2017-01-01
  • 客戶端js判斷文件類型和文件大小即限制上傳大小

    客戶端js判斷文件類型和文件大小即限制上傳大小

    需要腳本在客戶端判斷大小和文件類型,由于網(wǎng)上沒有適合的,就自己寫了一個并測試 文件上傳大小限制的一個例子,在此與大家分享下
    2013-11-11
  • 完美實現(xiàn)js選項卡切換效果(一)

    完美實現(xiàn)js選項卡切換效果(一)

    這篇文章主要為大家詳細介紹如何完美實現(xiàn)js選項卡切換效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • javascript實現(xiàn)下雪效果【實例代碼】

    javascript實現(xiàn)下雪效果【實例代碼】

    下面小編就為大家?guī)硪黄猨avascript實現(xiàn)下雪效果【實例代碼】。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考
    2016-05-05
  • JS仿萬科底部的新聞滑動特效代碼

    JS仿萬科底部的新聞滑動特效代碼

    本文通過一段實例代碼給大家介紹了JS仿萬科底部的新聞滑動特效代碼,需要的朋友參考下
    2017-09-09
  • Svg.js實例教程及使用手冊詳解(一)

    Svg.js實例教程及使用手冊詳解(一)

    SVG.js是一個輕量級的JavaScript庫,允許你輕松操作SVG和定義動畫。這篇文章主要介紹了Svg.js實例教程及使用手冊詳解(一) 的相關(guān)資料,需要的朋友可以參考下
    2016-05-05

最新評論