@maptec/cli 1.0.0

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.
Files changed (43) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +284 -0
  3. package/bin/maptec.js +2 -0
  4. package/dist/chunk-K574OFFK.js +122 -0
  5. package/dist/chunk-K574OFFK.js.map +1 -0
  6. package/dist/cli.js +899 -0
  7. package/dist/cli.js.map +1 -0
  8. package/dist/store-ZU7HLXCV.js +18 -0
  9. package/dist/store-ZU7HLXCV.js.map +1 -0
  10. package/package.json +47 -0
  11. package/skills/README.md +30 -0
  12. package/skills/jsapi-skills/README.md +60 -0
  13. package/skills/jsapi-skills/SKILL.md +145 -0
  14. package/skills/jsapi-skills/package.json +31 -0
  15. package/skills/jsapi-skills/references/controls.md +195 -0
  16. package/skills/jsapi-skills/references/events.md +222 -0
  17. package/skills/jsapi-skills/references/geocoding.md +184 -0
  18. package/skills/jsapi-skills/references/map-style.md +123 -0
  19. package/skills/jsapi-skills/references/map.md +154 -0
  20. package/skills/jsapi-skills/references/marker.md +136 -0
  21. package/skills/jsapi-skills/references/operate.md +138 -0
  22. package/skills/jsapi-skills/references/overlay.md +311 -0
  23. package/skills/jsapi-skills/references/place-search.md +411 -0
  24. package/skills/jsapi-skills/references/poi-categories.md +123 -0
  25. package/skills/jsapi-skills/references/popup.md +146 -0
  26. package/skills/jsapi-skills/references/re-geocoding.md +183 -0
  27. package/skills/jsapi-skills/references/routing.md +347 -0
  28. package/skills/jsapi-skills/references/track.md +240 -0
  29. package/skills/jsapi-skills/scripts/validate_jsapi_skill.py +160 -0
  30. package/skills/webapi-skills/README.md +73 -0
  31. package/skills/webapi-skills/SKILL.md +63 -0
  32. package/skills/webapi-skills/package.json +32 -0
  33. package/skills/webapi-skills/references/direction-api.md +175 -0
  34. package/skills/webapi-skills/references/geocoding.md +195 -0
  35. package/skills/webapi-skills/references/ip-location.md +87 -0
  36. package/skills/webapi-skills/references/matrix-api.md +149 -0
  37. package/skills/webapi-skills/references/nearby-search.md +223 -0
  38. package/skills/webapi-skills/references/places.md +239 -0
  39. package/skills/webapi-skills/references/quick-start-cn.md +219 -0
  40. package/skills/webapi-skills/references/reverse-geocoding.md +157 -0
  41. package/skills/webapi-skills/references/suggest.md +111 -0
  42. package/skills/webapi-skills/references/text-search.md +282 -0
  43. package/skills/webapi-skills/scripts/validate_webapi_skill.py +158 -0
