e.vue 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457
  1. <template>
  2. <svg
  3. version="1.1"
  4. id="E_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="e">
  13. <path
  14. id="e_x5F_1"
  15. class="st0"
  16. d="M4.2,3.7h300.5c22,0,40,16,40,35.8v255.6H4.3L4.2,3.7C4.3,3.7,4.2,3.7,4.2,3.7z"
  17. />
  18. <g class="st1">
  19. <rect x="4.6" y="26.7" class="st2" width="3.6" height="16" />
  20. <rect x="4.6" y="70.9" class="st2" width="3.6" height="16" />
  21. <g>
  22. <rect x="4.6" y="251.7" class="st2" width="3.6" height="16" />
  23. <rect x="4.6" y="172.5" class="st2" width="3.6" height="16" />
  24. <rect x="4.6" y="212.1" class="st2" width="3.6" height="16" />
  25. </g>
  26. <g>
  27. <rect x="33.9" y="291.7" class="st2" width="16" height="3.6" />
  28. <rect x="189.3" y="291.7" class="st2" width="16" height="3.6" />
  29. <rect x="228" y="291.7" class="st2" width="16" height="3.6" />
  30. <rect x="266.9" y="291.7" class="st2" width="16" height="3.6" />
  31. <rect x="305.7" y="291.7" class="st2" width="16" height="3.6" />
  32. <rect x="72.8" y="291.7" class="st2" width="16" height="3.6" />
  33. <rect x="111.7" y="291.7" class="st2" width="16" height="3.6" />
  34. <rect x="150.4" y="291.7" class="st2" width="16" height="3.6" />
  35. </g>
  36. <g>
  37. <g class="st3">
  38. <rect x="60.1" y="4.2" class="st4" width="4.3" height="46.1" />
  39. <rect
  40. x="57.1"
  41. y="10.4"
  42. transform="matrix(1 -6.120315e-03 6.120315e-03 1 -9.982308e-02 0.3807)"
  43. class="st4"
  44. width="10.1"
  45. height="12.2"
  46. />
  47. </g>
  48. <g class="st3">
  49. <rect
  50. x="72.9"
  51. y="201.2"
  52. transform="matrix(0.7071 -0.7071 0.7071 0.7071 -136.5905 118.7492)"
  53. class="st4"
  54. width="4.3"
  55. height="46.1"
  56. />
  57. <rect
  58. x="62.3"
  59. y="210.9"
  60. transform="matrix(0.7028 -0.7114 0.7114 0.7028 -134.356 112.3968)"
  61. class="st4"
  62. width="10.1"
  63. height="12.2"
  64. />
  65. </g>
  66. <g class="st3">
  67. <rect x="297.1" y="166" class="st4" width="46.1" height="4.3" />
  68. <rect
  69. x="324.9"
  70. y="162.8"
  71. transform="matrix(1 -6.120315e-03 6.120315e-03 1 -1.0211 2.029)"
  72. class="st4"
  73. width="12.2"
  74. height="10.1"
  75. />
  76. </g>
  77. <g class="st3">
  78. <rect x="297.1" y="230.9" class="st4" width="46.1" height="4.3" />
  79. <rect
  80. x="324.9"
  81. y="227.9"
  82. transform="matrix(1 -6.120315e-03 6.120315e-03 1 -1.4196 2.0302)"
  83. class="st4"
  84. width="12.2"
  85. height="10.1"
  86. />
  87. </g>
  88. <g class="st3">
  89. <rect x="144.9" y="6.1" class="st4" width="4.6" height="63.4" />
  90. <polygon
  91. class="st4"
  92. points="140.9,11.1 153.2,11 153.5,64.7 141.1,64.8 "
  93. />
  94. </g>
  95. <g class="st3">
  96. <rect
  97. x="230.1"
  98. y="7.3"
  99. transform="matrix(0.6847 -0.7288 0.7288 0.6847 44.851 181.6601)"
  100. class="st4"
  101. width="4.6"
  102. height="63.4"
  103. />
  104. <polygon
  105. class="st4"
  106. points="208.5,25.2 216.7,16.2 256,52.8 247.7,61.8 "
  107. />
  108. </g>
  109. <g class="st3">
  110. <rect
  111. x="298.1"
  112. y="71.6"
  113. transform="matrix(0.6847 -0.7288 0.7288 0.6847 19.4187 251.5034)"
  114. class="st4"
  115. width="4.6"
  116. height="63.4"
  117. />
  118. <polygon
  119. class="st4"
  120. points="276.5,89.5 284.8,80.5 324,117.1 315.7,126.1 "
  121. />
  122. </g>
  123. <g class="st3">
  124. <rect
  125. x="205.4"
  126. y="79.7"
  127. transform="matrix(0.7071 -0.7072 0.7072 0.7071 -17.9284 179.5215)"
  128. class="st4"
  129. width="4.6"
  130. height="63.4"
  131. />
  132. <polygon
  133. class="st4"
  134. points="184.4,96.7 193,87.9 231.1,125.8 222.5,134.5 "
  135. />
  136. </g>
  137. <g class="st3">
  138. <circle class="st5" cx="140.8" cy="170.8" r="26.8" />
  139. <rect
  140. x="123.3"
  141. y="153.5"
  142. transform="matrix(0.7071 -0.7071 0.7071 0.7071 -79.6345 149.5454)"
  143. class="st4"
  144. width="34.8"
  145. height="34.8"
  146. />
  147. </g>
  148. <g class="st3">
  149. <circle class="st5" cx="79.7" cy="109.8" r="23" />
  150. <circle class="st4" cx="79.7" cy="109.8" r="17.7" />
  151. </g>
  152. <g class="st3">
  153. <circle class="st5" cx="201.8" cy="232" r="23" />
  154. <circle class="st4" cx="201.8" cy="232" r="17.7" />
  155. </g>
  156. </g>
  157. </g>
  158. <g class="st6">
  159. <path id="e_x5F_2" class="st7" d="M346.3,297.5H2.1V2.1" />
  160. <path
  161. class="st8"
  162. d="M4.5,3.7h165.3c13,0,25.5,4.6,34.7,12.9c25.2,30.5,96.7,98.8,125.8,117.4c9.3,8.2,14.3,19.4,14.3,31.1v130.1"
  163. />
  164. </g>
  165. </g>
  166. <g id="point" :class="cls" @click="handleClick" @mouseleave="$emit('hoverPano',{})" @mouseover="hoverItem">
  167. <g :class="'e-s25' + cls" id="e-s25">
  168. <circle class="st9" cx="21.2" cy="34" r="7.1" />
  169. <circle class="st9" cx="21.2" cy="34" r="5.1" />
  170. </g>
  171. <g :class="'e-s24' + cls" id="e-s24">
  172. <circle class="st9" cx="21.2" cy="73.2" r="7.1" />
  173. <circle class="st9" cx="21.2" cy="73.2" r="5.1" />
  174. </g>
  175. <g :class="'e-s26' + cls" id="e-s26">
  176. <circle class="st9" cx="44.6" cy="18.6" r="7.1" />
  177. <circle class="st9" cx="44.6" cy="18.6" r="5.1" />
  178. </g>
  179. <g :class="'e-s27' + cls" id="e-s27">
  180. <circle class="st9" cx="79.9" cy="18.6" r="7.1" />
  181. <circle class="st9" cx="79.9" cy="18.6" r="5.1" />
  182. </g>
  183. <g :class="'e-s23' + cls" id="e-s23">
  184. <circle class="st9" cx="21.2" cy="180.9" r="7.1" />
  185. <circle class="st9" cx="21.2" cy="180.9" r="5.1" />
  186. </g>
  187. <g :class="'e-s22' + cls" id="e-s22">
  188. <circle class="st9" cx="21.2" cy="220.1" r="7.1" />
  189. <circle class="st9" cx="21.2" cy="220.1" r="5.1" />
  190. </g>
  191. <g :class="'e-s21' + cls" id="e-s21">
  192. <circle class="st9" cx="21.2" cy="259.4" r="7.1" />
  193. <circle class="st9" cx="21.2" cy="259.4" r="5.1" />
  194. </g>
  195. <g :class="'e-s20' + cls" id="e-s20">
  196. <circle class="st9" cx="45.6" cy="277.3" r="7.1" />
  197. <circle class="st9" cx="45.6" cy="277.3" r="5.1" />
  198. </g>
  199. <g :class="'e-s19' + cls" id="e-s19">
  200. <circle class="st9" cx="83.7" cy="277.3" r="7.1" />
  201. <circle class="st9" cx="83.7" cy="277.3" r="5.1" />
  202. </g>
  203. <g :class="'e-s28' + cls" id="e-s28">
  204. <circle class="st9" cx="54.1" cy="229.8" r="7.1" />
  205. <circle class="st9" cx="54.1" cy="229.8" r="5.1" />
  206. </g>
  207. <g :class="'e-s29' + cls" id="e-s29">
  208. <circle class="st9" cx="80.5" cy="204.1" r="7.1" />
  209. <circle class="st9" cx="80.5" cy="204.1" r="5.1" />
  210. </g>
  211. <g :class="'e-s31' + cls" id="e-s31">
  212. <circle class="st9" cx="121.7" cy="150" r="7.1" />
  213. <circle class="st9" cx="121.7" cy="150" r="5.1" />
  214. </g>
  215. <g :class="'e-s33' + cls" id="e-s33">
  216. <circle class="st9" cx="161.5" cy="190.5" r="7.1" />
  217. <circle class="st9" cx="161.5" cy="190.5" r="5.1" />
  218. </g>
  219. <g :class="'e-s30' + cls" id="e-s30">
  220. <circle class="st9" cx="121.4" cy="190.1" r="7.1" />
  221. <circle class="st9" cx="121.4" cy="190.1" r="5.1" />
  222. </g>
  223. <g :class="'e-s32' + cls" id="e-s32">
  224. <circle class="st9" cx="161.9" cy="150.4" r="7.1" />
  225. <circle class="st9" cx="161.9" cy="150.4" r="5.1" />
  226. </g>
  227. <g :class="'e-s6' + cls" id="e-s6">
  228. <circle class="st9" cx="204.7" cy="136.5" r="7.1" />
  229. <circle class="st9" cx="204.7" cy="136.5" r="5.1" />
  230. </g>
  231. <g :class="'e-s9' + cls" id="e-s9">
  232. <circle class="st9" cx="331.2" cy="152.9" r="7.1" />
  233. <circle class="st9" cx="331.2" cy="152.9" r="5.1" />
  234. </g>
  235. <g :class="'e-s10' + cls" id="e-s10">
  236. <circle class="st9" cx="331.2" cy="183.4" r="7.1" />
  237. <circle class="st9" cx="331.2" cy="183.4" r="5.1" />
  238. </g>
  239. <g :class="'e-s11' + cls" id="e-s11">
  240. <circle class="st9" cx="331.2" cy="215.8" r="7.1" />
  241. <circle class="st9" cx="331.2" cy="215.8" r="5.1" />
  242. </g>
  243. <g :class="'e-s12' + cls" id="e-s12">
  244. <circle class="st9" cx="331.2" cy="250.4" r="7.1" />
  245. <circle class="st9" cx="331.2" cy="250.4" r="5.1" />
  246. </g>
  247. <g :class="'e-s3' + cls" id="e-s3">
  248. <circle class="st9" cx="232.5" cy="109.6" r="7.1" />
  249. <circle class="st9" cx="232.5" cy="109.6" r="5.1" />
  250. </g>
  251. <g :class="'e-s5' + cls" id="e-s5">
  252. <circle class="st9" cx="127.8" cy="22.6" r="7.1" />
  253. <circle class="st9" cx="127.8" cy="22.6" r="5.1" />
  254. </g>
  255. <g :class="'e-s4' + cls" id="e-s4">
  256. <circle class="st9" cx="166.6" cy="22.6" r="7.1" />
  257. <circle class="st9" cx="166.6" cy="22.6" r="5.1" />
  258. </g>
  259. <g :class="'e-s7' + cls" id="e-s7">
  260. <circle class="st9" cx="206.9" cy="41" r="7.1" />
  261. <circle class="st9" cx="206.9" cy="41" r="5.1" />
  262. </g>
  263. <g :class="'e-s8' + cls" id="e-s8">
  264. <circle class="st9" cx="297.7" cy="126.4" r="7.1" />
  265. <circle class="st9" cx="297.7" cy="126.4" r="5.1" />
  266. </g>
  267. <g :class="'e-s2' + cls" id="e-s2">
  268. <circle class="st9" cx="321.7" cy="99.1" r="7.1" />
  269. <ellipse
  270. transform="matrix(0.999 -4.540350e-02 4.540350e-02 0.999 -4.1696 14.7083)"
  271. class="st9"
  272. cx="321.7"
  273. cy="99.1"
  274. rx="5.1"
  275. ry="5.1"
  276. />
  277. </g>
  278. <g :class="'e-s1' + cls" id="e-s1">
  279. <circle class="st9" cx="235.1" cy="16.7" r="7.1" />
  280. <circle class="st9" cx="235.1" cy="16.7" r="5.1" />
  281. </g>
  282. <g :class="'e-s18' + cls" id="e-s18">
  283. <circle class="st9" cx="121.7" cy="277.3" r="7.1" />
  284. <circle class="st9" cx="121.7" cy="277.3" r="5.1" />
  285. </g>
  286. <g :class="'e-s17' + cls" id="e-s17">
  287. <circle class="st9" cx="159.8" cy="277.3" r="7.1" />
  288. <circle class="st9" cx="159.8" cy="277.3" r="5.1" />
  289. </g>
  290. <g :class="'e-s16' + cls" id="e-s16">
  291. <circle class="st9" cx="197.8" cy="277.3" r="7.1" />
  292. <circle class="st9" cx="197.8" cy="277.3" r="5.1" />
  293. </g>
  294. <g :class="'e-s15' + cls" id="e-s15">
  295. <circle class="st9" cx="235.9" cy="277.3" r="7.1" />
  296. <circle class="st9" cx="235.9" cy="277.3" r="5.1" />
  297. </g>
  298. <g :class="'e-s14' + cls" id="e-s14">
  299. <circle class="st9" cx="273.9" cy="277.3" r="7.1" />
  300. <circle class="st9" cx="273.9" cy="277.3" r="5.1" />
  301. </g>
  302. <g :class="'e-s13' + cls" id="e-s13">
  303. <circle class="st9" cx="312" cy="277.3" r="7.1" />
  304. <circle class="st9" cx="312" cy="277.3" r="5.1" />
  305. </g>
  306. </g>
  307. </svg>
  308. </template>
  309. <script>
  310. export default {
  311. props: ["data", "currentPanoid", "currentPano", "cls"],
  312. data() {
  313. return { };
  314. },
  315. methods: {
  316. hoverItem(e){
  317. let target = e.target.parentElement;
  318. let tt = this.data.find(item=>item.mapId == target.id)
  319. this.$emit('hoverPano',tt||{})
  320. },
  321. handleClick(e) {
  322. let target = e.target.parentElement;
  323. let tt = this.data.find(item=>item.mapId == target.id)
  324. if (tt) {
  325. this.$bus.$emit('ifrMessage',{
  326. events:'flyToPano',
  327. data:tt
  328. })
  329. }
  330. },
  331. },
  332. watch: {
  333. currentPano: {
  334. deep: true,
  335. immediate: true,
  336. handler: function(newVal) {
  337. document.querySelector("." + this.cls) &&
  338. Array.from(document.querySelector("." + this.cls).childNodes).forEach(
  339. (item) => {
  340. item&&item.classList.remove("active");
  341. }
  342. );
  343. if (newVal) {
  344. let ele = document.querySelector("." + newVal.mapId + this.cls)
  345. ele&&ele.classList.add("active");
  346. }
  347. },
  348. },
  349. },
  350. };
  351. </script>
  352. <style lang="less" scoped>
  353. @color: #961319;
  354. .st0 {
  355. opacity: 0.89;
  356. fill: #343434;
  357. }
  358. .st1 {
  359. opacity: 0.6;
  360. }
  361. .st2 {
  362. opacity: 0.7;
  363. fill: #ffffff;
  364. }
  365. .st3 {
  366. opacity: 0.8;
  367. }
  368. .st4 {
  369. fill: #ffffff;
  370. }
  371. .st5 {
  372. fill: none;
  373. stroke: #ffffff;
  374. stroke-width: 2;
  375. stroke-miterlimit: 10;
  376. }
  377. .st6 {
  378. opacity: 0.4;
  379. }
  380. .st7 {
  381. opacity: 0.4;
  382. fill: none;
  383. stroke: #ffffff;
  384. stroke-width: 4;
  385. stroke-linecap: round;
  386. stroke-linejoin: round;
  387. }
  388. .st8 {
  389. opacity: 0.4;
  390. fill: none;
  391. stroke: #ffffff;
  392. stroke-width: 2;
  393. stroke-linecap: round;
  394. stroke-linejoin: round;
  395. stroke-miterlimit: 10;
  396. }
  397. .st9 {
  398. opacity: 0.6;
  399. fill: #ffffff;
  400. }
  401. svg {
  402. width: 60%;
  403. }
  404. #point {
  405. > g {
  406. cursor: pointer;
  407. &.active {
  408. circle:nth-child(even) {
  409. fill: @color;
  410. opacity: 1!important;
  411. }
  412. circle:nth-child(odd) {
  413. opacity: 1!important;
  414. }
  415. ellipse:nth-child(even) {
  416. fill: @color;
  417. opacity: 1!important;
  418. }
  419. ellipse:nth-child(odd) {
  420. opacity: 1!important;
  421. }
  422. }
  423. &:hover{
  424. circle:nth-child(even) {
  425. fill: #fff;
  426. opacity: 1!important;
  427. }
  428. circle:nth-child(odd) {
  429. opacity: 1!important;
  430. fill: @color;
  431. }
  432. ellipse:nth-child(even) {
  433. fill: #fff;
  434. opacity: 1!important;
  435. }
  436. ellipse:nth-child(odd) {
  437. opacity: 1!important;
  438. fill: @color;
  439. }
  440. }
  441. }
  442. }
  443. </style>