> **本文回答**：OSM / ArcGIS Online 等国外底图的加载。

## 一、OpenStreetMap（OSM）

WGS84 + Web 墨卡托，最常用的免费底图。

```js
map.addSource("osm", {
  type: "raster",
  tileSize: 256,
  tiles: [
    "https://a.tile.openstreetmap.org/{z}/{x}/{y}.png",
    "https://b.tile.openstreetmap.org/{z}/{x}/{y}.png",
    "https://c.tile.openstreetmap.org/{z}/{x}/{y}.png"
  ]
});
map.addLayer({ id: "osm", type: "raster", source: "osm" });
```

OSM 公共服务有请求频率限制，生产环境应自建镜像。

## 二、国际矢量瓦片服务

如使用第三方国际矢量瓦片服务（需要对应 access token）。

`transformRequest` 是 **Map 构造选项**（`MapOptions.transformRequest`），不是 `setStyle` 的参数——`setStyle(style, options)` 只认 `diff` / `localIdeographFontFamily` / `localFontFamily`，传 `transformRequest` 会被静默忽略。正确写法：

```js
const map = new vjmap.Map({
  container: "map",
  style: "https://第三方服务/styles/streets-v12.json",
  transformRequest: (url) => {
    if (!/access_token=/.test(url)) return { url: `${url}?access_token=${THIRD_PARTY_TOKEN}` };
    return { url };
  },
  center: [0, 0],
  zoom: 12
});
```

或直接 raster：

```js
map.addSource("international-streets", {
  type: "raster",
  tileSize: 256,     // 按服务实际瓦片尺寸写；不写按默认 512 处理
  tiles: [
    `https://第三方栅格瓦片服务/{z}/{x}/{y}.png?token=${TILE_TOKEN}`
  ]
});
```

## 三、ArcGIS Online

```js
map.addSource("arcgis-world", {
  type: "raster",
  tileSize: 256,
  tiles: [
    "https://services.arcgisonline.com/arcgis/rest/services/World_Street_Map/MapServer/tile/{z}/{y}/{x}"
  ]
});
```

注意 ArcGIS 的 XYZ 顺序可能是 `z/y/x`。

## 四、Google Maps（非商业使用受限）

Google 无官方 XYZ 接口，一般用其 JS SDK；通过 vjmap 叠加需要跨界方案（不建议生产）。

## 五、国外底图的 CAD 叠加

由于都是 WGS84，不用 `webMapType`（默认 WGS84）：

```js
const wmsUrl = svc.wmsTileUrl({
  mapid: cadId, layers,
  srs: "EPSG:3857",
  crs: "EPSG:32649"   // CAD 的 EPSG（例如 UTM Zone 49）
});
```

## 六、Stadia / Carto / Stamen 等替代 OSM

免费的矢量瓦片 / 栅格瓦片：

- `https://tiles.stadiamaps.com/tiles/alidade_smooth/{z}/{x}/{y}.png?api_key=...`
- `https://cartodb-basemaps-{s}.global.ssl.fastly.net/light_all/{z}/{x}/{y}.png`（引擎不替换 `{s}`，作 `tiles` 时展开成 a/b/c 多个 URL）

注意它们的 API key 要求 / 商业用途许可。

## 七、常见坑

1. **国内访问慢** → OSM 等国外服务国内可能被墙或延迟高；考虑 CDN 或私有化代理。
2. **投影不匹配** → 都是 Web 墨卡托（EPSG:3857）兼容 vjmap；EPSG:4326 经纬度瓦片网格引擎加载不了（无配置可绕过），需换 3857 瓦片或走后端 `webMapUrl` 重投影。
3. **第三方 access token 暴露** → 生产环境设置 URL scoping（referrer 白名单）。
4. **ArcGIS XYZ 顺序** → 许多 ArcGIS tile 是 `z/y/x`（跟 TMS 类似）；不要搞错。
