index.vue 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. <template>
  2. <Card :title="title" :icon="icon" class="community-map">
  3. <div class="map-con">
  4. <tdt-map style="position: relative;z-index: 0;" mapStyle="indigo" :center="[
  5. 105,
  6. 34,
  7. ]"
  8. :zoom="5"
  9. :minZoom="5"
  10. :maxZoom="5"
  11. :controls="[
  12. {
  13. name: 'Scale',
  14. position: 'topright'
  15. },]"
  16. >
  17. <!-- <div v-if="provinceList.length"> -->
  18. <tdt-marker-clusterer
  19. v-for="item in provinceList"
  20. :key="item.label + 'clusterer'"
  21. :markers="[{
  22. icon: {
  23. iconUrl: require('./images/map-mark-icon.png'),
  24. iconSize: [24, 24]
  25. },
  26. position: [item.point.lng, item.point.lat]
  27. }]"
  28. >
  29. </tdt-marker-clusterer>
  30. <tdt-label
  31. v-for="(item, i) in provinceList"
  32. :key="`${i}-label`"
  33. :position="[item.point.lng, item.point.lat]"
  34. :text="item.label">
  35. </tdt-label>
  36. <!-- </div> -->
  37. </tdt-map>
  38. <MapList title="省份" :isShow="provinceList.length" :list="provinceList" :position="{left: 30, bottom: 30}"></MapList>
  39. </div>
  40. </Card>
  41. </template>
  42. <script>
  43. import provincePosition from './province-positon'
  44. // import { screen } from '@/api'
  45. import Card from '@/views/components/card'
  46. import icon from './images/icon-title.png'
  47. import MapList from './components/map-list.vue'
  48. export default {
  49. name: 'CommunityMap',
  50. components: {
  51. Card,
  52. MapList
  53. },
  54. data () {
  55. return {
  56. title: '项目地区分布',
  57. icon: icon,
  58. provinceList: [],
  59. state: {
  60. center: [113.280637, 23.125178],
  61. zoom: 12
  62. }
  63. }
  64. },
  65. mounted () {
  66. setTimeout(() => {
  67. this.mapInit()
  68. }, 500)
  69. // this.getProjectStatistics()
  70. },
  71. methods: {
  72. mapInit () {
  73. const _data = [
  74. {
  75. provinceName: '海南省',
  76. count: 100
  77. },
  78. {
  79. provinceName: '广东省',
  80. count: 200
  81. },
  82. {
  83. provinceName: '四川省',
  84. count: 300
  85. },
  86. {
  87. provinceName: '贵州省',
  88. count: 400
  89. },
  90. {
  91. provinceName: '云南省',
  92. count: 500
  93. },
  94. {
  95. provinceName: '西藏自治区',
  96. count: 600
  97. },
  98. {
  99. provinceName: '陕西省',
  100. count: 700
  101. },
  102. {
  103. provinceName: '甘肃省',
  104. count: 800
  105. }
  106. ]
  107. let arr = []
  108. _data.forEach((item, i) => {
  109. let cName = item.provinceName.substring(0, 2)
  110. let province = provincePosition.find(p => p.name.indexOf(cName) !== -1)
  111. let ele = {
  112. label: province.name,
  113. content: item.count,
  114. point: {
  115. lng: province.geoCoord[0],
  116. lat: province.geoCoord[1]
  117. }
  118. }
  119. arr.push(ele)
  120. })
  121. this.provinceList = arr
  122. }
  123. // getProjectStatistics () {
  124. // this.provinceList = []
  125. // screen.getProjectStatistics()
  126. // .then(({ data }) => {
  127. // if (data.code === '200') {
  128. // let _data = data.data
  129. // let arr = []
  130. // _data.provinceStatistics.forEach((item, i) => {
  131. // let cName = item.provinceName.substring(0, 2)
  132. // let province = provincePosition.find(p => p.name.indexOf(cName) !== -1)
  133. // let ele = {
  134. // label: province.name,
  135. // content: item.count,
  136. // point: {
  137. // lng: province.geoCoord[0],
  138. // lat: province.geoCoord[1]
  139. // }
  140. // }
  141. // arr.push(ele)
  142. // })
  143. // this.provinceList = arr
  144. // }
  145. // })
  146. // }
  147. }
  148. }
  149. </script>
  150. <style lang="scss" scoped>
  151. @import "@/assets/css/theme.scss";
  152. @import "@/assets/css/mixin.scss";
  153. .map-con {
  154. position: relative;
  155. }
  156. </style>