a.vue 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488
  1. <template>
  2. <svg
  3. version="1.1"
  4. id="A_1_"
  5. xmlns="http://www.w3.org/2000/svg"
  6. xmlns:xlink="http://www.w3.org/1999/xlink"
  7. x="0px"
  8. y="0px"
  9. viewBox="0 0 350 300"
  10. xml:space="preserve"
  11. >
  12. <g id="a">
  13. <path
  14. id="a_x5F_1"
  15. class="st0"
  16. d="M3.2,25.7h345.1v213.6c0,20.2-17.5,36.7-38.9,36.7H3.2V25.7z"
  17. />
  18. <g class="st1">
  19. <g class="st2">
  20. <rect x="80.1" y="215.5" class="st3" width="4.4" height="59.9" />
  21. <polygon
  22. class="st3"
  23. points="78.4,245.7 86.4,245.7 86.3,261.7 78.3,261.7 "
  24. />
  25. </g>
  26. <g class="st2">
  27. <rect x="151.1" y="215.5" class="st3" width="4.4" height="59.9" />
  28. <polygon
  29. class="st3"
  30. points="149.4,245.7 157.4,245.7 157.4,261.7 149.3,261.7 "
  31. />
  32. </g>
  33. <path
  34. class="st4"
  35. d="M176.7,110l-26.5-26.1L113,84.1l-26.1,26.5l0.2,37.2l26.5,26.1l37.2-0.2l26.1-26.5L176.7,110z M139.6,96.4
  36. h5.6l19.2,19v6H146v-6.6h-6.6L139.6,96.4C139.4,96.4,139.6,96.4,139.6,96.4z M143.3,117.6v22.9h-22.9v-22.9H143.3z M99.2,115.8
  37. l19-19.2h6v18.3h-6.6v6.6H99.2V115.8z M124.2,161.6h-5.6l-19.2-19v-6h18.3v6.6h6.6L124.2,161.6L124.2,161.6z M145.6,161.5h-6
  38. v-18.3h6.6v-6.6h18.4v5.6L145.6,161.5z"
  39. />
  40. <g class="st2">
  41. <circle class="st3" cx="249.1" cy="249.9" r="8.2" />
  42. <ellipse class="st5" cx="249.1" cy="249.8" rx="9.5" ry="9.5" />
  43. <polygon
  44. class="st3"
  45. points="243.9,233.3 254.2,233.4 254.2,213.3 244,213.2 "
  46. />
  47. <g>
  48. <path
  49. class="st3"
  50. d="M246.7,259.1v6.2h4.3v-6.2c-0.7,0.1-1.4,0.2-2.1,0.2S247.5,259.2,246.7,259.1z"
  51. />
  52. <path
  53. class="st3"
  54. d="M251.2,240.7l0.2-49.4h-4.3l-0.2,49.4c0.7-0.1,1.4-0.2,2.1-0.2C249.8,240.5,250.5,240.6,251.2,240.7z"
  55. />
  56. </g>
  57. </g>
  58. <g class="st2">
  59. <ellipse
  60. transform="matrix(0.6423 -0.7664 0.7664 0.6423 35.0868 216.1305)"
  61. class="st3"
  62. cx="249.1"
  63. cy="70.5"
  64. rx="8.2"
  65. ry="8.2"
  66. />
  67. <ellipse class="st6" cx="249.1" cy="70.5" rx="9.5" ry="9.5" />
  68. <polygon
  69. class="st3"
  70. points="243.9,86.9 254.2,86.9 254.2,106.9 244,107 "
  71. />
  72. <g>
  73. <path
  74. class="st3"
  75. d="M246.7,61.2V55h4.3v6.2c-0.7-0.1-1.4-0.2-2.1-0.2S247.5,61.1,246.7,61.2z"
  76. />
  77. <path
  78. class="st3"
  79. d="M251.2,79.6l0.2,49.4h-4.3l-0.2-49.4c0.7,0.1,1.4,0.2,2.1,0.2C249.8,79.9,250.5,79.7,251.2,79.6z"
  80. />
  81. </g>
  82. </g>
  83. <g class="st2">
  84. <circle class="st3" cx="329.2" cy="71.4" r="8.2" />
  85. <ellipse class="st7" cx="329.2" cy="71.4" rx="9.5" ry="9.5" />
  86. <polygon
  87. class="st3"
  88. points="314,79.5 321.3,86.7 307.1,100.9 299.9,93.7 "
  89. />
  90. <g>
  91. <path
  92. class="st3"
  93. d="M334.1,63.2l4.4-4.4l3,3l-4.4,4.4c-0.5-0.6-0.8-1.2-1.3-1.6C335.4,64.1,334.8,63.8,334.1,63.2z"
  94. />
  95. <path
  96. class="st3"
  97. d="M324.4,79.4l-34.8,35l-3-3l34.8-35c0.5,0.6,0.8,1.2,1.3,1.6C323.2,78.6,323.8,79.1,324.4,79.4z"
  98. />
  99. </g>
  100. </g>
  101. <g class="st2">
  102. <circle class="st3" cx="329.2" cy="243.7" r="8.2" />
  103. <ellipse class="st7" cx="329.2" cy="243.7" rx="9.5" ry="9.5" />
  104. <polygon
  105. class="st3"
  106. points="314,235.8 321.3,228.6 307.1,214.2 299.9,221.4 "
  107. />
  108. <g>
  109. <path
  110. class="st3"
  111. d="M334.1,251.9l4.4,4.4l3-3l-4.4-4.4c-0.5,0.6-0.8,1.2-1.3,1.6C335.4,251,334.8,251.5,334.1,251.9z"
  112. />
  113. <path
  114. class="st3"
  115. d="M324.4,235.8l-34.8-35l-3,3l34.8,35c0.5-0.6,0.8-1.2,1.3-1.6C323.2,236.6,323.8,236.2,324.4,235.8z"
  116. />
  117. </g>
  118. </g>
  119. <g>
  120. <rect x="3.1" y="50.7" class="st8" width="3.7" height="16.4" />
  121. <rect x="3.1" y="231.6" class="st8" width="3.7" height="16.4" />
  122. <rect x="3.1" y="95.9" class="st8" width="3.7" height="16.4" />
  123. <rect x="3.1" y="141.2" class="st8" width="3.7" height="16.4" />
  124. <rect x="3.1" y="186.4" class="st8" width="3.7" height="16.4" />
  125. </g>
  126. <g>
  127. <rect x="15.9" y="25.7" class="st8" width="16.4" height="3.7" />
  128. <rect x="135.1" y="25.7" class="st8" width="16.4" height="3.7" />
  129. <rect x="180" y="25.7" class="st8" width="16.4" height="3.7" />
  130. <rect x="221.1" y="25.7" class="st8" width="16.4" height="3.7" />
  131. <rect x="259.3" y="25.7" class="st8" width="16.4" height="3.7" />
  132. <rect x="294" y="25.7" class="st8" width="16.4" height="3.7" />
  133. <rect x="50.7" y="25.7" class="st8" width="16.4" height="3.7" />
  134. <rect x="85.4" y="25.7" class="st8" width="16.4" height="3.7" />
  135. </g>
  136. </g>
  137. <g class="st9">
  138. <polyline
  139. id="a_x5F_3"
  140. class="st10"
  141. points="2.1,275.4 2.1,23.3 348,23.3 "
  142. />
  143. <path
  144. id="a_x5F_2"
  145. class="st11"
  146. d="M348,24.5v214.6c0,20.7-17.7,37.5-39.6,37.5H4.9"
  147. />
  148. </g>
  149. </g>
  150. <g id="point" :class="cls" @click="handleClick" @mouseleave="$emit('hoverPano',{})" @mouseover="hoverItem">
  151. <g :class="'a-s17' + cls" id="a-s17">
  152. <circle class="st12" cx="23.2" cy="76.6" r="7.3" />
  153. <circle class="st12" cx="23.2" cy="76.6" r="5.2" />
  154. </g>
  155. <g :class="'a-s16' + cls" id="a-s16">
  156. <circle class="st12" cx="23.2" cy="120" r="7.3" />
  157. <circle class="st12" cx="23.2" cy="120" r="5.2" />
  158. </g>
  159. <g :class="'a-s27' + cls" id="a-s27">
  160. <circle class="st12" cx="93.6" cy="129.1" r="7.3" />
  161. <circle class="st12" cx="93.6" cy="129.1" r="5.2" />
  162. </g>
  163. <g :class="'a-s11' + cls" id="a-s11">
  164. <circle class="st12" cx="101.2" cy="251.9" r="7.3" />
  165. <circle class="st12" cx="101.2" cy="251.9" r="5.2" />
  166. </g>
  167. <g :class="'a-s12' + cls" id="a-s12">
  168. <circle class="st12" cx="64.1" cy="251.9" r="7.3" />
  169. <circle class="st12" cx="64.1" cy="251.9" r="5.2" />
  170. </g>
  171. <g :class="'a-s9' + cls" id="a-s9">
  172. <circle class="st12" cx="170.2" cy="252.6" r="7.3" />
  173. <circle class="st12" cx="170.2" cy="252.6" r="5.2" />
  174. </g>
  175. <g :class="'a-s3' + cls" id="a-s3">
  176. <ellipse
  177. transform="matrix(0.4641 -0.8858 0.8858 0.4641 -53.4911 358.1846)"
  178. class="st12"
  179. cx="269.3"
  180. cy="223.3"
  181. rx="7.3"
  182. ry="7.3"
  183. />
  184. <circle class="st12" cx="269.1" cy="223.3" r="5.2" />
  185. </g>
  186. <g :class="'a-s7' + cls" id="a-s7">
  187. <circle class="st12" cx="228.4" cy="223.3" r="7.3" />
  188. <circle class="st12" cx="228.4" cy="223.3" r="5.2" />
  189. </g>
  190. <g :class="'a-s4' + cls" id="a-s4">
  191. <ellipse
  192. transform="matrix(0.4641 -0.8858 0.8858 0.4641 58.0355 290.9234)"
  193. class="st12"
  194. cx="269.4"
  195. cy="97.5"
  196. rx="7.3"
  197. ry="7.3"
  198. />
  199. <circle class="st12" cx="269.5" cy="97.5" r="5.2" />
  200. </g>
  201. <g :class="'a-s5' + cls" id="a-s5">
  202. <circle class="st12" cx="296.5" cy="79.5" r="7.3" />
  203. <circle class="st12" cx="296.5" cy="79.5" r="5.2" />
  204. </g>
  205. <g :class="'a-s1' + cls" id="a-s1">
  206. <circle class="st12" cx="324.4" cy="102.7" r="7.3" />
  207. <circle class="st12" cx="324.4" cy="102.7" r="5.2" />
  208. </g>
  209. <g :class="'a-s6' + cls" id="a-s6">
  210. <circle class="st12" cx="298.6" cy="238.8" r="7.3" />
  211. <circle class="st12" cx="298.6" cy="238.8" r="5.2" />
  212. </g>
  213. <g :class="'a-s2' + cls" id="a-s2">
  214. <circle class="st12" cx="325.1" cy="213.2" r="7.3" />
  215. <circle class="st12" cx="325.1" cy="213.2" r="5.2" />
  216. </g>
  217. <g :class="'a-s8' + cls" id="a-s8">
  218. <circle class="st12" cx="228.3" cy="97.5" r="7.3" />
  219. <circle class="st12" cx="228.3" cy="97.5" r="5.2" />
  220. </g>
  221. <g :class="'a-s10' + cls" id="a-s10">
  222. <circle class="st12" cx="136.3" cy="252.6" r="7.3" />
  223. <circle class="st12" cx="136.3" cy="252.6" r="5.2" />
  224. </g>
  225. <g :class="'a-s29' + cls" id="a-s29">
  226. <circle class="st12" cx="170.2" cy="129.1" r="7.3" />
  227. <circle class="st12" cx="170.2" cy="129.1" r="5.2" />
  228. </g>
  229. <g :class="'a-s28' + cls" id="a-s28">
  230. <circle class="st12" cx="131.9" cy="92.3" r="7.3" />
  231. <circle class="st12" cx="131.9" cy="92.3" r="5.2" />
  232. </g>
  233. <g :class="'a-s26' + cls" id="a-s26">
  234. <circle class="st12" cx="131.9" cy="164.9" r="7.3" />
  235. <circle class="st12" cx="131.9" cy="164.9" r="5.2" />
  236. </g>
  237. <g :class="'a-s15' + cls" id="a-s15">
  238. <circle class="st12" cx="23.2" cy="164.9" r="7.3" />
  239. <circle class="st12" cx="23.2" cy="164.9" r="5.2" />
  240. </g>
  241. <g :class="'a-s14' + cls" id="a-s14">
  242. <circle class="st12" cx="23.2" cy="209.2" r="7.3" />
  243. <circle class="st12" cx="23.2" cy="209.2" r="5.2" />
  244. </g>
  245. <g :class="'a-s13' + cls" id="a-s13">
  246. <ellipse
  247. transform="matrix(0.9982 -6.054976e-02 6.054976e-02 0.9982 -15.61 1.8791)"
  248. class="st12"
  249. cx="23.2"
  250. cy="258.5"
  251. rx="7.3"
  252. ry="7.3"
  253. />
  254. <circle class="st12" cx="23.2" cy="258.5" r="5.2" />
  255. </g>
  256. <g :class="'a-s18' + cls" id="a-s18">
  257. <circle class="st12" cx="32.3" cy="44.3" r="7.3" />
  258. <circle class="st12" cx="32.3" cy="44.3" r="5.2" />
  259. </g>
  260. <g :class="'a-s19' + cls" id="a-s19">
  261. <circle class="st12" cx="64.1" cy="44.3" r="7.3" />
  262. <circle class="st12" cx="64.1" cy="44.3" r="5.2" />
  263. </g>
  264. <g :class="'a-s20' + cls" id="a-s20">
  265. <circle class="st12" cx="96" cy="44.3" r="7.3" />
  266. <circle class="st12" cx="96" cy="44.3" r="5.2" />
  267. </g>
  268. <g :class="'a-s21' + cls" id="a-s21">
  269. <circle class="st12" cx="141.5" cy="44.3" r="7.3" />
  270. <circle class="st12" cx="141.5" cy="44.3" r="5.2" />
  271. </g>
  272. <g :class="'a-s22' + cls" id="a-s22">
  273. <circle class="st12" cx="187.3" cy="44.3" r="7.3" />
  274. <circle class="st12" cx="187.3" cy="44.3" r="5.2" />
  275. </g>
  276. <g :class="'a-s23' + cls" id="a-s23">
  277. <ellipse
  278. transform="matrix(0.8 -0.5999 0.5999 0.8 19.1046 145.8987)"
  279. class="st12"
  280. cx="228.4"
  281. cy="44.3"
  282. rx="7.3"
  283. ry="7.3"
  284. />
  285. <circle class="st12" cx="228.4" cy="44.3" r="5.2" />
  286. </g>
  287. <g :class="'a-s24' + cls" id="a-s24">
  288. <ellipse
  289. transform="matrix(0.3162 -0.9487 0.9487 0.3162 140.8987 284.0616)"
  290. class="st12"
  291. cx="267.5"
  292. cy="44.3"
  293. rx="7.3"
  294. ry="7.3"
  295. />
  296. <circle class="st12" cx="267.6" cy="44.3" r="5.2" />
  297. </g>
  298. <g :class="'a-s25' + cls" id="a-s25">
  299. <circle class="st12" cx="302.2" cy="44.3" r="7.3" />
  300. <circle class="st12" cx="302.2" cy="44.3" r="5.2" />
  301. </g>
  302. </g>
  303. </svg>
  304. </template>
  305. <script>
  306. export default {
  307. props: ["data", "currentPano", "cls"],
  308. data() {
  309. return {
  310. currentId: "",
  311. };
  312. },
  313. methods: {
  314. hoverItem(e) {
  315. let target = e.target.parentElement;
  316. let tt = this.data.find((item) => item.mapId == target.id);
  317. this.$emit("hoverPano", tt || {});
  318. },
  319. handleClick(e) {
  320. let target = e.target.parentElement;
  321. let tt = this.data.find((item) => item.mapId == target.id);
  322. this.currentId = target.id;
  323. if (tt) {
  324. this.$bus.$emit("ifrMessage", {
  325. events: "flyToPano",
  326. data: tt,
  327. });
  328. }
  329. },
  330. },
  331. watch: {
  332. currentPano: {
  333. deep: true,
  334. immediate: true,
  335. handler: function(newVal) {
  336. if (!this.currentId) {
  337. document.querySelector("." + this.cls) &&
  338. Array.from(
  339. document.querySelector("." + this.cls).childNodes
  340. ).forEach((item) => {
  341. item && item.classList.remove("active");
  342. });
  343. if (newVal) {
  344. let ele = document.querySelector("." + newVal.mapId + this.cls);
  345. ele && ele.classList.add("active");
  346. }
  347. }
  348. },
  349. },
  350. currentId: {
  351. deep: true,
  352. handler: function(newVal) {
  353. if (newVal) {
  354. console.log(newVal, 111111);
  355. document.querySelector("." + this.cls) &&
  356. Array.from(
  357. document.querySelector("." + this.cls).childNodes
  358. ).forEach((item) => {
  359. item && item.classList.remove("active");
  360. });
  361. if (newVal) {
  362. let ele = document.querySelector("." + newVal + this.cls);
  363. ele && ele.classList.add("active");
  364. }
  365. }
  366. },
  367. },
  368. },
  369. };
  370. </script>
  371. <style lang="less" scoped>
  372. @color: #6cac2f;
  373. .st0 {
  374. opacity: 0.89;
  375. fill: #343434;
  376. }
  377. .st1 {
  378. opacity: 0.6;
  379. }
  380. .st2 {
  381. opacity: 0.8;
  382. }
  383. .st3 {
  384. fill: #ffffff;
  385. }
  386. .st4 {
  387. opacity: 0.8;
  388. fill: #ffffff;
  389. }
  390. .st5 {
  391. fill: none;
  392. stroke: #ffffff;
  393. stroke-width: 0.5;
  394. stroke-miterlimit: 9.9985;
  395. }
  396. .st6 {
  397. fill: none;
  398. stroke: #ffffff;
  399. stroke-width: 0.5;
  400. stroke-miterlimit: 9.9995;
  401. }
  402. .st7 {
  403. fill: none;
  404. stroke: #ffffff;
  405. stroke-width: 0.5;
  406. stroke-miterlimit: 9.9999;
  407. }
  408. .st8 {
  409. opacity: 0.7;
  410. fill: #ffffff;
  411. }
  412. .st9 {
  413. opacity: 0.4;
  414. }
  415. .st10 {
  416. opacity: 0.4;
  417. fill: none;
  418. stroke: #ffffff;
  419. stroke-width: 4;
  420. stroke-linecap: round;
  421. stroke-linejoin: round;
  422. stroke-miterlimit: 10;
  423. }
  424. .st11 {
  425. opacity: 0.4;
  426. fill: none;
  427. stroke: #ffffff;
  428. stroke-width: 2;
  429. stroke-linecap: round;
  430. stroke-linejoin: round;
  431. stroke-miterlimit: 10;
  432. }
  433. .st12 {
  434. opacity: 0.6;
  435. fill: #ffffff;
  436. }
  437. svg {
  438. width: 60%;
  439. }
  440. #point {
  441. > g {
  442. cursor: pointer;
  443. &.active {
  444. circle:nth-child(even) {
  445. fill: @color;
  446. opacity: 1!important;
  447. }
  448. circle:nth-child(odd) {
  449. opacity: 1!important;
  450. }
  451. ellipse:nth-child(even) {
  452. fill: @color;
  453. opacity: 1!important;
  454. }
  455. ellipse:nth-child(odd) {
  456. opacity: 1!important;
  457. }
  458. }
  459. &:hover{
  460. circle:nth-child(even) {
  461. fill: #fff;
  462. opacity: 1!important;
  463. }
  464. circle:nth-child(odd) {
  465. opacity: 1!important;
  466. fill: @color;
  467. }
  468. ellipse:nth-child(even) {
  469. fill: #fff;
  470. opacity: 1!important;
  471. }
  472. ellipse:nth-child(odd) {
  473. opacity: 1!important;
  474. fill: @color;
  475. }
  476. }
  477. }
  478. }
  479. </style>