标签: cesium

Cesium JS保存相机位置

我正在考虑保存摄像机位置(特别是旋转),因此在2D和3D之间来回切换将始终返回到我上次在3D中查看的位置.做这个的最好方式是什么?

我还想将其保存为cookie或本地存储,以便用户可以直接进入页面上的保存视图,其中包含来自其他页面(可能不是美国)的Cesium.

3d data-visualization cesium

7
推荐指数
1
解决办法
1962
查看次数

等待场景在铯中完全渲染

加载kml数据源时,我想显示一个加载图像,直到可以在查看器或场景中将其可视化为止。我试图处理:

  • viewer.dataSources.dataSourceAdded 事件,但是它很早就触发了,也就是说,加载图像在数据源可以可视化之前就消失了
  • 问题是相同的

    viewer.dataSources.add(datasource).then(function(){ clearLoader(); } )

请任何人都可以帮助谢谢

events scene cesium

7
推荐指数
1
解决办法
1413
查看次数

铯中动态形状的最佳和最高效的实现

我目前正在使用一个使用Cesium Viewer的应用程序.我需要能够显示将动态更新的形状集合.我无法理解这样做的最佳方法.

我目前正在使用实体并使用CallbackProperties来允许更新形状.

您可以通过这个到沙堡来了解我是如何做到这一点的.有一个多边形对象被用作cesiumCallback的基础,它正在被另一段代码编辑.(用setTimeout模拟)

var viewer = new Cesium.Viewer('cesiumContainer', {});

var polygon = {};
polygon.coordinates = [
    {longitude: 0, latitude: 0, altitude: 0},
    {longitude: 10, latitude: 10, altitude: 0},
    {longitude: 10, latitude: 0, altitude: 0}
];


// converts generic style options to cesium one (aka color -> material)
var polOpts = {};

 // function for getting location
