Skip to content

二维地图核心 (2D Core)

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

useMap

初始化一个二维地图实例,并返回为全局上下文。

参数

NameTypeDescription
targetString图层id,跟el一样,传一个就行
projectionProjection坐标系
centernumber[]地图中心坐标
zoomNumber当前缩放层级
minZoomNumber最小层级
maxZoomNumber最大层级
baseLayersBaseLayerOptions天地图底图配置

baseLayers

NameTypeDescription
targetString图层id,跟el一样,传一个就行
mapTypeString天地图类型:'ver'
zIndexNumber图层层级
minZoomNumber天地图最小层级
maxZoomNumber最大层级
typescript
import { useMap } from 'jgis/2d';
const { addMark, removeLayer } =  useMap('id', options);

全局上下文获取钩子

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

onMapReady

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

参数

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

示例代码:

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

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

getMapContext

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

参数

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

返回值 返回 Asyncify<MapContext>

示例代码:

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

const asyncCtx = getMapContext('id');
// 取值变为异步链式调用防止卡死
asyncCtx.getZoom().then(zoom => console.log('当前在', zoom))

getMapContextAsync

最直观好用的顶层异步查找方法。返回包裹了原生态所有 MapContext 方法集合组合的 Promise 对象,使用 await 解组后和 useMap 使用上毫无差别。

参数

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

返回值 返回 Promise<MapContext>

示例代码:

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

async function locateUser() {
    // 等到系统初始化完了之后拿出来用
    const { flyTo } = await getMapContextAsync('id');
    flyTo([104.06, 30.65], { zoom: 16 });
}

Released under the MIT License.