Skip to content

三维地图核心 (3D Core)

jgis/3d 模块提供了基于 Cesium 的轻量级封装。

useMap

创建一个三维地图实例,并返回为全局上下文。

参数

NameTypeDescription
elString图层id
optionsMapOptions配置项

MapOptions

NameTypeDescription
terrainUrlString地形服务地址
minZoomNumber最小缩放
maxZoomNumber最大缩放
showFrameRateBoolean是否显示帧率
baseLayersBaseLayerOptions天地图底图配置

baseLayers

NameTypeDescription
tokenString天地图token
mapTypemapType天地图类型:'ver'
typescript
import { useMap } from 'jgis/3d';
const options = {
  terrainUrl: 'http://localhost:8080/terrain',
  minZoom: 0,
  maxZoom: 18,
  showFrameRate: true,
  baseLayers: {
      token: 'your token',
      mapType: 'ver'
    }
}
const { addMarker, removeLayer } =  useMap('id', options);

全局上下文获取钩子

除了在初始化时直接通过结构 useMap 获取到操作方法对象的上下文之外,JGIS 还在该入口内向外部暴露了以下独立函数方法,方便你在应用的其他独立模块下通过绑定时的 id 安全、跨组件地取用相关逻辑控制钩子。

onMapReady

回调等待钩子。用于确保地图上下文已经完全注册并且挂接可用后再去执行相应的业务逻辑函数。

参数

NameTypeDescription
idString创建地图容器时的唯一 ID
callbackFunction(ctx: MapContext) => void 地图准备好后触发的回调传参,包含了地图的所有 API 暴露。

示例代码:

typescript
import { onMapReady } from 'jgis/3d';

onMapReady('id', (ctx) => {
    // 此时确认地球模型已挂载完成,ctx.getInstance() 等一定有效
    ctx.flyHome();
});

getMapContext

获取当前地图绑定的运行时上下文工具。但需要注意的是它返回的是包裹了 Asyncify 的特化结构。在该解构下调用里面的所有方法返回全部都会变成 Promise 结构(等待其 resolve 后才能拿到真正的返回值)

参数

NameTypeDescription
idString创建地图容器时的唯一 ID

返回值 返回 Asyncify<MapContext>

示例代码:

typescript
import { getMapContext } from 'jgis/3d';

const asyncCtx = getMapContext('id');
// 哪怕是不支持 Promise 的底层普通方法也会被封装成响应异步链式调用防止卡死
asyncCtx.getCenter().then(center => console.log('焦点落点海拔', center.cameraZ))

getMapContextAsync

最直观好用的顶层异步查找方法。返回包裹了原生态所有 MapContext 方法集合组合的 Promise 对象,使用 await 取出后和原本的 useMap 解开的一模一样。

参数

NameTypeDescription
idString创建地图容器时的唯一 ID

返回值 返回 Promise<MapContext>

示例代码:

typescript
import { getMapContextAsync } from 'jgis/3d';

async function updateState() {
    // 跨越 Vue 文件也能随时取用所有 API 进行操作
    const { flyTo } = await getMapContextAsync('id');
    flyTo([104.06, 30.65, 3000]);
}

Released under the MIT License.