在Cesium地图系统开发中,后台出图的范围,在经纬度中是一个不规则的polygon,出来的图片形状也不是规则的,要在地图上贴上这张图,图片显示的范围也要契合到实际地图位置。
图片效果:
查找Cesium的接口,首先想到的是,用其中的polygon,按照经纬的范围,画一个polygon,再将图片做为材质material贴进去,不过代码写上后,发现的贴图在polygon中变形了,也没有贴到相应的地图位置。
经过测试,最后发现可以用Cesium的Rectangle实体对象,通过计算出不规则多边形四至范围的左上角坐标和右下角坐标,再将图片材质贴上去,地图上的位置还对上了。
具体的代码如下:
//添加一个rectangle的实体
viewer.entities.add({
name: '不规则贴图',
rectangle: {
//设置rectangle的四个坐标范围
coordinates: Cesium.Rectangle.fromDegrees(-92.0, 30.0, -76.0, 40.0),
//设置图片为材质
material: 'data/wind_500_2018030616_True.png',
//图片显示样式类型,有地形,模型或者两者,此效果可以达到贴图是沿
//地图弧面的
classificationType : Cesium.ClassificationType.TERRAIN
}
添加完成后,效果是贴地的,形状是长方形,但是空白地方显示是黑色,要在材质里单独设置一下,把材质属性改成如下:黑色没有了
material: new Cesium.ImageMaterialProperty({
image:'data/wind_500_2018030616_True.png',
transparent:true
})
//顺便设置个高度属性,可以离开地面显示
height:70000
完成后效果图: