const onViewerReady = (readyObj: VcReadyObject) => { Cesium = readyObj.Cesium; viewer = readyObj.viewer; viewer.scene.globe.depthTestAgainstTerrain = true; };用JavaScript怎么写
时间: 2023-11-28 17:50:45 浏览: 96
您可以使用如下JavaScript代码来编写此函数:
```
function onViewerReady(readyObj) {
var Cesium = readyObj.Cesium;
var viewer = readyObj.viewer;
viewer.scene.globe.depthTestAgainstTerrain = true;
}
```
请注意,此代码假定在调用此函数之前已经定义了变量 `Cesium` 和 `viewer`。如果这些变量未定义,则需要根据您的代码进行相应的修改。
相关问题
如何在vue3的<script setup>中使用cesium,实现点击地球保存并绘制该点位置,用虚线将该点与北极点连接,但不绘制北极点的位置,以及虚线的长度只有点击保存的那个点开始到北极点的1000米
在Vue3的<script setup>中使用Cesium需要先安装Cesium和@vue-cesium组件库:
```
npm install cesium --save
npm install @vue-cesium/vue3-cesium --save
```
然后在组件中引入Cesium和@vue-cesium:
```html
<template>
<div id="cesiumContainer"></div>
</template>
<script setup>
import * as Cesium from "cesium/Cesium";
import { VcViewer } from "@vue-cesium/vue3-cesium";
const options = {
animation: false,
baseLayerPicker: false,
fullscreenButton: false,
geocoder: false,
homeButton: false,
infoBox: false,
sceneModePicker: false,
selectionIndicator: false,
timeline: false,
navigationHelpButton: false,
shouldAnimate: true,
vrButton: false,
};
const viewer = new Cesium.Viewer("cesiumContainer", options);
const vcViewer = new VcViewer(viewer);
</script>
```
接着,我们可以使用Cesium的API来实现点击地球保存并绘制该点位置,并用虚线将该点与北极点连接,但不绘制北极点的位置,以及虚线的长度只有点击保存的那个点开始到北极点的1000米。
```html
<template>
<div id="cesiumContainer"></div>
</template>
<script setup>
import * as Cesium from "cesium/Cesium";
import { VcViewer } from "@vue-cesium/vue3-cesium";
const options = {
animation: false,
baseLayerPicker: false,
fullscreenButton: false,
geocoder: false,
homeButton: false,
infoBox: false,
sceneModePicker: false,
selectionIndicator: false,
timeline: false,
navigationHelpButton: false,
shouldAnimate: true,
vrButton: false,
};
const viewer = new Cesium.Viewer("cesiumContainer", options);
const vcViewer = new VcViewer(viewer);
// 添加鼠标单击事件监听器
vcViewer.cameraChanged.addEventListener(() => {
const picked = viewer.scene.pickPosition(event.position);
if (Cesium.defined(picked)) {
const position = viewer.scene.globe.ellipsoid.cartesianToCartographic(picked);
const lon = Cesium.Math.toDegrees(position.longitude);
const lat = Cesium.Math.toDegrees(position.latitude);
const height = position.height;
// 绘制点
const entity = viewer.entities.add({
position: picked,
point: {
pixelSize: 10,
color: Cesium.Color.YELLOW,
},
});
// 计算北极点的位置
const northPole = Cesium.Cartesian3.fromDegrees(0, 90, 0);
// 计算虚线的端点
const point1 = picked;
const point2 = Cesium.Cartesian3.fromRadians(northPole.longitude, northPole.latitude, 1000);
// 绘制虚线
const polyline = viewer.entities.add({
polyline: {
positions: [point1, point2],
width: 5,
material: new Cesium.PolylineDashMaterialProperty({
color: Cesium.Color.RED,
}),
},
});
}
});
</script>
```
Cesium-1.121 加载tileset.json
在Cesium版本1.121中,如果你想加载`tileset.json`这种Tiled Tileset格式的瓦片数据,你可以按照以下步骤操作:
1. **准备资源**:首先,确保你有一个`tileset.json`文件,其中包含了Tiled地图所需的元数据和瓦片路径,通常会包含像`tiles`、`tileSize`、`tileOrigin`等属性。
2. **创建Tileset Imagery Layer**:Cesium提供了`Cesium.TilesetImageryProvider`,这是专门用来加载Tiled Tilesets的。你需要创建一个新的`TilesetImageryProvider`实例并传入你的JSON文件路径。
```javascript
const tilesetUrl = '/path/to/your/tileset.json';
const imageryProvider = new Cesium.TilesetImageryProvider({
url : tilesetUrl,
});
```
3. **配置选项**:如果需要,可以进一步配置imagery provider的选项,例如设置瓦片大小、是否启用LOD(Level of Detail)等。
4. **添加到场景**:然后把这个provider添加到场景的`ImageryLayers`中。
```javascript
const imageryLayer = new Cesium.ImageryLayer(imageryProvider);
cesium.Scene.globe.imageryLayers.add(imageryLayer);
```
5. **启用瓦片缓存**:为了提高性能,可以在`Cesium.BingMapsApi`或自定义`CesiumIonImageryProvider`中启用缓存,但这不是默认提供的功能。
阅读全文