返回值结构
函数返回一个对象,包含两个关键属性:baseMaps 和 hasTerrain,具体含义如下:
1. baseMaps: map.getBasemaps(true)
-
来源:调用
map.getBasemaps(true)方法(Mars3D 地图实例的底图信息获取方法),传入true表示返回经过框架处理的结构化底图数据。 -
数据格式:一个数组,每个元素代表一个底图(或底图组),包含前端渲染所需的核心信息,例如:
id:底图唯一标识(对应config.json中底图配置的id),用于切换底图时定位。name:底图名称(如 “天地图影像”“高德电子”),用于 UI 显示。options:底图的配置信息,包含icon(图标路径)、type(底图类型,如tdt/gaode)等。show:布尔值,标识该底图当前是否处于显示状态(用于高亮选中的底图)。isAdded:布尔值,标识该底图是否已添加到地图中。
-
用途:在前端组件(
manage-basemap/index.vue)中,通过遍历该数组渲染底图卡片列表,展示底图名称和图标,并根据show属性高亮当前选中的底图。
2. hasTerrain: map.hasTerrain
- 来源:直接获取地图实例的
hasTerrain属性(Mars3D 地图的地形状态属性)。 - 含义:布尔值(
true/false),表示当前地图是否启用了地形效果。 - 用途:在前端组件中绑定到 “显示地形” 开关(
mars-switch),用于展示和控制地形的启用状态(通过changeTerrain函数修改该值)。
实际应用场景
在 manage-basemap/index.vue 组件中,getLayers 函数的调用流程如下:
- 组件挂载时(
onMounted),调用mapWork.getLayers()获取底图和地形数据。 - 使用返回的
baseMaps数组渲染底图卡片列表(通过v-for循环,展示每个底图的图标和名称)。 - 根据
baseMaps中show为true的底图id,设置当前激活的底图(active.value = m.id),实现高亮效果。 - 将
hasTerrain绑定到 “显示地形” 开关(chkHasTerrain.value),同步显示当前地形状态,并通过开关的change事件触发changeTerrain函数更新地形状态。
export function getLayers() {
return {
baseMaps: map.getBasemaps(true),
hasTerrain: map.hasTerrain
}
}
getLayers 函数是底图控制模块的 “数据中枢”,通过整合底图列表(baseMaps)和地形状态(hasTerrain),为前端组件提供了统一的数据接口,实现了底图切换、地形显示等交互功能与地图实例状态的同步。