cesium和leaflet的二三維聯動

2021-10-01 12:35:04 字數 752 閱讀 1722

最近做個專案,要實現二三維聯動。二維是基於leaflet的地圖,三維是基於cesium,webgl的場景。要實現的是,平移、縮放二維地圖時,三維跟著平移縮放,反過來也一樣。

一  問題界定

總體看,一共三個問題。

1 要解決二維三維迴圈聯動的問題。就是說,不能拖動二維,三維跟著動,然後二維再跟著三維動,無限迴圈。

2 二維和三維的平移聯動

3 二維和三維的縮放聯動

二  問題解決

1 使用flag,滑鼠進入二維div時,flag為true,進入三維時為false。使用onmouseover事件

2 這個比較簡單,但注意座標轉換,cesium中需要將二維傳過來的經緯度轉為笛卡爾座標,使用cartesian3.fromdegrees介面

3 本文討論的重點。

問題3的難點在於,leallet中的zoom和cesium中的height,這顯然不是乙個概念,那麼常規的想法就是將zoom和height建立起聯絡。最簡單粗暴的就是多觀測幾組zoom和height的對應值,然後用最小二乘法等回歸演算法進行擬合。但對於我這種懶人,這方法實在太麻煩、太「業餘」,而且進一步想想,zoom是離散型變數,height是連續型的,即使擬合出了聯絡,效果也不會很好的,於是這個方案pass掉。

那麼就開動腦筋想想其他方案。zoom和height對應是最直觀的方式,但是除此之外,在相同視角下,二維地圖和三維地圖的範圍應當一致。無論是二維和三維地圖,一定都有extent的概念,就是當

cesium學習 cesium中的座標

一 座標展現形式 在cesium中,對於座標數值單位有三種 角度 弧度和座標值 1.角度 角度就是我們所熟悉的經緯度,對於地球的座標建立如下 圖中以本初子午線作為x和z的面,建立了乙個空間座標系。可知在緯度方向上,角1的範圍為 90 90,即南緯90 北緯90 角2的範圍是 180 180,即東經1...

Cesium的3dtileset座標和高度問題

平時我載入的3dtileset內部是模型座標系的,模型定位的話使用cesium.transforms.headingpitchrolltofixedframe去控制位置和方向角。但是有時會遇到3dtileset內部是世界座標系的,那就不需要上面的定位了,因為內部自己有座標。可是有時候3dtilese...

Cesium 滑鼠單擊和雙擊事件

cesium 滑鼠雙擊事件實際上是 先執行了兩次單擊再進行雙擊,因而如果給繫結的左鍵單擊事件,則可能會獲取不到雙擊事件,下面使用定時器功能區分單雙擊事件 let handler new cesium.screenspaceeventhandler viewer.canvas let timer nu...