cesium(普通贴图作为底图,给多边形等加贴图)

文章介绍了如何在Cesium中使用TIF格式图片作为带有地理位置信息的底图,以及如何将普通图片如jpg、png设置为矩形或多边形材质,通过调整坐标来匹配地图。第一种方法简单直接,第二种方法需要手动调整位置。同时,提供了获取点击位置经纬度的代码辅助调整。
该文章已生成可运行项目,

cesium把图片作为底图,可以采用下面两种方式:
(1)采用TIF格式的图片,这种格式的图片带有位置信息,可作为底图,并且可以自动地位到图片拍摄的位置,导入方式一般需要把图片上传到服务器或cesium官网的My Assets中,然后根据提示的代码即可引入。
在这里插入图片描述

 const layer=viewer.imageryLayers.addImageryProvider( new Cesium.SingleTileImageryProvider({
            url: "图片url",
        }));

(2)使用普通图片(jpg、png等)创建一个矩形或多边形,把图片作为作为材质给矩形,但要自己调整角点位置对齐。

var cby_bg_data=[
  119.252677,31.937594, 0,
  119.252086,31.922213, 0,
  119.284185,31.921710, 0,
  119.284234,31.936937, 0,

];
var cby_bg= viewer.entities.add({
  id:"fixed_bg",
  name: "背景",
  polygon: {
    hierarchy: Cesium.Cartesian3.fromDegreesArrayHeights(cby_bg_data),
    perPositionHeight: true,
    material: new Cesium.ImageMaterialProperty({
      image:"../sglImgs/cby_bg.jpg"
    }),//new Cesium.Color(0.29, 0.85, 0.89, 0.5), //Cesium.Color.PALETURQUOISE.withAlpha(0.5),
    outline: false,
    //outlineColor: Cesium.Color.BLUE,
    outlineWidth: 2, //很多电脑当宽度>1时,没用
  }
});

在这里插入图片描述
这种方式调整位置比较麻烦,需要慢慢调,可通过输出点击的经纬度来尝试。

//==点击获取经纬度
var handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
handler.setInputAction(function (event) {
  var earthPosition = viewer.camera.pickEllipsoid(
    event.position,
    viewer.scene.globe.ellipsoid
  );
  var cartographic = Cesium.Cartographic.fromCartesian(
    earthPosition,
    viewer.scene.globe.ellipsoid,
    new Cesium.Cartographic()
  );
  var lat = Cesium.Math.toDegrees(cartographic.latitude);
  var lng = Cesium.Math.toDegrees(cartographic.longitude);
  var height = cartographic.height;
  console.log(lng.toFixed(6) + "\n" + lat.toFixed(6));
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);

最后:
把图片作为材质贴图的方式有两种,可参看这个说明:材质使用

本文章已经生成可运行项目
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值