Skip to content

Commit dcaf7f5

Browse files
committed
fix:多语言&优化
1 parent 0fd5961 commit dcaf7f5

9 files changed

Lines changed: 584 additions & 85 deletions

File tree

README.md

Lines changed: 97 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,26 @@
55
## QuickStart
66

77
```js
8-
import Jx3boxMap from '@jx3box/jx3box-map/src/components/Map.vue
8+
import Jx3boxMap from "@jx3box/jx3box-map";
99
```
1010

1111
```html
1212
<jx3box-map :map-id="8" :datas="datas"></jx3box-map>
1313
```
1414

15+
PVX 风格与响应式总览:
16+
17+
```html
18+
<jx3box-map
19+
:map-id="8"
20+
:datas="datas"
21+
mode="responsive"
22+
locale="zh-CN"
23+
:trim-border="true"
24+
:zoomable="true"
25+
/>
26+
```
27+
1528
```js
1629
export default {
1730
name: "App",
@@ -64,6 +77,60 @@ export default {
6477
或者给组件传入focus属性,值是要展示的点位在datas内的索引。
6578
如果不通过任何方式指定要展示的点位会直接取第一个。
6679

80+
### mode
81+
82+
新版布局模式,可选:
83+
84+
- `overview`:完整总览;
85+
- `responsive`:完整总览并随容器宽度重新计算,推荐普通 Web 和手机使用;
86+
- `focus`:使用 1024 × 896 内部画布展示点位附近区域。
87+
88+
未传入 `mode` 时继续读取旧的 `overview`,旧调用无需迁移。
89+
90+
### locale / messages / translator / labels
91+
92+
组件内置 `zh-CN``zh-TW``en-US``vi` 四语言,并统一回退到 `zh-CN`
93+
94+
```html
95+
<jx3box-map locale="en-US" />
96+
```
97+
98+
`locale` 未传入时会读取宿主 `vue-i18n` 的当前 locale,再读取 `<html lang>`
99+
100+
可以通过 `messages` 覆盖内置语言:
101+
102+
```js
103+
const messages = {
104+
"en-US": {
105+
loadError: "Custom map error",
106+
},
107+
};
108+
```
109+
110+
也可以传入 `translator(key, params, locale)` 对接宿主翻译函数,或通过 `labels` 直接覆盖单个固定文案。组件固定词条位于 `jx3boxMap` 命名空间;地图名、NPC、点位标题和说明仍由业务数据提供。
111+
112+
### trim-border / trim-ratio
113+
114+
`trim-border` 用于裁去地图图片上下透明边,默认关闭;`trim-ratio` 默认 `0.05`。裁边在公共组件内部完成,宿主不需要监听 `resize` 后反向修改轮播高度。
115+
116+
### zoomable / wheel-zoom
117+
118+
- `zoomable`:是否允许缩放;
119+
- `wheel-zoom`:是否允许鼠标滚轮缩放,只有同时启用 `zoomable` 才生效;
120+
121+
普通总览地图的滚轮缩放默认关闭,避免地图阻断页面正常滚动。为兼容旧版地图工具,启用 `map-draggable` 的焦点地图继续保留滚轮和双指缩放;业务也可以通过 `zoomable / wheel-zoom` 显式控制。
122+
123+
### aspect-ratio
124+
125+
响应式总览比例,默认 `1024 / 896`。容器宽度变化由 `ResizeObserver` 监听,同一帧内合并测量,并且只有尺寸实际改变时才触发 `resize`
126+
127+
### map-label / point-label-key
128+
129+
用于无障碍名称和点位交互:
130+
131+
- `map-label`:地图区域与图片替代文本;
132+
- `point-label-key`:点位对象中作为可访问名称的字段,默认 `title`
133+
67134
### map-draggable
68135

69136
是否允许用户拖动地图,仅在overview为false时生效。
@@ -79,11 +146,6 @@ export default {
79146

80147
用户拖拽点位之后是否让地图跟随被拖拽的点居中。
81148

82-
### trim-border
83-
84-
是否移除地图边框。
85-
西山居的中地图图片是有边框的,默认不展示边框,如果需要展示可以设为`true`
86-
87149
### show-toolbar
88150

89151
是否展示地图控制条,默认不展示。
@@ -109,6 +171,23 @@ export default {
109171

110172
用户拖拽点位之后触发
111173

174+
### resize
175+
176+
容器尺寸实际变化后触发,保持兼容数组参数:`[width, height]`
177+
178+
### error
179+
180+
比例数据或地图图片加载失败时触发:
181+
182+
```js
183+
{
184+
type: "scales" | "image",
185+
error,
186+
}
187+
```
188+
189+
原有 `sub-switch` 保持不变。
190+
112191
## 方法
113192

114193
### pointPosition(point) -> {left: ..., bottom: ...}
@@ -139,3 +218,15 @@ export default {
139218
#### popover
140219

141220
如果使用默认的point,可以用popover这个slot来替换的默认的popover里的内容
221+
222+
### error
223+
224+
替换默认错误状态,插槽参数为 `{ error, retry }`
225+
226+
## 响应式建议
227+
228+
- 桌面焦点浏览使用 `mode="focus"` 并给宿主容器明确高度;
229+
- 平板和手机使用 `mode="responsive"`
230+
- 手机触控按钮按 `720px` 断点增大,页面不会产生横向滚动;
231+
- 组件遵循 `prefers-reduced-motion`
232+
- 宿主应设置 `min-width: 0`,不要再覆盖 `.c-map__inner` 等内部结构。

index.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
11
import Jx3boxMap from "./src/components/Map.vue";
22

3+
export {
4+
JX3BOX_MAP_I18N_NAMESPACE,
5+
createJx3boxMapTranslator,
6+
interpolateJx3boxMapMessage,
7+
jx3boxMapMessages,
8+
normalizeJx3boxMapLocale,
9+
} from "./src/i18n/messages";
10+
311
export default Jx3boxMap;

0 commit comments

Comments
 (0)