map.vue 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. <template>
  2. <view class="safety" id="container"><!-- :style="{height:(showData ? '75%' : '100%')}" -->
  3. <map style="width: 100%; height: 75%;" :latitude="latitude" :longitude="longitude" scale="10"  
  4. :markers="markers" :show-location="true" @markertap="markertap">
  5. </map>
  6. <view class="model">
  7. <view class="info">
  8. <view class="info-data">
  9. <view class="info-title">姓名:{{model.veteransName ? model.veteransName : '-'}}</view>
  10. <view class="info-text">电话:{{model.veteransTel ? model.veteransTel : '-'}}</view>
  11. <view class="info-shopsIntroduce">身份证号:{{model.veteransIdcard ? model.veteransIdcard : '-'}}</view>
  12. <view class="info-shopsIntroduce">家庭住址:{{model.address ? model.address : '-'}}</view>
  13. </view>
  14. </view>
  15. </view>
  16. </view>
  17. </template>
  18. <script>
  19. import amap from '@/lib/amap-wx.130.js'
  20. import server from "@/api/index";
  21. import http from '@/common/http.js'
  22. export default {
  23. data() {
  24. return {
  25. pageNo: 1,
  26. pageSize: 10,
  27. id: 0,
  28. clickable: true,
  29. latitude: 43.616996,
  30. longitude: 125.323643,
  31. mapKey: '1dc63f21c12985e199a715faf4c02f36',
  32. markers: [],
  33. list: [],
  34. model:{
  35. veteransName: '',
  36. veteransTel: '',
  37. veteransIdcard: '',
  38. address: ''
  39. },
  40. form:{
  41. veteransName: '',
  42. veteransTel: '',
  43. veteransIdcard: '',
  44. address: ''
  45. }
  46. }
  47. },
  48. onLoad(e) {
  49. console.log('e',e.id)
  50. if(e){
  51. this.form.veteransName = e.name;
  52. this.form.veteransTel = e.tel;
  53. this.form.veteransIdcard = e.idCard;
  54. this.form.address = e.address;
  55. }
  56. let that = this;
  57. this.amapPlugin = new amap.AMapWX({
  58. key: this.mapKey //该key 是在高德中申请的微信小程序key
  59. });
  60. this.amapPlugin.getRegeo({
  61. type: 'gcj02', //map 组件使用的经纬度是国测局坐标, type 为 gcj02
  62. success: function(res) {
  63. const latitude = res[0].latitude;
  64. const longitude = res[0].longitude;
  65. that.longitude = longitude;
  66. that.latitude = latitude;
  67. console.log(that.longitude, that.latitude)
  68. that.mapInfo = res[0];
  69. },
  70. fail: (res) => {
  71. console.log(JSON.stringify(res));
  72. }
  73. });
  74. // this.getFn()
  75. this.getListFn();
  76. },
  77. methods: {
  78. image(e) {
  79. return http.webUrl + e
  80. },
  81. getListFn(){
  82. server.getInfoList(this.form).then(res =>{
  83. console.log("reddd", res)
  84. // this.list = res
  85. this.markers = [];
  86. res.forEach((item, index) => {
  87. this.markers.push({
  88. id: item.veteransId,
  89. latitude: item.latitude,
  90. longitude: item.longitude,
  91. iconPath: '/static/logo3.png',
  92. width: 30,
  93. height: 30,
  94. clickable: true,
  95. veteransName: item.veteransName,
  96. veteransTel: item.veteransTel,
  97. veteransIdcard: item.veteransIdcard,
  98. address: item.address
  99. })
  100. })
  101. if (this.markers[0]) {
  102. this.model.veteransName = this.markers[0].veteransName
  103. this.model.veteransTel = this.markers[0].veteransTel
  104. this.model.veteransIdcard = this.markers[0].veteransIdcard
  105. this.model.address = this.markers[0].address
  106. }
  107. })
  108. },
  109. // getFn() {
  110. // server.getNearby(this.id).then(res =>{
  111. // res.forEach((item, index) => {
  112. // this.markers.push({
  113. // id: item.veteransId,
  114. // latitude: item.latitude,
  115. // longitude: item.longitude,
  116. // iconPath: '/static/logo3.png',
  117. // width: 30,
  118. // height: 30,
  119. // clickable: true,
  120. // veteransName: item.veteransName,
  121. // veteransTel: item.veteransTel,
  122. // veteransIdcard: item.veteransIdcard,
  123. // address: item.address
  124. // })
  125. // })
  126. // if (this.markers[0]) {
  127. // this.model.veteransName = this.markers[0].veteransName
  128. // this.model.veteransTel = this.markers[0].veteransTel
  129. // this.model.veteransIdcard = this.markers[0].veteransIdcard
  130. // this.model.address = this.markers[0].address
  131. // }
  132. // })
  133. // },
  134. markertap(e) {
  135. console.log(e)
  136. console.log('this.markers', this.markers)
  137. this.markers.forEach(item => {
  138. if (e.detail.markerId === item.id) {
  139. this.model.veteransName = item.veteransName
  140. this.model.veteransTel = item.veteransTel
  141. this.model.veteransIdcard = item.veteransIdcard
  142. this.model.address = item.address
  143. }
  144. })
  145. }
  146. }
  147. }
  148. </script>
  149. <style lang="scss" scoped>
  150. .safety {
  151. position: absolute;
  152. width: 100%;
  153. height: 100%;
  154. box-sizing: border-box;
  155. }
  156. .model {
  157. width: 100%;
  158. height: 25%;
  159. position: absolute;
  160. left: 0upx;
  161. bottom: 0upx;
  162. background-color: #FFFFFF;
  163. z-index: 9999;
  164. padding: 0rpx 30rpx;
  165. .info {
  166. width: 100%;
  167. height: 100%;
  168. display: flex;
  169. flex-direction: row;
  170. align-items: center;
  171. justify-content: space-around;
  172. .img{
  173. width: 180rpx;
  174. height: 180rpx;
  175. }
  176. .info-data{
  177. width: 100%;
  178. padding-left: 20upx;
  179. }
  180. .info-title{
  181. }
  182. .info-text{
  183. padding-top: 10upx;
  184. }
  185. .info-shopsIntroduce{
  186. padding-top: 10upx;
  187. line-height: 40rpx;
  188. height: auto;
  189. overflow: visible;
  190. }
  191. }
  192. }
  193. </style>