为什么entity加载的模型有偏移呀,怎么解决

Cesium源码 · ysak11 · 于 5年前 发布 · 7721 次阅读

自个做了个搜索框可以获取entity位置并通过Flyto转到模型所在位置,但实际使用中总是不能正确的找到模型位置而是飞到了旁边,在做了一系列实验后发现模型所处的位置并不是我给它设置的位置,而是有一定偏差的。 另一方面我添加的点的entity却能出现在正确的位置

这个到底是啥原因一直搞不明白,希望有人帮忙解答一下

function createModel(id,name,url,height,lon,lat){ 
    var position = Cesium.Cartesian3.fromDegrees(lon, lat, height); 
    var heading = Cesium.Math.toRadians(0); 
    var pitch = Cesium.Math.toRadians(0.0); 
    var roll = 0.0; 

    var entity = viewer.entities.add({ 
    id:id, 
    //coordinates : rectangle, 
    fill : false, 
    outline : true, 
    outlineColor : Cesium.Color.WHITE, 
    name : name, 
    position : position, 
    model : { 
    uri : url, 
    //minimumPixelSize : 100, 
    maximumScale : 200 
    } ,
    point : {
        pixelSize : 20,
        color : Cesium.Color.YELLOW,
    }
    
    }); 
    //viewer.trackedEntity = entity; 
    return entity; 
    }

还有我的搜索框函数也贴一下

function msearch()
        {
            var source = document.getElementById("search").value;
            
            position= viewer.entities.getById(source).position.getValue ();
            console.log(position);
            if(position)
            {
                viewer.camera.flyTo({//设置视角  
                destination : position,
                }); 
            }
        }
共收到 4 条回复 cesium
admin#15年前 0 个赞

我怀疑,仅仅是怀疑,肯能不是你模型的位置不对,而是你的地图坐标系的问题?比如纠偏?

ysak11#25年前 0 个赞

@admin #1楼 我最搞不明白的是为什么添加的实体点的位置是对,而模型不在点位上 而且我昨天刚试了用同样的方法加载了Cesium官方提供的牛奶车模型,这个模型就没有产生偏移,和点出现在了一样的位置 地图坐标系的话不是都是cartesian3吗,为啥会有差别···

admin#35年前 0 个赞

@ysak11 #2楼

你都模型是不是有问题啊,其实模型自己也会带一个xyz的,然后模型的基准点可能有问题,因为模型比较大,不是一个点。

c_yang#45年前 1 个赞

有的模型会带空间信息,有的模型不带空间信息,不带空间信息的模型可以设置实体对象的位置。带空间信息的模型只能去修改模型本身

添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册
Your Site Analytics