tds-map-methods 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +390 -11
- package/index.cjs +18 -24
- package/index.js +7605 -25720
- package/package.json +1 -1
- package/types/components/map/methods/arrowLayer.d.ts +2 -2
- package/types/components/map/methods/config.d.ts +32 -0
- package/types/components/map/methods/createIsoline.d.ts +2 -2
- package/types/components/map/methods/createMic.d.ts +3 -3
- package/types/components/map/methods/fcstLayer.d.ts +4 -4
- package/types/components/map/methods/fcstLayer2.d.ts +2 -2
- package/types/components/map/methods/girdLayer.d.ts +2 -2
- package/types/components/map/methods/index.d.ts +6 -1
- package/types/components/map/methods/isolineLayer.d.ts +1 -1
- package/types/components/map/methods/layer.d.ts +3 -1
- package/types/components/map/methods/layerRequest.d.ts +7 -0
- package/types/components/map/methods/request.d.ts +21 -0
- package/types/components/map/methods/tdsRequest.d.ts +49 -0
- package/types/components/map/methods/typhoonLayer.d.ts +7 -4
- package/types/{request/typhoon.d.ts → components/map/methods/typhoonRequest.d.ts} +2 -3
- package/types/components/map/methods/utils.d.ts +4 -2
- package/types/components/map/methods/windShaft.d.ts +1 -1
- package/types/components/map/methods/wmsLayer.d.ts +1 -1
- package/types/typings/layer.d.ts +4 -0
- package/types/serivce/api/tds.d.ts +0 -16
- package/types/serivce/request/index.d.ts +0 -2
package/README.md
CHANGED
|
@@ -1,21 +1,400 @@
|
|
|
1
1
|
# tds-map-methods
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
面向浏览器应用的 TDS / OpenLayers 地图渲染工具包,提供气象栅格、等值线、风场、WMS、台风路径和 TDS 数据请求能力。
|
|
4
|
+
|
|
5
|
+
## 功能特性
|
|
6
|
+
|
|
7
|
+
- 初始化 OpenLayers 地图并统一管理业务图层
|
|
8
|
+
- 支持色斑图、网格值、等值线、风场、风羽、WMS、MICAPS 和台风路径
|
|
9
|
+
- 支持图层加载、更新、显隐、移除和经纬度取值
|
|
10
|
+
- 内置 TDS 目录、NCSS、XML、图片及台风数据请求方法
|
|
11
|
+
- 提供 ESM、CommonJS 和完整 TypeScript 类型声明
|
|
4
12
|
|
|
5
13
|
## 安装
|
|
6
14
|
|
|
7
|
-
|
|
15
|
+
~~~bash
|
|
8
16
|
npm install tds-map-methods ol @turf/turf dayjs d3-contour lodash-es
|
|
9
|
-
|
|
17
|
+
~~~
|
|
18
|
+
|
|
19
|
+
也可以使用 pnpm:
|
|
20
|
+
|
|
21
|
+
~~~bash
|
|
22
|
+
pnpm add tds-map-methods ol @turf/turf dayjs d3-contour lodash-es
|
|
23
|
+
~~~
|
|
24
|
+
|
|
25
|
+
## 必要引入
|
|
26
|
+
|
|
27
|
+
在宿主项目的入口文件中引入 OpenLayers 样式。npm 包不会自动注入全局 CSS:
|
|
28
|
+
|
|
29
|
+
~~~ts
|
|
30
|
+
import "ol/ol.css";
|
|
31
|
+
~~~
|
|
32
|
+
|
|
33
|
+
然后根据实际功能从包中引入方法。初始化地图至少需要引入 `initMap`;如需设置服务地址,同时引入 `configureMapMethods`:
|
|
34
|
+
|
|
35
|
+
~~~ts
|
|
36
|
+
import { configureMapMethods, initMap } from "tds-map-methods";
|
|
37
|
+
~~~
|
|
38
|
+
|
|
39
|
+
加载和管理业务图层时,通常需要以下方法:
|
|
40
|
+
|
|
41
|
+
~~~ts
|
|
42
|
+
import {
|
|
43
|
+
clearAllLayers,
|
|
44
|
+
getValueByLonLat,
|
|
45
|
+
initMap,
|
|
46
|
+
loadLayer,
|
|
47
|
+
removeLayerById,
|
|
48
|
+
toggleVisibleById,
|
|
49
|
+
updateLayer,
|
|
50
|
+
} from "tds-map-methods";
|
|
51
|
+
~~~
|
|
52
|
+
|
|
53
|
+
如果使用 TypeScript,可以按需引入 OpenLayers 的地图类型:
|
|
54
|
+
|
|
55
|
+
~~~ts
|
|
56
|
+
import type { Map } from "ol";
|
|
57
|
+
~~~
|
|
58
|
+
|
|
59
|
+
注意:`ol`、`@turf/turf`、`dayjs`、`d3-contour` 和 `lodash-es` 是 peer dependencies,必须安装在宿主项目中,但通常不需要在业务文件中手动逐个 `import`。
|
|
60
|
+
|
|
61
|
+
## 快速开始
|
|
62
|
+
|
|
63
|
+
页面中需要准备一个具有明确宽高的地图容器:
|
|
64
|
+
|
|
65
|
+
~~~html
|
|
66
|
+
<div id="map" style="width: 100%; height: 600px"></div>
|
|
67
|
+
~~~
|
|
68
|
+
|
|
69
|
+
初始化配置并创建地图:
|
|
70
|
+
|
|
71
|
+
~~~ts
|
|
72
|
+
import { configureMapMethods, initMap, loadLayer } from "tds-map-methods";
|
|
73
|
+
|
|
74
|
+
configureMapMethods({
|
|
75
|
+
serviceBaseUrl: "/server",
|
|
76
|
+
serviceAuthorization: "Basic ...",
|
|
77
|
+
ncssBaseUrl: "/ncss/grid",
|
|
78
|
+
requestTimeout: 60_000,
|
|
79
|
+
imageSize: 2048,
|
|
80
|
+
typhoonServiceBaseUrl: "/typhoon-server",
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
const map = await initMap("map", {
|
|
84
|
+
center: [118.8, 32.1],
|
|
85
|
+
zoom: 5,
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
loadLayer(map, {
|
|
89
|
+
id: "temperature",
|
|
90
|
+
title: "温度",
|
|
91
|
+
label: "Temperature",
|
|
92
|
+
type: "gradual",
|
|
93
|
+
filePath: "/data/temperature.nc",
|
|
94
|
+
show: true,
|
|
95
|
+
config: {
|
|
96
|
+
extent: [70, 15, 140, 55],
|
|
97
|
+
mode: "gradient",
|
|
98
|
+
legendType: "gradual",
|
|
99
|
+
legend: [
|
|
100
|
+
{ name: "低温", scope: [-40, 0], color: "#3b82f6" },
|
|
101
|
+
{ name: "适中", scope: [0, 25], color: "#22c55e" },
|
|
102
|
+
{ name: "高温", scope: [25, 50], color: "#ef4444" },
|
|
103
|
+
],
|
|
104
|
+
opacity: 0.85,
|
|
105
|
+
zIndex: 10,
|
|
106
|
+
},
|
|
107
|
+
});
|
|
108
|
+
~~~
|
|
109
|
+
|
|
110
|
+
也可以在初始化地图时传入运行配置:
|
|
111
|
+
|
|
112
|
+
~~~ts
|
|
113
|
+
const map = await initMap("map", {
|
|
114
|
+
center: [118.8, 32.1],
|
|
115
|
+
zoom: 5,
|
|
116
|
+
mapMethodsConfig: {
|
|
117
|
+
serviceBaseUrl: "/server",
|
|
118
|
+
ncssBaseUrl: "/ncss/grid",
|
|
119
|
+
},
|
|
120
|
+
});
|
|
121
|
+
~~~
|
|
122
|
+
|
|
123
|
+
## 全局配置
|
|
124
|
+
|
|
125
|
+
| 参数 | 类型 | 默认值 | 说明 |
|
|
126
|
+
| --- | --- | --- | --- |
|
|
127
|
+
| `serviceBaseUrl` | `string` | `""` | WMS 和 TDS 请求的服务前缀 |
|
|
128
|
+
| `serviceAuthorization` | `string` | `""` | TDS 请求默认 Authorization 请求头 |
|
|
129
|
+
| `ncssBaseUrl` | `string` | `"/ncss/grid"` | NCSS `dataset.xml` 请求前缀 |
|
|
130
|
+
| `requestTimeout` | `number` | `60000` | 请求超时时间,单位毫秒 |
|
|
131
|
+
| `imageSize` | `number` | `2048` | 源图片请求的最大宽高 |
|
|
132
|
+
| `typhoonServiceBaseUrl` | `string` | `serviceBaseUrl` | 台风 JSON 服务前缀 |
|
|
133
|
+
| `typhoonDataPath` | `string` | `data/script/mdp_typhoon/output` | 台风数据目录 |
|
|
134
|
+
| `typhoonAuthorization` | `string` | `""` | 台风请求 Authorization 请求头 |
|
|
135
|
+
|
|
136
|
+
配置相关方法:
|
|
137
|
+
|
|
138
|
+
~~~ts
|
|
139
|
+
import {
|
|
140
|
+
configureMapMethods,
|
|
141
|
+
getMapMethodsConfig,
|
|
142
|
+
resetMapMethodsConfig,
|
|
143
|
+
} from "tds-map-methods";
|
|
144
|
+
~~~
|
|
145
|
+
|
|
146
|
+
## 支持的图层类型
|
|
147
|
+
|
|
148
|
+
`loadLayer` 的 `type` 可传单个字符串或字符串数组。
|
|
149
|
+
|
|
150
|
+
| 类型 | 用途 |
|
|
151
|
+
| --- | --- |
|
|
152
|
+
| `gradual` | 栅格色斑图 |
|
|
153
|
+
| `grid` | 网格数值 |
|
|
154
|
+
| `isoline` / `contour` | 等值线或等值面 |
|
|
155
|
+
| `uv` | U/V 风场 |
|
|
156
|
+
| `windShaft` | 风羽图 |
|
|
157
|
+
| `arrow` | 箭头图层 |
|
|
158
|
+
| `micaps` | MICAPS 数据图层 |
|
|
159
|
+
| `wms` | WMS 图层 |
|
|
160
|
+
| `typhoon` | 台风路径图层 |
|
|
161
|
+
|
|
162
|
+
组合类型示例:
|
|
163
|
+
|
|
164
|
+
~~~ts
|
|
165
|
+
loadLayer(map, {
|
|
166
|
+
...layerOptions,
|
|
167
|
+
type: ["uv", "grid", "windShaft"],
|
|
168
|
+
});
|
|
169
|
+
~~~
|
|
170
|
+
|
|
171
|
+
## 图层管理
|
|
172
|
+
|
|
173
|
+
~~~ts
|
|
174
|
+
import {
|
|
175
|
+
clearAllLayers,
|
|
176
|
+
getLoadedLayerOptions,
|
|
177
|
+
getValueByLonLat,
|
|
178
|
+
removeLayerById,
|
|
179
|
+
toggleVisibleById,
|
|
180
|
+
updateLayer,
|
|
181
|
+
updateWmsLayerColor,
|
|
182
|
+
} from "tds-map-methods";
|
|
183
|
+
|
|
184
|
+
toggleVisibleById("temperature", false);
|
|
185
|
+
|
|
186
|
+
const currentLayer = getLoadedLayerOptions().find(
|
|
187
|
+
(item) => item.id === "temperature",
|
|
188
|
+
);
|
|
189
|
+
if (currentLayer) {
|
|
190
|
+
updateLayer({ ...currentLayer, time: "2026-10-27T00:00:00Z" });
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
const value = await getValueByLonLat(map, "temperature", 118.8, 32.1);
|
|
194
|
+
console.log(value);
|
|
195
|
+
|
|
196
|
+
removeLayerById("temperature");
|
|
197
|
+
clearAllLayers();
|
|
198
|
+
~~~
|
|
199
|
+
|
|
200
|
+
常用图层方法:
|
|
201
|
+
|
|
202
|
+
| 方法 | 说明 |
|
|
203
|
+
| --- | --- |
|
|
204
|
+
| `loadLayer(map, options)` | 加载业务图层 |
|
|
205
|
+
| `updateLayer(options)` | 使用相同 `id` 更新图层参数 |
|
|
206
|
+
| `toggleVisibleById(id, visible)` | 控制业务图层显隐 |
|
|
207
|
+
| `removeLayerById(id)` | 删除指定业务图层 |
|
|
208
|
+
| `clearAllLayers()` | 清空全部业务图层 |
|
|
209
|
+
| `getLoadedLayerOptions()` | 获取已加载图层的配置 |
|
|
210
|
+
| `getValueByLonLat(map, id, lon, lat, smooth?)` | 查询指定经纬度的栅格值 |
|
|
211
|
+
| `updateWmsLayerColor(id, options)` | 更新 WMS 色带参数 |
|
|
212
|
+
|
|
213
|
+
## 绘制方法说明
|
|
214
|
+
|
|
215
|
+
### 推荐方式:通过 `loadLayer` 绘制
|
|
216
|
+
|
|
217
|
+
业务项目优先使用 `loadLayer(map, options)`。它会根据 `options.type` 自动选择对应绘制实现,并将图层加入统一管理列表,使 `updateLayer`、`removeLayerById` 和 `toggleVisibleById` 可以正常工作。
|
|
218
|
+
|
|
219
|
+
~~~ts
|
|
220
|
+
loadLayer(map, {
|
|
221
|
+
id: "temperature",
|
|
222
|
+
title: "温度",
|
|
223
|
+
label: "Temperature",
|
|
224
|
+
type: "isoline",
|
|
225
|
+
filePath: "/data/temperature.nc",
|
|
226
|
+
config: {
|
|
227
|
+
extent: [70, 15, 140, 55],
|
|
228
|
+
mode: "discrete",
|
|
229
|
+
legendType: "legend",
|
|
230
|
+
legend: [
|
|
231
|
+
{ name: "0℃", scope: [0], color: "#3b82f6" },
|
|
232
|
+
{ name: "10℃", scope: [10], color: "#22c55e" },
|
|
233
|
+
{ name: "20℃", scope: [20], color: "#ef4444" },
|
|
234
|
+
],
|
|
235
|
+
showIsolineValue: true,
|
|
236
|
+
isolineSmoothness: 1,
|
|
237
|
+
},
|
|
238
|
+
});
|
|
239
|
+
~~~
|
|
240
|
+
|
|
241
|
+
### 底层绘制方法
|
|
242
|
+
|
|
243
|
+
底层方法适合需要自行控制数据地址、缓存、预加载或中断请求的场景。直接调用底层方法创建的图层不会完整进入 `loadLayer` 的统一管理流程,应使用对应的删除方法进行清理。
|
|
244
|
+
|
|
245
|
+
| 方法 | 用途 | 必要参数与注意事项 |
|
|
246
|
+
| --- | --- | --- |
|
|
247
|
+
| `createIsoline(map, options)` | 从栅格数据生成等值线或等值面 | 必须提供 `id`、`url`、`config.legend`;支持 `authorization` 和 `AbortSignal` |
|
|
248
|
+
| `preloadIsoline(options, timeList)` | 提前生成多个时次的等值线缓存 | `timeList` 应与实际数据时次一致,适合播放动画前预加载 |
|
|
249
|
+
| `addIsolineLayer(options)` | 将已经生成的等值线 GeoJSON 加到地图 | 适用于调用方已经持有几何数据的高级场景 |
|
|
250
|
+
| `toggleIsolineLayer(map, id, visible)` | 控制底层等值线图层显隐 | `id` 必须与创建时保持一致 |
|
|
251
|
+
| `removeIsolineLayer(map, id)` | 删除底层等值线图层并使未完成请求失效 | 直接调用 `createIsoline` 时应使用此方法删除 |
|
|
252
|
+
| `createMicContour(map, options)` | 请求并解析 MICAPS 文件,绘制等值线、填色和符号 | 必须提供 `className`、`filePath`;支持授权和请求取消 |
|
|
253
|
+
| `removeMicContour(map, className)` | 删除同一 MICAPS 数据集创建的全部图层 | `className` 必须与创建时一致 |
|
|
254
|
+
| `renderFcstCanvasByWebGPU(options)` | 将二维栅格数组渲染为 `HTMLCanvasElement` | 需要宽高、原始/平滑数组、阈值和 RGBA 色表;自动按 WebGL2、WebGPU、Canvas2D 顺序降级 |
|
|
255
|
+
|
|
256
|
+
直接生成等值线示例:
|
|
257
|
+
|
|
258
|
+
~~~ts
|
|
259
|
+
import { createIsoline, removeIsolineLayer } from "tds-map-methods";
|
|
260
|
+
|
|
261
|
+
const controller = new AbortController();
|
|
262
|
+
|
|
263
|
+
await createIsoline(map, {
|
|
264
|
+
id: "temperature-isoline",
|
|
265
|
+
url: "/server/path/to/grid-image",
|
|
266
|
+
authorization: "Basic ...",
|
|
267
|
+
signal: controller.signal,
|
|
268
|
+
config: {
|
|
269
|
+
legend: [
|
|
270
|
+
{ name: "0℃", scope: [0], color: "#3b82f6" },
|
|
271
|
+
{ name: "10℃", scope: [10], color: "#22c55e" },
|
|
272
|
+
{ name: "20℃", scope: [20], color: "#ef4444" },
|
|
273
|
+
],
|
|
274
|
+
isolineSmooth: true,
|
|
275
|
+
isolineSmoothness: 1,
|
|
276
|
+
showIsolineValue: true,
|
|
277
|
+
},
|
|
278
|
+
});
|
|
279
|
+
|
|
280
|
+
// 取消尚未完成的请求。
|
|
281
|
+
controller.abort();
|
|
282
|
+
|
|
283
|
+
// 删除直接创建的等值线图层。
|
|
284
|
+
removeIsolineLayer(map, "temperature-isoline");
|
|
285
|
+
~~~
|
|
286
|
+
|
|
287
|
+
MICAPS 绘制示例:
|
|
288
|
+
|
|
289
|
+
~~~ts
|
|
290
|
+
import { createMicContour, removeMicContour } from "tds-map-methods";
|
|
291
|
+
|
|
292
|
+
await createMicContour(map, {
|
|
293
|
+
className: "micaps-weather",
|
|
294
|
+
filePath: "/server/path/to/micaps.txt",
|
|
295
|
+
showText: true,
|
|
296
|
+
showFillcolor: true,
|
|
297
|
+
showIsoline: true,
|
|
298
|
+
showPointMarkers: true,
|
|
299
|
+
});
|
|
300
|
+
|
|
301
|
+
removeMicContour(map, "micaps-weather");
|
|
302
|
+
~~~
|
|
303
|
+
|
|
304
|
+
## TDS 数据请求
|
|
305
|
+
|
|
306
|
+
包内请求方法基于浏览器 `fetch`,支持 Authorization、超时和 `AbortSignal`。
|
|
307
|
+
|
|
308
|
+
~~~ts
|
|
309
|
+
import {
|
|
310
|
+
fetchTdsGet,
|
|
311
|
+
fetchXMLFromUrl,
|
|
312
|
+
getMenuList,
|
|
313
|
+
getVariableMinMax,
|
|
314
|
+
getXmlData,
|
|
315
|
+
resolveLayerLoadOptions,
|
|
316
|
+
} from "tds-map-methods";
|
|
317
|
+
|
|
318
|
+
const menu = await getMenuList("/catalog.xml");
|
|
319
|
+
|
|
320
|
+
const dataset = await getXmlData({
|
|
321
|
+
filePath: "/data/temperature.nc",
|
|
322
|
+
});
|
|
323
|
+
|
|
324
|
+
const range = await getVariableMinMax(
|
|
325
|
+
"/data/temperature.nc",
|
|
326
|
+
"Temperature",
|
|
327
|
+
{ north: 55, south: 15, east: 140, west: 70 },
|
|
328
|
+
);
|
|
329
|
+
~~~
|
|
330
|
+
|
|
331
|
+
其他请求方法包括 `fetchTdsResponse`、`fetchXmlData`、`fetchTxtOrJson`、`fetchExcel`、`fetchImageBase64` 和 `fetchTdsImageBase64`。
|
|
332
|
+
|
|
333
|
+
### 接口方法说明
|
|
334
|
+
|
|
335
|
+
| 方法 | 返回值 | 主要用途 |
|
|
336
|
+
| --- | --- | --- |
|
|
337
|
+
| `fetchTdsResponse(url, options)` | `Promise<Response>` | 校验 HTTP 状态后返回原始响应,适合调用方自行读取响应内容 |
|
|
338
|
+
| `fetchTdsGet<T>(url, params, authorization, options)` | `Promise<T>` | 发起带查询参数的 GET 请求,可通过 `responseType` 指定返回类型 |
|
|
339
|
+
| `fetchXMLFromUrl(url, authorization, options)` | `Promise<string>` | 获取 XML 文本 |
|
|
340
|
+
| `fetchTxtOrJson(url, params, authorization, options)` | `Promise<string>` | 获取文本或 JSON 字符串 |
|
|
341
|
+
| `fetchExcel(url, authorization, options)` | `Promise<ArrayBuffer>` | 下载 Excel 等二进制文件 |
|
|
342
|
+
| `fetchImageBase64(...)` | `Promise<string>` | 获取图片并转换为 Base64/Data URL |
|
|
343
|
+
| `getMenuList(url, authorization, options)` | 菜单类型及目录项数组 | 读取 TDS catalog 目录 |
|
|
344
|
+
| `getXmlData(options)` | 数据范围、时次及文件列表 | 读取 NCSS `dataset.xml` 元数据 |
|
|
345
|
+
| `getVariableMinMax(...)` | `{ min, max }` | 查询指定变量、范围和时次的最小值与最大值 |
|
|
346
|
+
| `resolveLayerLoadOptions(menu, options)` | `Layer.Config \| null` | 将菜单配置补全为可传给 `loadLayer` 的图层配置 |
|
|
347
|
+
| `getTyphoonList(options)` | 台风列表 | 获取可用台风编号和基础信息 |
|
|
348
|
+
| `getTyphoonDetail(number, options)` | 台风详情 | 获取实况与预报路径点 |
|
|
349
|
+
|
|
350
|
+
接口配置优先级通常为:本次方法参数或图层参数 → `configureMapMethods` 全局配置 → 包内默认值。需要取消页面卸载或条件变化时的请求,可以传入 `AbortSignal`:
|
|
351
|
+
|
|
352
|
+
~~~ts
|
|
353
|
+
const controller = new AbortController();
|
|
354
|
+
|
|
355
|
+
const request = getXmlData({
|
|
356
|
+
filePath: "/data/temperature.nc",
|
|
357
|
+
signal: controller.signal,
|
|
358
|
+
});
|
|
359
|
+
|
|
360
|
+
// 页面卸载或条件发生变化时取消。
|
|
361
|
+
controller.abort();
|
|
362
|
+
|
|
363
|
+
try {
|
|
364
|
+
await request;
|
|
365
|
+
} catch (error) {
|
|
366
|
+
if (error instanceof DOMException && error.name === "AbortError") {
|
|
367
|
+
// 请求被主动取消。
|
|
368
|
+
} else {
|
|
369
|
+
throw error;
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
~~~
|
|
373
|
+
|
|
374
|
+
请求失败、超时或响应状态异常时,Promise 会被拒绝。业务代码应根据需要使用 `try/catch`,并在组件卸载时取消不再使用的请求。
|
|
375
|
+
|
|
376
|
+
## 台风数据
|
|
377
|
+
|
|
378
|
+
~~~ts
|
|
379
|
+
import { getTyphoonDetail, getTyphoonList } from "tds-map-methods";
|
|
380
|
+
|
|
381
|
+
const list = await getTyphoonList();
|
|
382
|
+
const detail = await getTyphoonDetail(list[0].num_nati);
|
|
383
|
+
~~~
|
|
384
|
+
|
|
385
|
+
台风请求可单独覆盖 `serviceBaseUrl`、`dataPath`、`authorization` 和 `signal`。
|
|
10
386
|
|
|
11
|
-
##
|
|
387
|
+
## CommonJS
|
|
12
388
|
|
|
13
|
-
|
|
14
|
-
|
|
389
|
+
~~~js
|
|
390
|
+
const { initMap, loadLayer } = require("tds-map-methods");
|
|
391
|
+
~~~
|
|
15
392
|
|
|
16
|
-
|
|
17
|
-
loadLayer(map, layerOptions);
|
|
18
|
-
removeLayerById(layerOptions.id);
|
|
19
|
-
```
|
|
393
|
+
## 使用注意
|
|
20
394
|
|
|
21
|
-
|
|
395
|
+
- 本包用于浏览器环境,依赖 DOM、Canvas、WebGL / WebGPU 和 OpenLayers。
|
|
396
|
+
- 调用 `initMap` 前,地图容器必须已挂载并具有非零宽高。
|
|
397
|
+
- 本包不会读取宿主项目的 Vite 环境变量,请通过 `configureMapMethods` 显式传入服务地址。
|
|
398
|
+
- 跨域请求需要服务端正确配置 CORS;Authorization 请求头也必须被服务端允许。
|
|
399
|
+
- `Layer.Config`、台风数据和请求方法均提供 TypeScript 类型提示。
|
|
400
|
+
- `ol`、`@turf/turf`、`dayjs`、`d3-contour` 和 `lodash-es` 为 peer dependencies,需要由宿主项目安装。
|