Skip to content

Commit 48b516c

Browse files
committed
perf: 从oss获取scales数据
1 parent a4971c9 commit 48b516c

6 files changed

Lines changed: 59 additions & 19 deletions

File tree

README.md

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,14 +51,35 @@ export default {
5151
| content | 悬浮框显示的内容 | 否 | |
5252
| focus | 是否展示这个点 | 否 | true | Boolean,多个数据focus都为true时只会展示第一个 |
5353
54-
### overview
54+
### overview 总览模式
5555
5656
默认情况下,overview为true。
57-
组件会尝试展示所有的点位,并且把整个地图缩放以适应容器大小。
58-
如果希望不缩放地图,仅展示一部分点位可以设置overview为false。
59-
组件将会只展示特定的点位,可以在datas内的对应对象设置focus为true或者给组件传入focus属性,该属性应该是要展示的点位在datas内的索引。
57+
58+
**当overview为true时:**
59+
组件会把整个地图缩放以适应容器大小,尝试展示完整的地图与点位。
60+
61+
**当overview为false时:**
62+
组件会以地图的原尺寸展示地图,仅展示以特定点位为`中心`的周围一部分点位。
63+
可以在datas内的对应对象设置focus为true指定中心点位。
64+
或者给组件传入focus属性,值是要展示的点位在datas内的索引。
6065
如果不通过任何方式指定要展示的点位会直接取第一个。
6166
67+
### map-draggable
68+
69+
是否允许用户拖动地图,仅在overview为false时生效。
70+
此时用户可以通过拖动地图来改变可见区域
71+
即默认会以focus点为中心,但是用户可以拖动来改变展示的区域
72+
73+
### point-draggable
74+
75+
是否允许用户拖动点位。需要`:datas.sync="points"`
76+
此时用户可以通过拖动点位来改变点位的坐标。
77+
78+
### trim-border
79+
80+
是否移除地图边框。
81+
西山居的中地图图片是有边框的,默认不展示边框,如果需要展示可以设为`true`
82+
6283
## slots
6384
6485
允许一些部分的自定义slot。

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@jx3box/jx3box-map",
3-
"version": "0.1.4",
3+
"version": "0.1.5",
44
"description": "JX3BOX Game Map",
55
"scripts": {
66
"serve": "vue-cli-service serve",

src/App.vue

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<template>
22
<div id="app">
3-
<jx3box-map :map-id="8" :datas="datas" :overview="false"></jx3box-map>
3+
<jx3box-map :map-id="8" :datas="datas" :overview="true"></jx3box-map>
44
</div>
55
</template>
66

@@ -42,7 +42,7 @@ export default {
4242
display: flex;
4343
justify-content: center;
4444
align-items: center;
45-
width: 240px;
46-
height: 240px;
45+
width: 1000px;
46+
height: 1000px;
4747
}
4848
</style>

src/components/Map.vue

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,17 @@
3131

3232
<script>
3333
import jx3boxData from "@jx3box/jx3box-common/data/jx3box.json";
34-
import mapScales from "../data/map_scales.json";
34+
import { getMapScales } from "../service/data";
3535
3636
export default {
3737
name: "Jx3boxMap",
3838
props: {
39+
// 地图ID
3940
mapId: {
4041
type: Number,
4142
default: 1,
4243
},
44+
// 点位数据
4345
datas: {
4446
type: Array,
4547
default: () => [],
@@ -52,13 +54,20 @@ export default {
5254
type: Number,
5355
default: undefined,
5456
},
57+
hiddenBoarder: {
58+
type: Boolean,
59+
default: false,
60+
},
61+
draggable: {
62+
type: Boolean,
63+
default: true,
64+
},
5565
},
56-
data() {
57-
return {
58-
outerWidth: 0,
59-
outerHeight: 0,
60-
};
61-
},
66+
data: () => ({
67+
outerWidth: 0,
68+
outerHeight: 0,
69+
mapScales: {},
70+
}),
6271
computed: {
6372
// 内层容器宽高
6473
innerWidth() {
@@ -120,7 +129,7 @@ export default {
120129
},
121130
// 地图ID、名称、尺寸、图片等
122131
subId() {
123-
let scales = mapScales[this.mapId];
132+
let scales = this.mapScales[this.mapId];
124133
if (!scales || Object.keys(scales) <= 1) return 0;
125134
let _sub = 0;
126135
let _subScale = 0;
@@ -139,16 +148,19 @@ export default {
139148
return _sub;
140149
},
141150
mapName() {
142-
return mapScales[this.mapId][this.subId].Name;
151+
return this.mapScales[this.mapId]?.[this.subId]?.Name;
143152
},
144153
mapScale() {
145-
return mapScales[this.mapId][this.subId];
154+
return this.mapScales[this.mapId]?.[this.subId];
146155
},
147156
mapImg() {
148157
return `${jx3boxData.__imgPath}map/maps/map_${this.mapId}_${this.subId}.png`;
149158
},
150159
},
151160
mounted() {
161+
getMapScales().then((data) => {
162+
this.mapScales = data;
163+
});
152164
this.$nextTick(function () {
153165
this.updateSize();
154166
window.addEventListener("resize", this.updateSize);
@@ -160,6 +172,7 @@ export default {
160172
methods: {
161173
pointPosition(item) {
162174
const scale = this.mapScale;
175+
if (!scale) return { left: 0, bottom: 0 };
163176
const Width = scale.Width / scale.Scale;
164177
const Height = scale.Height / scale.Scale;
165178
const left = ((item.x - scale.StartX) / Width) * this.innerWidth;

src/data/map_scales.json

Lines changed: 0 additions & 1 deletion
This file was deleted.

src/service/data.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import JX3BOX from "@jx3box/jx3box-common/data/jx3box.json";
2+
3+
const { __imgPath } = JX3BOX;
4+
5+
export const getMapScales = () => {
6+
return fetch(`${__imgPath}/map/data/map_scales.json`).then((res) => res.json());
7+
};

0 commit comments

Comments
 (0)