C1——supermap获取对象的中心位置

 需求:

背景:

原理:

举例:

代码:

结果:


需求:

根据后台传过来的对象id进行定位。这里是后台传过来的id不是前端交互得来的,所以就不要给我说点击对象后能获取到对象的位置了。

背景:

网上好多问这个问题的也看了supermap的技术问答社区,给出的答案是在数据属性表里面增加坐标字段,但是一个场景的对象往往成百上千所以你懂的!

原理:

想办法拿到要定位的对象的属性。

举例:

我要定位的对象id是【1045】,所在图层的图层名为【layer1】,至于为什么会一直图层名就不解释了,超图的数据格式:数据源——数据集——SMID;呈现后图层——数据集——ID。不懂得自己去补课。

代码:

let layerName = "layer1"
let id = "1045";
let selectObj = null;

let layer = this.$globe.scene.layers.find(layerName);
let pickObjects = layer._context._pickObjects;
for(let obj in pickObjects){
  if(pickObjects[obj].id == id){
    selectObj = pickObjects[obj];
    console.log(selectObj );
    let cartesian3 = selectObj.primitive._position;
    let cartographic=ellipsoid.cartesianToCartographic(cartesian3);
    let lon = Cesium.Math.toDegrees(cartographic.longitude);
    let lat = Cesium.Math.toDegrees(cartographic.latitude);
    let height = cartographic.height;
    console.log( lon,lat,height );//位置一
    console.log( selectObj.primitive.lon, selectObj.primitive.lat);//位置二
    break; 
  }
}

结果:

这里能拿到两个位置但都是一样的。坐标经纬度都给你了 接下来的操作就不用说了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值