@@ -0,0 +1,123 @@
1
+ # 样式切换参考
2
+
3
+ 当用户要求白天/黑夜地图、暗色地图、亮色地图、增加按钮切换模式时,使用本参考。
4
+
5
+ ## 能力范围
6
+
7
+ - 初始化时通过 `style` 加载地图样式。
8
+ - 运行时通过 `map.setStyle(styleID)` 切换地图样式。
9
+ - 增加自定义按钮、开关或业务 UI 触发样式切换。
10
+ - 切换前保存地图中心点、缩放、旋转、倾斜等视图状态,切换后恢复。
11
+
12
+ ## 样式配置
13
+
14
+ 不要伪造真实 `style_id`。如果项目已有样式常量,优先复用项目常量;如果没有,生成代码时使用清晰的占位常量。
15
+
16
+ ```js
17
+ const MAP_STYLES = {
18
+ day: "YOUR_DAY_STYLE_ID",
19
+ night: "YOUR_NIGHT_STYLE_ID"
20
+ };
21
+ ```
22
+
23
+ 初始化黑夜地图:
24
+
25
+ ```js
26
+ Maptec.apiKey = "YOUR_MAPTEC_KEY";
27
+
28
+ const map = new Maptec.Map({
29
+ container: "map",
30
+ style: MAP_STYLES.night,
31
+ center: [103.8198, 1.3521],
32
+ zoom: 12,
33
+ bearing: 0,
34
+ pitch: 0
35
+ });
36
+ ```
37
+
38
+ ## 运行时切换
39
+
40
+ `maptec-js` 的 `Map` 类公开了 `setStyle(styleID)`。切换前保存视角,切换后使用 `jumpTo` 恢复。
41
+
42
+ ```js
43
+ function switchMapStyle(map, styleID) {
44
+ const viewState = {
45
+ center: map.center,
46
+ zoom: map.zoom,
47
+ bearing: map.bearing,
48
+ pitch: map.pitch
49
+ };
50
+
51
+ map.setStyle(styleID);
52
+ map.once("style.load", () => {
53
+ map.jumpTo(viewState);
54
+ });
55
+ }
56
+ ```
57
+
58
+ 如果项目里样式加载完成事件名称不同,可在项目适配层里包装,但不要把不存在的 SDK 方法写进对外文档。
59
+
60
+ ## 按钮切换模板
61
+
62
+ ```js
63
+ let currentStyle = "day";
64
+
65
+ const button = document.createElement("button");
66
+ button.type = "button";
67
+ button.textContent = "切换昼夜";
68
+ button.className = "map-style-toggle";
69
+
70
+ button.addEventListener("click", () => {
71
+ currentStyle = currentStyle === "day" ? "night" : "day";
72
+ switchMapStyle(map, MAP_STYLES[currentStyle]);
73
+ });
74
+
75
+ document.body.appendChild(button);
76
+ ```
77
+
78
+ ## 与覆盖物配合
79
+
80
+ 切换底图样式可能导致样式资源重载。生成代码时要注意:
81
+
82
+ - 业务覆盖物如在样式切换后丢失,应在样式加载完成后重新添加。
83
+ - 自定义图片图标可能需要重新 `map.addImage`。
84
+ - 切换前保存业务覆盖物数组,必要时统一恢复。
85
+
86
+ ```js
87
+ const overlays = [];
88
+
89
+ function addBusinessOverlay(overlay) {
90
+ map.addOverlay(overlay);
91
+ overlays.push(overlay);
92
+ }
93
+
94
+ function restoreOverlays() {
95
+ overlays.forEach((overlay) => {
96
+ if (!map.getOverlayById?.(overlay.id)) {
97
+ map.addOverlay(overlay);
98
+ }
99
+ });
100
+ }
101
+ ```
102
+
103
+ ## 常见意图映射
104
+
105
+ | 用户说法 | 实现方式 |
106
+ |---|---|
107
+ | “将地图切换为黑夜模式” | 使用黑夜样式初始化或调用 `map.setStyle(nightStyleID)` |
108
+ | “增加一个按钮切换白天和黑夜地图” | 创建业务按钮,维护 `day/night` 状态,调用 `switchMapStyle` |
109
+ | “默认白天,晚上自动黑夜” | 根据时间或业务状态选择 `MAP_STYLES.day/night` |
110
+
111
+ ## 注意事项
112
+
113
+ - 不要把覆盖物颜色变化当作底图样式切换。
114
+ - 不要硬编码未知 `style_id`。
115
+ - 不要为了切换样式丢失用户当前视角。
116
+ - 切换底图样式后关注自定义图标、业务图层和覆盖物是否需要恢复。
117
+
118
+ ## Agent 规则
119
+
120
+ - 初始化样式通过 `style` 参数设置;运行时样式切换使用 `map.setStyle(styleID)`。
121
+ - 切换样式前应保存中心点、缩放、旋转和倾斜等视角状态,切换后恢复。
122
+ - 白天/黑夜样式 ID 或样式地址必须来自已确认配置,不要编造真实 `style_id`。
123
+ - 若项目有统一样式常量或封装,优先使用项目已有命名。
@@ -0,0 +1,154 @@
1
+ # 地图加载能力参考
2
+
3
+ 当用户要求创建地图实例、初始化加载地图、生成某个城市或国家的地图时,使用本参考。本文件只覆盖功能 **地图加载**。
4
+
5
+ ## 能力入口
6
+
7
+ | 用户需求 | 优先实现 |
8
+ |---|---|
9
+ | “生成一个新加坡的地图” | 创建 `new Maptec.Map(...)`,设置容器、样式、中心点和缩放级别 |
10
+ | “初始化地图” | 设置 `Maptec.apiKey`,创建地图实例,监听 `load` |
11
+ | “打开某个地点的地图” | 明确中心点坐标;若只有地名,先使用地理编码能力 |
12
+
13
+ ## 初始化地图
14
+
15
+ ```js
16
+ Maptec.apiKey = "YOUR_MAPTEC_KEY";
17
+
18
+ const map = new Maptec.Map({
19
+ container: "map",
20
+ style: "YOUR_STYLE_URL",
21
+ center: [103.8198, 1.3521],
22
+ zoom: 11.5,
23
+ bearing: 0,
24
+ pitch: 0
25
+ });
26
+
27
+ map.on("load", () => {
28
+ console.log("地图加载完成");
29
+ });
30
+ ```
31
+
32
+ ## MapOptions 常用字段
33
+
34
+ - `Maptec.apiKey`: 全局 API Key,必须在创建 `new Maptec.Map(...)` 前设置。
35
+ - `Maptec.workerCount` / `Maptec.workerUrl`: WebWorker 配置,如需调整也应在创建地图前设置。
36
+ - `container`: `HTMLElement | string`,地图容器。
37
+ - `style`: 地图样式地址或项目已确认的样式配置。
38
+ - `center`: 地图中心点,坐标顺序必须是 `[lng, lat]`。
39
+ - `zoom`: 地图缩放级别。
40
+ - `bearing`: 地图旋转角度。
41
+ - `pitch`: 地图倾斜角度。
42
+ - `minZoom` / `maxZoom`: 缩放范围。
43
+ - `minPitch` / `maxPitch`: 倾斜范围。
44
+ - `maxBounds`: 限制地图平移范围。
45
+ - `logoPosition` / `attributionPosition`: 内置标识和版权信息位置。
46
+
47
+ ## 坐标规则
48
+
49
+ Maptec JSAPI 地理坐标统一使用 `[lng, lat]`,不要使用 `[lat, lng]`。
50
+
51
+ ```js
52
+ const singapore = [103.8198, 1.3521];
53
+ ```
54
+
55
+ 常见坐标类型:
56
+
57
+ - `LngLatLike`: `Maptec.LngLat`、`[number, number]`、`{ longitude, latitude }`。
58
+ - `LngLatObject`: `{ longitude: number, latitude: number }`,常见于服务返回结果。
59
+ - `LngLatBoundsLike`: `[southWest, northEast]` 或 `[west, south, east, north]`。
60
+ - `PointLike`: 像素坐标,常用于 `panBy`、Marker 偏移、Popup 偏移。
61
+
62
+ ```js
63
+ function toLngLat(input) {
64
+ if (Array.isArray(input) && input.length >= 2) {
65
+ return [Number(input[0]), Number(input[1])];
66
+ }
67
+ if (input && typeof input === "object") {
68
+ const lng = input.longitude ?? input.lng ?? input.lon;
69
+ const lat = input.latitude ?? input.lat;
70
+ if (lng != null && lat != null) return [Number(lng), Number(lat)];
71
+ }
72
+ return null;
73
+ }
74
+ ```
75
+
76
+ ## 加载生命周期
77
+
78
+ 常用方法和事件:
79
+
80
+ - `map.on("load", handler)`:地图样式和资源加载完成。
81
+ - `map.once("load", handler)`:只监听一次加载完成。
82
+ - `map.on("error", handler)`:监听地图错误。
83
+ - `map.loaded()`:检查地图资源是否已加载。
84
+ - `map.destroy()` 或 `map.remove()`:运行时支持时销毁地图。
85
+
86
+ ```js
87
+ const onLoad = () => {
88
+ // 添加控件、Marker、矢量覆盖物、信息窗口、路线或检索结果。
89
+ };
90
+
91
+ const onError = (error) => {
92
+ console.error("地图加载错误", error);
93
+ };
94
+
95
+ map.on("load", onLoad);
96
+ map.on("error", onError);
97
+ ```
98
+
99
+ ## 常用区域默认中心和缩放
100
+
101
+ 当用户提到以下地区时,使用对应的默认中心点和缩放级别初始化地图。数据加载完成后通过 `fitBounds` 适配实际视口。
102
+
103
+ | 地区 | `center` | `zoom` |
104
+ |---|---|---|
105
+ | 新加坡 / Singapore | `[103.8198, 1.3521]` | `11.5` |
106
+ | 泰国 / Thailand | `[100.5018, 13.7563]` | `6` |
107
+ | 马来西亚 / Malaysia | `[101.6869, 3.1390]` | `6` |
108
+ | 日本 / Japan | `[138.2529, 36.2048]` | `5.5` |
109
+ | 韩国 / South Korea | `[127.9780, 36.5712]` | `7` |
110
+ | 印度尼西亚 / Indonesia | `[106.8650, -6.1754]` | `5.5` |
111
+ | 越南 / Vietnam | `[108.2772, 14.0583]` | `5.5` |
112
+ | 中国 / China | `[108.9402, 34.3416]` | `4.5` |
113
+ | 美国 / United States | `[-98.5795, 39.8283]` | `4` |
114
+ | 英国 / United Kingdom | `[-3.4360, 55.3781]` | `5.5` |
115
+ | 沙特阿拉伯 / Saudi Arabia | `[46.6753, 24.7136]` | `5.5` |
116
+ | 巴西 / Brazil | `[-47.8822, -15.7939]` | `4.5` |
117
+ | 墨西哥 / Mexico | `[-99.1332, 19.4326]` | `5.5` |
118
+
119
+ > **重要**:不要使用 `center: [0, 0]` 或 `center: [0.0, 0.0]`(大西洋"空岛")。必须根据用户提及的地区设置合理的默认中心。
120
+
121
+ ## 根据地名加载地图
122
+
123
+ 如果用户只给出地名,不能凭空编造精确坐标。可使用产品默认坐标,或先调用地理编码能力。
124
+
125
+ ```js
126
+ geocode.getLocation("Singapore", { region: "SG" }, (error, result) => {
127
+ if (error) {
128
+ console.error("地理编码失败", error);
129
+ return;
130
+ }
131
+
132
+ const location = result?.results?.[0]?.geometry?.location;
133
+ if (!location) return;
134
+
135
+ const center = [location.longitude, location.latitude];
136
+ map.flyTo({ center, zoom: 11.5 });
137
+ });
138
+ ```
139
+
140
+ ## 注意事项
141
+
142
+ - 坐标顺序始终使用 `[lng, lat]`。
143
+ - 设置 `Maptec.apiKey` 后再创建地图实例。
144
+ - 不要在应用代码中依赖 SDK 内部工具类型。
145
+ - 不要在地图实例创建前调用地图方法。
146
+ - 依赖地图资源的控件、Marker、矢量覆盖物、信息窗口、路线结果应在 `load` 后添加。
147
+ - 不要硬编码未知或未确认的 `style_id`。
148
+
149
+ ## Agent 规则
150
+
151
+ - 生成地图加载代码时,必须先确认容器、样式、中心点和缩放级别。
152
+ - 如果用户只提供地名,不要编造精确坐标;应使用地理编码能力或明确使用产品默认中心点。
153
+ - 地图相关控件、覆盖物、路线、检索结果和动画对象应在 `load` 后添加。
154
+ - 必须说明地图实例销毁方式,优先使用当前 SDK 支持的 `map.destroy()` 或 `map.remove()`。
@@ -0,0 +1,136 @@
1
+ # Marker 能力参考
2
+
3
+ 当用户要求添加 Marker、点击地图增加点标记、拖拽点标记、设置 Marker 样式或绑定 Marker 事件时,使用本参考。
4
+
5
+ ## 能力范围
6
+
7
+ - 创建 `Maptec.Marker`。
8
+ - 设置 Marker 位置、颜色、缩放、透明度、旋转、拖拽、偏移和锚点。
9
+ - 使用自定义 HTMLElement 作为 Marker 外观。
10
+ - 绑定 Marker 点击、拖拽等事件。
11
+ - 与 `Maptec.Popup` 组合,但信息窗口细节优先读取 `popup.md`。
12
+
13
+ ## 基础 Marker
14
+
15
+ ```js
16
+ const marker = new Maptec.Marker({
17
+ position: [103.8198, 1.3521]
18
+ });
19
+
20
+ map.addOverlay(marker);
21
+ ```
22
+
23
+ ## 点击地图增加 Marker
24
+
25
+ ```js
26
+ const markers = [];
27
+
28
+ const onMapClick = (event) => {
29
+ const position = Maptec.LngLat.convert(event.lngLat).toArray();
30
+ const marker = new Maptec.Marker({
31
+ position,
32
+ color: "#2563eb",
33
+ scale: 1
34
+ });
35
+
36
+ map.addOverlay(marker);
37
+ markers.push(marker);
38
+ };
39
+
40
+ map.on("click", onMapClick);
41
+
42
+ function cleanup() {
43
+ map.off("click", onMapClick);
44
+ markers.forEach((marker) => {
45
+ map.removeOverlay(marker);
46
+ marker.destroy?.();
47
+ });
48
+ }
49
+ ```
50
+
51
+ ## 样式和属性
52
+
53
+ 已确认的常用配置:
54
+
55
+ - `position`: `LngLatLike`
56
+ - `anchor`: `"center"`、`"top"`、`"bottom"`、`"left"`、`"right"`、`"top-left"`、`"top-right"`、`"bottom-left"`、`"bottom-right"`
57
+ - `color`: 默认 Marker 颜色
58
+ - `scale`: 缩放比例
59
+ - `draggable`: 是否可拖拽
60
+ - `element`: 自定义 HTMLElement
61
+ - `offset`: 像素偏移,接受 `PointLike`
62
+ - `opacity`: 透明度
63
+ - `rotation`: 旋转角度
64
+ - `popup`: 绑定的 `Maptec.Popup`
65
+
66
+ Marker 支持的辅助方法:
67
+
68
+ - `addClassName(className)`
69
+ - `removeClassName(className)`
70
+ - `togglePopup()`
71
+ - `destroy()`
72
+ - `isDestroyed()`
73
+
74
+ ```js
75
+ marker.position = [103.7764, 1.2966];
76
+ marker.draggable = true;
77
+ marker.opacity = 0.85;
78
+ marker.rotation = 45;
79
+ marker.offset = [0, -10];
80
+ ```
81
+
82
+ ## 事件绑定
83
+
84
+ ```js
85
+ const onMarkerClick = () => {
86
+ marker.togglePopup?.();
87
+ };
88
+
89
+ const onDragEnd = () => {
90
+ console.log("Marker 新位置", marker.position);
91
+ };
92
+
93
+ marker.on("click", onMarkerClick);
94
+ marker.on("dragend", onDragEnd);
95
+
96
+ function cleanupMarkerEvents() {
97
+ marker.off("click", onMarkerClick);
98
+ marker.off("dragend", onDragEnd);
99
+ }
100
+ ```
101
+
102
+ ## 数据绑定
103
+
104
+ 业务数据建议单独保存,不要只依赖 DOM 属性。
105
+
106
+ ```js
107
+ const markerRecords = places.map((place) => {
108
+ const marker = new Maptec.Marker({
109
+ position: [place.longitude, place.latitude],
110
+ color: "#16a34a"
111
+ });
112
+
113
+ map.addOverlay(marker);
114
+
115
+ return {
116
+ id: place.id,
117
+ data: place,
118
+ marker
119
+ };
120
+ });
121
+ ```
122
+
123
+ ## 注意事项
124
+
125
+ - Marker 坐标始终使用 `[lng, lat]`。
126
+ - 不要用 DOM 绝对定位伪造地图 Marker。
127
+ - 大量点位优先考虑 `GeoJSONOverlay`,不要无上限创建 Marker。
128
+ - Marker 绑定 Popup 时优先设置 Popup `offset`,避免遮挡 Marker。
129
+ - 组件卸载时移除 Marker,并取消事件监听。
130
+
131
+ ## Agent 规则
132
+
133
+ - Marker 必须通过 `new Maptec.Marker(...)` 创建,并通过 `map.addOverlay(marker)` 添加到地图。
134
+ - 点击地图添加 Marker 时,必须从 `event.lngLat` 获取坐标,不要使用屏幕像素点作为地理坐标。
135
+ - 大量点位或需要聚合时,优先使用 `GeoJSONOverlay`,不要生成无限 Marker。
136
+ - 绑定 Marker 事件时必须提供解绑逻辑,清理时移除 Marker 并取消事件监听。
@@ -0,0 +1,138 @@
1
+ # 地图交互能力参考
2
+
3
+ 当用户要求控制地图拖拽、缩放、旋转、倾斜、手势控制、交互开关或视角约束时,使用本参考。本文件只覆盖功能 **地图交互**。
4
+
5
+ ## 能力入口
6
+
7
+ | 用户需求 | 优先实现 |
8
+ |---|---|
9
+ | “禁止用户旋转或拖拽地图” | 设置 `dragRotate: false`、`dragPan: false` |
10
+ | “禁止滚轮缩放” | 设置 `scrollZoom: false` |
11
+ | “限制地图缩放范围” | 设置 `minZoom`、`maxZoom` |
12
+ | “限制地图倾斜” | 设置 `minPitch`、`maxPitch` |
13
+ | “限制地图拖动范围” | 设置 `maxBounds` |
14
+ | “运行时开关交互” | 更新 `map.interactive` |
15
+
16
+ ## 初始化时配置交互
17
+
18
+ ```js
19
+ const map = new Maptec.Map({
20
+ container: "map",
21
+ style: "YOUR_STYLE_URL",
22
+ center: [103.8198, 1.3521],
23
+ zoom: 12,
24
+ dragPan: false,
25
+ dragRotate: false,
26
+ scrollZoom: true,
27
+ doubleClickZoom: true,
28
+ keyboard: true,
29
+ boxZoom: true
30
+ });
31
+ ```
32
+
33
+ 已确认的常用交互字段:
34
+
35
+ - `boxZoom`
36
+ - `doubleClickZoom`
37
+ - `dragPan`
38
+ - `dragRotate`
39
+ - `keyboard`
40
+ - `scrollZoom`
41
+ - `cooperativeGestures`
42
+
43
+ `cooperativeGestures` 通常用于协作手势:桌面端缩放需要 Cmd/Ctrl,移动端需要双指操作。具体表现以 SDK 运行时为准。
44
+
45
+ ## 运行时开关交互
46
+
47
+ 使用 `map.interactive` 更新运行时交互配置。
48
+
49
+ ```js
50
+ map.interactive = {
51
+ ...map.interactive,
52
+ dragPan: false,
53
+ dragRotate: false,
54
+ scrollZoom: true,
55
+ doubleClickZoom: true,
56
+ keyboard: true,
57
+ boxZoom: true
58
+ };
59
+ ```
60
+
61
+ ## 视角约束
62
+
63
+ ```js
64
+ map.minZoom = 8;
65
+ map.maxZoom = 18;
66
+ map.minPitch = 0;
67
+ map.maxPitch = 60;
68
+
69
+ map.maxBounds = [
70
+ [103.6, 1.18],
71
+ [104.05, 1.48]
72
+ ];
73
+ ```
74
+
75
+ 清除平移范围:
76
+
77
+ ```js
78
+ map.maxBounds = null;
79
+ ```
80
+
81
+ ## 视角控制
82
+
83
+ 地图交互需求经常伴随主动移动视角,可使用相机方法:
84
+
85
+ - `jumpTo(options)`:立即切换视角。
86
+ - `easeTo(options)`:平滑过渡。
87
+ - `flyTo(options)`:飞行动画。
88
+ - `panTo(lngLatLike)`、`panBy(pointLike)`。
89
+ - `zoomIn()`、`zoomOut()`、`zoomTo(zoom)`。
90
+ - `rotateTo(bearing)`。
91
+ - `fitBounds(boundsLike, options?)`。
92
+
93
+ 常见相机参数:
94
+
95
+ - `center?: LngLatLike`
96
+ - `zoom?: number`
97
+ - `bearing?: number`
98
+ - `pitch?: number`
99
+ - `padding?: number | { top; right; bottom; left }`
100
+ - `duration?: number`
101
+ - `maxZoom?: number`,常用于 `fitBounds`
102
+
103
+ ```js
104
+ map.flyTo({
105
+ center: [103.7764, 1.2966],
106
+ zoom: 15,
107
+ bearing: 0,
108
+ pitch: 0,
109
+ duration: 1000
110
+ });
111
+ ```
112
+
113
+ ## 交互事件
114
+
115
+ 如果需求是监听用户交互,而不是开关交互能力,应读取 `events.md`。
116
+
117
+ 常见事件:
118
+
119
+ - `dragstart`、`drag`、`dragend`
120
+ - `zoomstart`、`zoom`、`zoomend`
121
+ - `rotatestart`、`rotate`、`rotateend`
122
+ - `pitchstart`、`pitch`、`pitchend`
123
+ - `movestart`、`move`、`moveend`
124
+
125
+ ## 注意事项
126
+
127
+ - 不要使用未在当前 Maptec 文档确认的交互字段。
128
+ - 禁止旋转通常需要关闭 `dragRotate`;如果触控旋转有单独字段,必须以 SDK 文档为准,不能编造。
129
+ - `maxBounds` 使用 `[southWest, northEast]`,每个点仍是 `[lng, lat]`。
130
+ - `PointLike` 是像素坐标,不是地理坐标;只用于偏移、`panBy` 等屏幕空间操作。
131
+ - 运行时更新交互时保留不需要改变的旧配置。
132
+
133
+ ## Agent 规则
134
+
135
+ - 交互开关只能使用已确认字段,例如 `dragPan`、`dragRotate`、`scrollZoom`、`doubleClickZoom`、`keyboard`、`boxZoom`。
136
+ - 用户要求禁止旋转或拖拽时,优先更新对应交互字段,不要用覆盖透明层阻止操作。
137
+ - 运行时修改交互配置时,应保留 `map.interactive` 中未修改的原有字段。
138
+ - 涉及触控手势或协作手势时,如 SDK 能力不明确,必须标记为 `需确认 Maptec 是否支持`。