> **本文回答**：`vjmap.MapOpenWay` 的三种模式（Memory / GeomRender 栅格 / GeomRender 矢量）差异、优劣、选型。

## 一、三种打开方式

| 名称 | 枚举 | 说明 | 前端 style 对应 |
|---|---|---|---|
| 内存模式（栅格） | `vjmap.MapOpenWay.Memory` | 请求新瓦片时后端重新打开图，在内存中渲染 | `svc.rasterStyle()` |
| 几何渲染（栅格） | `vjmap.MapOpenWay.GeomRender` | 第一次把图入空间数据库，之后从库里查询生成栅格瓦片 | `svc.rasterStyle()` |
| 几何渲染（矢量） | `vjmap.MapOpenWay.GeomRender` | 同上，但以矢量瓦片（MVT）输出；前端可改样式 | `svc.vectorStyle()` |

## 二、选型

| 场景 | 推荐 |
|---|---|
| 图形仅临时查看（每次都是新图） | **内存** |
| 经常需要打开同一张图 | **几何渲染（栅格）** |
| 需要前端自定义图层样式 / 条件过滤 | **几何渲染（矢量）** |
| 需要做空间查询（矩形内所有 TEXT / 相交 / 距离） | **几何渲染**（内存模式无空间库：不能用 `conditionQueryFeature`，只有表达式查询与点/矩形选择，几何只给外包矩形） |
| 图很大（>50MB） | 栅格比矢量友好（矢量 tile 可能较大） |

## 三、优缺点对比

| 指标 | 内存 | 几何（栅）| 几何（矢）|
|---|---|---|---|
| 第一次打开速度 | 快 | 慢（首次入库） | 慢（首次入库） |
| 以后打开速度 | 中（有可能重开图） | 秒开 | 秒开 |
| 占用存储 | 零 | 一份空间库 | 一份空间库 |
| 空间查询 | 不支持 | 支持 | 支持 |
| 前端改样式 | 不支持 | 不支持 | **支持** |
| 保留 CAD 块结构 | 是 | 否（块实体被打散） | 否 |

**打散块**：几何渲染方式下，图块会打散为独立实体；通过 `objectid` 可以恢复关联关系（同一个块内的实体共享前缀 objectid）。

## 四、模式间相互切换

SDK 层没有直接 API 切换"同一个 mapid 的打开方式"。切换流程：

1. **内存 → 几何渲染**：在 [vjmap 云端管理平台](https://vjmap.com/app/cloud/) 打开该图，选择栅格/矢量，再打开。
2. **几何渲染 → 内存**：管理平台选择"内存"打开；如需彻底删除空间库数据，点"清空缓存数据"。

## 五、代码对照

### 内存（栅格）

```js
const res = await svc.openMap({ mapid, mapopenway: vjmap.MapOpenWay.Memory });
const map = new vjmap.Map({
  container: "map",
  style: svc.rasterStyle(),          // 内存方式只能栅格
  ...
});
```

### 几何渲染（栅格）

```js
const res = await svc.openMap({ mapid, mapopenway: vjmap.MapOpenWay.GeomRender });
const map = new vjmap.Map({
  container: "map",
  style: svc.rasterStyle(),
  ...
});
```

### 几何渲染（矢量）

```js
const res = await svc.openMap({ mapid, mapopenway: vjmap.MapOpenWay.GeomRender });
const map = new vjmap.Map({
  container: "map",
  style: svc.vectorStyle(),          // 矢量瓦片
  ...
});
// 前端可调用 map.enableVectorLayerHoverHighlight 做 hit-test
```

## 六、常见坑

1. **内存打开的图想用空间查询** → 不支持。改成几何渲染。
2. **前端拼样式时误把 `rasterStyle` 和 `vectorStyle` 搞反** → 白屏或瓦片报 `404`。
3. **首开几何渲染图等待时间长** → 这是在做空间库入库；加 loading UI，或者提前预热。
4. **切换模式不走管理台改配置** → 仅改前端枚举没用，后端不会转库。
