项目使用,本项目使用vite与vue
vue3.0项目 Vite + JS Cesium 初学,做记录
Cesium传送门 本文使用vue3搭建项目模板地址,提供vite参考 vue3.0+element-plus+js+tailwind传送门
安装
cesium
vite还需要安装vite-plugin-cesium
并在vite.comfig.js中进行注册import cesium from 'vite-plugin-cesium';
defineConfig({ plugins: [ cesium() ] })
html<div id="container" class="full-size"></div>
JavaScript const viewer = new Cesium.Viewer('container');
Viewer
参数设置参考ConstructorOptionsWidgets API
样式自行调整
class禁止使用container
命名,与tailwind
中一个类冲突
在Cesium初始化时需要在vue中的onMounted调用 Cesium中ViewerAPI的传送门 此间详细记录处理初始化界面上内容
viewer.cesiumWidget.creditContainer.style.display = 'none';
原由: 随着地图缩放深度增加会导致数据获取不到,所以需要进行开启深度监测
viewer.scene.globe.depthTestAgainstTerrain = true;
depthTestAgainstTerrain介绍API
new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas)
handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
JavaScript/// Cesium.ScreenSpaceEventType.WHEEL 事件类型,参考[中文网cesium事件API]
handler.setInputAction(() => {
...
}, Cesium.ScreenSpaceEventType.WHEEL);
或者
JavaScriptviewer.screenSpaceEventHandler.setInputAction(function onLeftClick(movement) {
...
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);
事件
Cesium.ScreenSpaceEventType.LEFT_CLICK
点击事件参数中带有position
可进行做标解析 事件参数 :lclickment
1、获取cartesian
const cartesian = viewer.scene.pickPosition(lclickment.position)
2、判断cartesian
是否存在(地图未加载成功时,depthTestAgainstTerrain
未开启时)
3、使用cartesianToCartographic
将cartesian
转换成三维做标,cartesianToCartographic介绍API
获取坐标前置 使用
ellipsoid
:const { ellipsoid } = viewer.scene.globe
,viewer在标题[初始化Cesium]中介绍
const cartographic = ellipsoid.cartesianToCartographic(cartesian);
4、将三维做标转换成地理做标
toDegrees
:将弧度转换成度数API
Cesium.Math.toDegrees(cartographic.longitude)
:lon
Cesium.Math.toDegrees(cartographic.latitude)
:lat
viewer.camera.positionCartographic.height
JavaScript Cesium.Camera.DEFAULT_VIEW_RECTANGLE = Cesium.Rectangle.fromDegrees(
75.0, // 西经
0.0, // 南纬
140.0, // 东经
60.0, // 北纬
);
在Cesium.Viewer
初始化之前设置
本文作者:还是夸张一点
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!