地图地表

在 SDK 中提供了一些修改地图地表的属性,可以达到地图透明、地图地形展示等一些效果。

1.数据结构

viewingMode:'global' 模式下,即在地球场景下,可以通过设置场景配置的map属性中的ground属性来自定义地图地形的相关设置。其数据结构如下:

interface Map {
  ground:string | MapGround
}

interface MapGround{
  //地图地形
  elevation: string;
  // 地图地表透明度
  opacity: number;
  // 地图地表颜色
  surfaceColor: [number, number, number];
  //导航约束,指定相对于地面的导航约束,即是否可以导航到地面以下
  navigationConstraint: NavigationConstraint;
}

//默认为 "stay-above"
type NavigationConstraint="stay-above" | "none"
注:ground 属性可以是 str 类型,也可以是 obj 类型。如果设置字符串,字符串就会被识别为 ground 对象中的 elevation 属性值,即会直接识别为地图地形。如果设置对象类型就会识别为上述数据结构。

2. 地图地形

要为地球场景添加地形图层也就是所谓高程,就需要在 map 对象中设置 ground 属性,可设置的值有 'world-elevation''world-topobathymetry'

代码
const scene = new ubm.Scene('app', {
  viewingMode: 'global',
  map: {
    basemap: "satellite",
    ground: "world-elevation"
  },
  camera: {
    position: {
      latitude: 23.523469098336386,
      longitude: 113.4017664853119,
      z: 600
    },
    tilt: 80
  }
})

3. 地表透明

想要使地球达到一定的透明效果,可以设置 map 对象下 ground 中的 opacity 属性,opacity 属性的值的范围在0-1之间,0为完全透明,1为完全不透明。

代码
const scene = new ubm.Scene('app', {
  viewingMode: 'global',
  map: {
    basemap: "satellite",
    ground: {
      opacity:0.2
    }
  }
})