主题
交互工厂
交互工厂用于创建用户与地图之间的交互行为。
G.draw(mode, options)
创建绘制交互。
ts
G.draw(mode: string, options?: DrawOptions): DrawInteraction| 参数 | 类型 | 描述 |
|---|---|---|
| mode | string | 绘制模式:'point'、'line'、'polygon' |
| options | object | 附加选项 |
返回对象属性:
| 属性/方法 | 类型 | 说明 |
|---|---|---|
| type | string | 固定为 'draw' |
| isActive() | boolean | 是否激活 |
| activate() | void | 激活绘制 |
| deactivate() | void | 停用绘制 |
| on(event, handler) | Disposable | 事件订阅 |
| remove() | void | 移除交互 |
ts
// 绘制点
const drawPoint = G.draw('point');
drawPoint.activate();
// 绘制线
const drawLine = G.draw('line');
// 绘制多边形
const drawPolygon = G.draw('polygon');
drawPolygon.activate();
console.log(drawPoint.isActive()); // true
drawPoint.deactivate();
console.log(drawPoint.isActive()); // falseG.edit(options)
创建编辑交互。
ts
G.edit(options?: EditOptions): EditInteraction| 参数 | 类型 | 描述 |
|---|---|---|
| mode | string | 编辑模式 |
| targets | Feature[] | 要编辑的要素列表 |
返回对象属性:
| 属性/方法 | 类型 | 说明 |
|---|---|---|
| type | string | 固定为 'edit' |
| isActive() | boolean | 是否激活 |
| activate() | void | 激活编辑 |
| deactivate() | void | 停用编辑 |
ts
const edit = G.edit();
edit.activate();
// ...
edit.deactivate();G.measure(mode, options)
创建量测交互。
ts
G.measure(mode: string, options?: MeasureOptions): MeasureInteraction| 参数 | 类型 | 描述 |
|---|---|---|
| mode | string | 量测模式:'distance'(距离)、'area'(面积) |
| options | object | 附加选项 |
返回对象属性:
| 属性/方法 | 类型 | 说明 |
|---|---|---|
| type | string | 固定为 'measure' |
| isActive() | boolean | 是否激活 |
| start() | void | 开始量测 |
| stop() | void | 停止量测 |
| getResult() | 获取量测结果 |
ts
// 距离量测
const measureDist = G.measure('distance');
measureDist.start();
console.log(measureDist.isActive()); // true
const result = measureDist.getResult();
console.log(result.value, result.unit);
measureDist.stop();
// 面积量测
const measureArea = G.measure('area');
measureArea.start();G.snap(options)
创建吸附交互。
ts
G.snap(options?: SnapOptions): SnapInteraction| 参数 | 类型 | 描述 |
|---|---|---|
| layers | Array<string | Layer> | 吸附目标图层 |
| tolerance | number | 吸附容差(像素) |
返回对象属性:
| 属性/方法 | 类型 | 说明 |
|---|---|---|
| activate() | void | 激活吸附 |
| deactivate() | void | 停用吸附 |
| on(event, handler) | Disposable | 事件订阅 |
| remove() | void | 移除交互 |
ts
const snap = G.snap({ tolerance: 10 });
snap.activate();G.popup(options)
创建弹窗。
ts
G.popup(options?: PopupOptions): Popup| 参数 | 类型 | 描述 |
|---|---|---|
| position | [number, number] | 初始坐标 |
| content | string | HTMLElement | 内容(HTML 字符串或 DOM 元素) |
返回对象属性/方法:
| 方法 | 参数 | 说明 |
|---|---|---|
| isOpen() | - | 是否打开 |
| setPosition(coord) | [number, number] | 设置坐标 |
| setContent(content) | string | HTMLElement | 设置内容 |
| open() | - | 打开弹窗 |
| close() | - | 关闭弹窗 |
| getElement() | - | 获取 DOM 元素 |
ts
const popup = G.popup({ content: '<b>Hello</b>' });
popup.setPosition([116, 39]);
popup.open();
console.log(popup.isOpen()); // true
popup.close();
console.log(popup.isOpen()); // falseG.tooltip(options)
创建提示框。
ts
G.tooltip(options?: TooltipOptions): Tooltip返回对象属性/方法:
| 方法 | 参数 | 说明 |
|---|---|---|
| setContent(content) | string | 设置内容 |
| show(coord, text) | [number, number], string | 显示提示 |
| hide() | - | 隐藏提示 |
ts
const tooltip = G.tooltip();
tooltip.setContent('详细信息');
tooltip.show([116, 39], '点位信息');
tooltip.hide();