Skip to content

Commit 36f209f

Browse files
committed
fix(map): 没有点位时中心点问题
1 parent cd60176 commit 36f209f

3 files changed

Lines changed: 29 additions & 22 deletions

File tree

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/assets/map.less

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@
55
justify-content: center;
66
align-items: center;
77

8-
.u-map__wrapper {
8+
.c-map__wrapper {
99
overflow: hidden;
1010
position: relative;
1111
}
1212

13-
.u-map__inner {
13+
.c-map__inner {
1414
display: inline-block;
1515
position: absolute;
1616
border: 1px solid rgb(238, 238, 238);
@@ -20,14 +20,14 @@
2020
height: 100%;
2121
}
2222

23-
.u-map-img {
23+
.c-map-img {
2424
display: block;
2525
width: 100%;
2626
height: 100%;
2727
z-index: 1;
2828
}
2929

30-
.u-map-title__wrapper {
30+
.c-map-title__wrapper {
3131
z-index: 2;
3232
position: absolute;
3333

@@ -36,7 +36,7 @@
3636
display: flex;
3737
justify-content: center;
3838

39-
.u-map-title {
39+
.c-map-title {
4040
user-select: text;
4141
color: #efe;
4242
font-weight: bold;
@@ -45,11 +45,11 @@
4545
}
4646
}
4747

48-
.u-map-point__wrapper {
48+
.c-map-point__wrapper {
4949
z-index: 3;
5050
position: absolute;
5151

52-
.u-map-point {
52+
.c-map-point {
5353
display: block;
5454
width: 10px;
5555
height: 10px;
@@ -64,8 +64,8 @@
6464
}
6565
}
6666

67-
.u-map-point__popover {
68-
.u-map-title {
67+
.c-map-point__popover {
68+
.c-map-title {
6969
font-weight: bold;
7070
color: #aaa;
7171
}

src/components/Map.vue

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,25 @@
11
<template>
22
<div ref="component" class="c-map">
3-
<div ref="wrapper" class="u-map__wrapper" :style="wrapperSize">
4-
<div class="u-map__inner" :style="innerStyle">
5-
<img refs="img" class="u-map-img" :src="mapImg" draggable="false" />
6-
<div class="u-map-title__wrapper" v-if="overview">
3+
<div ref="wrapper" class="c-map__wrapper" :style="wrapperSize">
4+
<div class="c-map__inner" :style="innerStyle">
5+
<img refs="img" class="c-map-img" :src="mapImg" draggable="false" />
6+
<div class="c-map-title__wrapper" v-if="overview">
77
<slot name="title" v-bind:title="mapName">
8-
<div class="u-map-title">{{ mapName }}</div>
8+
<div class="c-map-title">{{ mapName }}</div>
99
</slot>
1010
</div>
1111
<template v-for="(i, k) in datas">
12-
<div class="u-map-point__wrapper" :style="pointStyle(i)" :key="k" :data-index="k">
12+
<div class="c-map-point__wrapper" :style="pointStyle(i)" :key="k" :data-index="k">
1313
<slot name="point" v-bind:data="i">
14-
<el-popover popper-class="u-map-point__popover" placement="top" width="200" trigger="hover">
14+
<el-popover popper-class="c-map-point__popover" placement="top" width="200" trigger="hover">
1515
<slot name="popover" v-bind:data="i">
1616
<div>
17-
<div v-if="!overview" class="u-map-title">{{ mapName }}</div>
17+
<div v-if="!overview" class="c-map-title">{{ mapName }}</div>
1818
<div>{{ i.title }}</div>
1919
<div v-html="i.content"></div>
2020
</div>
2121
</slot>
22-
<span slot="reference" class="u-map-point"> </span>
22+
<span slot="reference" class="c-map-point"> </span>
2323
</el-popover>
2424
</slot>
2525
</div>
@@ -70,6 +70,10 @@ export default {
7070
type: Boolean,
7171
default: true,
7272
},
73+
centerPoint: {
74+
type: Object,
75+
default: null,
76+
},
7377
},
7478
data: () => ({
7579
outerWidth: 0,
@@ -96,6 +100,9 @@ export default {
96100
},
97101
// 中心点
98102
focusPoint() {
103+
if(this.centerPoint) {
104+
return this.centerPoint;
105+
}
99106
if (this.focus != undefined) {
100107
return this.datas[this.focus];
101108
} else {
@@ -248,8 +255,8 @@ export default {
248255
let store = {};
249256
const targetIsPoint = (e) => {
250257
let { target } = e;
251-
while (!target.classList.contains("u-map__wrapper")) {
252-
if (target.classList.contains("u-map-point__wrapper")) {
258+
while (!target.classList.contains("c-map__wrapper")) {
259+
if (target.classList.contains("c-map-point__wrapper")) {
253260
store.pointIndex = Number(target.dataset["index"]);
254261
return true;
255262
}

0 commit comments

Comments
 (0)