polOpts.hierarchy = new Cesium.CallbackProperty(function() {
  var hierarchy = [];
  for (var i = 0; i < polygon.coordinates.length; i++) {
       var coordinate = polygon.coordinates[i]; …
Run Code Online (Sandbox Code Playgroud)

cesium

7
推荐指数
1
解决办法
1993
查看次数

获取Cesium地图中心

我需要知道Cesium Map的当前中心是什么.

我尝试使用,viewer.camera.position但它总是给出相同的z值(x:16921255.101297915,y:5578093.302269477,z:12756274),我不确定x和y值.它们是米吗?

非常感谢!

编辑:解决方案

在我得到的所有帮助下(谢谢!)我把它放在一起:

getPosition(){
    if (viewer.scene.mode == 3) {
        var windowPosition = new Cesium.Cartesian2(viewer.container.clientWidth / 2, viewer.container.clientHeight / 2);
        var pickRay = viewer.scene.camera.getPickRay(windowPosition);
        var pickPosition = viewer.scene.globe.pick(pickRay, viewer.scene);
        var pickPositionCartographic = viewer.scene.globe.ellipsoid.cartesianToCartographic(pickPosition);
        console.log(pickPositionCartographic.longitude * (180 / Math.PI));
        console.log(pickPositionCartographic.latitude * (180 / Math.PI));
    } else if (viewer.scene.mode == 2) {
        var camPos = viewer.camera.positionCartographic;
        console.log(camPos.longitude * (180 / Math.PI));
        console.log(camPos.latitude * (180 / Math.PI));
    }
};
Run Code Online (Sandbox Code Playgroud)

此函数以度为单位给出经度/纬度坐标.

gis cesium

7
推荐指数
1
解决办法
2204
查看次数

铯标签模糊

我使用以下代码创建了一个Cesium标签:

        var label: Cesium.LabelGraphics = new Cesium.LabelGraphics({
            text : lab,
            verticalOrigin: Cesium.VerticalOrigin.TOP,
            horizontalOrigin: Cesium.HorizontalOrigin.RIGHT,
            font: '15px Helvetica',
            fillColor: Cesium.Color.WHITE,
            outlineWidth: 2,
            style: Cesium.LabelStyle.FILL,
            pixelOffset: new Cesium.Cartesian2(20, 20)
        });
Run Code Online (Sandbox Code Playgroud)

但它很模糊......

我想有一个更清晰的标签.这个图像是否可以在红色矩形内看到真实标签.在蓝色矩形中是带有放大的标签.在绿色矩形是我希望它是如何. 在此输入图像描述

有没有办法让标签更清晰?

谢谢!

cesium

7
推荐指数
2
解决办法
2132
查看次数

Cesiumjs中的实体和原始之间有什么区别?

Cesium.js 中的 Entity 和 Primitive 有什么区别?在我的应用程序中,我使用了原语,并且这个(选择 Drill Down Picking)使用了实体。我想实现相同的突出显示功能,但使用 Primitives。我怎样才能做到这一点?

javascript cesium

7
推荐指数
1
解决办法
3099
查看次数

Threejs和3D瓷砖(来自Cesium)

我目前负责探索在网页上显示大型3D地质模型的选项.它们由地质学家使用GeoModeller构建,并使用Cinema 4D导出到.DAE或.OBJ.一旦显示,模型应该是交互式的并链接到数据库(这部分可以从我这边管理).

问题是:模型可能非常大,我担心它们会导致崩溃并缓慢渲染.

到目前为止考虑的解决方案:threejs + 3D Tiles(来自铯).

问题:组合threejs和3D Tiles实际上是否可行?它是根据3D Tiles演示页面,但我不是程序员,我不知道如何实现它.

我的问题有另一个明显的解决方案吗?

资源:这些3D模型的外观如下:http://advancedgwt.com/wp-content/uploads/blog/63.jpg

结合Cesium时3D Tiles会做什么(但我们不想在这里使用地球仪!):http://cesiumjs.org/NewYork

streaming tiles three.js cesium

7
推荐指数
1
解决办法
1287
查看次数

如何将图标添加到铯地图,而不是点

我想在铯地图界面中添加图标以绘制点。目前,我正在执行以下代码,但希望将下面的内容替换为实际的图标。我一直在浏览铯文档,找不到能做到这一点的任何东西。感谢您的任何建议

var points = scene.primitives.add(new Cesium.PointPrimitiveCollection());

points.add({
    position : new Cesium.Cartesian3.fromDegrees(longitude, latitude),
    color : colorDot,
    outlineColor : Cesium.Color.WHITE,
    outlineWidth : width
});
Run Code Online (Sandbox Code Playgroud)

html javascript cesium

7
推荐指数
1
解决办法
2868
查看次数

我想在铯屏幕底部获得鼠标的纬度经度高度

现在使用下面的 javascript,我得到了鼠标指针上的经纬度值。我怎样才能让它像在谷歌地球中一样出现在铯屏幕的底部。

viewer.entities.add({
    id: 'mou',
    label: {
        // position : Cesium.Cartesian2.ZERO, 
        show: true;
    }
});
viewer.scene.canvas.addEventListener('mousemove', function(e) {
    var entity = viewer.entities.getById('mou');
    var ellipsoid = viewer.scene.globe.ellipsoid;
    // Mouse over the globe to see the cartographic position 
    var cartesian = viewer.camera.pickEllipsoid(new Cesium.Cartesian3(e.clientX, e.clientY), ellipsoid);
    if (cartesian) {
        var cartographic = ellipsoid.cartesianToCartographic(cartesian);
        var longitudeString = Cesium.Math.toDegrees(cartographic.longitude).toFixed(10);
        var latitudeString = Cesium.Math.toDegrees(cartographic.latitude).toFixed(10);
        entity.position = cartesian;
        entity.label.show = true;
        entity.label.font_style = 84;
        //entity.position= Cesium.Cartesian2.ZERO; 
        entity.label.text = '(' + longitudeString + ', ' + latitudeString + …
Run Code Online (Sandbox Code Playgroud)

javascript location cesium

6
推荐指数
1
解决办法
4008
查看次数

局部变量与数据。性能损失巨大

我有一个 VueJS 和 Cesium 项目,它在帧速率下降方面存在性能问题。我知道问题出在哪里,但我不知道为什么或如何解决它。

export default {

    name: "Map",

    components: { ... },

    data: function () {
        return {
            viewer: {}        
        }
    },

    methods: { ... },

    mounted() {

        // 150-200 FPS; but no access to the viewer object outside of this component.
        let viewer = new Viewer('cesiumContainer');

        // 20-30 FPS; but yields me the access I need for other components to utilize.
        this.viewer = new Viewer('cesiumContainer');

        ... rest of my source code ...
    }
Run Code Online (Sandbox Code Playgroud)

我可以将所有需要显示的内容保持在 150-200 FPS 以上,而 …

javascript this scoping cesium vue.js

6
推荐指数
1
解决办法
208
查看次数