Blame view

src/components/inspection/selectMapPos.vue 2.96 KB
59fd5759   王彪总   feat(map): 替换腾讯地图...
1
  <template>
48ea9c43   wuxw   巡检开发完成
2
    <div class="select-map-pos-container">
59fd5759   王彪总   feat(map): 替换腾讯地图...
3
4
      <div id="selectMap" class="map-view"></div>
      <div class="map-hint">点击地图选择位置,经纬度将自动填充</div>
48ea9c43   wuxw   巡检开发完成
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    </div>
  </template>
  
  <script>
  import { getCommunityId } from '@/api/community/communityApi'
  
  export default {
    name: 'SelectMapPos',
    props: {
      elementId: {
        type: String,
        default: 'selectMap'
      },
      initData: {
        type: Object,
        default: () => ({})
      }
    },
b5dad34f   wuxw   巡检功能测试中
23
  
48ea9c43   wuxw   巡检开发完成
24
25
26
27
    data() {
      return {
        map: null,
        marker: null,
59fd5759   王彪总   feat(map): 替换腾讯地图...
28
        communityId: ''
48ea9c43   wuxw   巡检开发完成
29
30
31
32
      }
    },
    mounted() {
      this.communityId = getCommunityId()
48ea9c43   wuxw   巡检开发完成
33
34
    },
    methods: {
b5dad34f   wuxw   巡检功能测试中
35
      initMap(_data) {
59fd5759   王彪总   feat(map): 替换腾讯地图...
36
37
        let _lng = 116.397128
        let _lat = 39.916527
b5dad34f   wuxw   巡检功能测试中
38
  
59fd5759   王彪总   feat(map): 替换腾讯地图...
39
40
        if (_data.lng) _lng = _data.lng
        if (_data.lat) _lat = _data.lat
9d019fa6   wuxw   测试OA相关流程
41
  
59fd5759   王彪总   feat(map): 替换腾讯地图...
42
43
44
        if (this.map) {
          this.map.destroy()
          this.map = null
48ea9c43   wuxw   巡检开发完成
45
        }
59fd5759   王彪总   feat(map): 替换腾讯地图...
46
47
48
49
50
51
52
53
54
55
56
57
58
        this.marker = null
  
        const map = new window.AMap.Map('selectMap', {
          center: [_lng, _lat],
          zoom: 13,
          resizeEnable: true
        })
  
        const _this = this
  
        map.on('click', function (ev) {
          const lng = ev.lnglat.getLng()
          const lat = ev.lnglat.getLat()
b5dad34f   wuxw   巡检功能测试中
59
  
59fd5759   王彪总   feat(map): 替换腾讯地图...
60
          _this.$emit('position-change', { lat, lng })
b5dad34f   wuxw   巡检功能测试中
61
  
59fd5759   王彪总   feat(map): 替换腾讯地图...
62
63
64
65
66
67
68
69
70
71
72
73
          if (!_this.marker) {
            _this.marker = new window.AMap.Marker({
              position: [lng, lat],
              map: map,
              icon: new window.AMap.Icon({
                size: new window.AMap.Size(25, 35),
                imageSize: new window.AMap.Size(25, 35),
                image: '/img/maper.png'
              })
            })
          } else {
            _this.marker.setPosition([lng, lat])
b5dad34f   wuxw   巡检功能测试中
74
          }
59fd5759   王彪总   feat(map): 替换腾讯地图...
75
        })
b5dad34f   wuxw   巡检功能测试中
76
  
59fd5759   王彪总   feat(map): 替换腾讯地图...
77
78
79
80
81
82
83
84
85
86
87
88
89
90
        this.map = map
  
        // 如果传入了已有坐标,在地图上显示标记
        if (_data.lng && _data.lat) {
          this.marker = new window.AMap.Marker({
            map: this.map,
            position: [_lng, _lat],
            icon: new window.AMap.Icon({
              size: new window.AMap.Size(25, 35),
              imageSize: new window.AMap.Size(25, 35),
              image: '/img/maper.png'
            })
          })
        }
48ea9c43   wuxw   巡检开发完成
91
      },
b5dad34f   wuxw   巡检功能测试中
92
  
48ea9c43   wuxw   巡检开发完成
93
      addMarker(position) {
48ea9c43   wuxw   巡检开发完成
94
95
        if (this.marker) {
          this.marker.setMap(null)
59fd5759   王彪总   feat(map): 替换腾讯地图...
96
          this.marker = null
48ea9c43   wuxw   巡检开发完成
97
        }
b5dad34f   wuxw   巡检功能测试中
98
  
59fd5759   王彪总   feat(map): 替换腾讯地图...
99
        this.marker = new window.AMap.Marker({
48ea9c43   wuxw   巡检开发完成
100
          map: this.map,
59fd5759   王彪总   feat(map): 替换腾讯地图...
101
102
103
104
105
106
          position: position,
          icon: new window.AMap.Icon({
            size: new window.AMap.Size(25, 35),
            imageSize: new window.AMap.Size(25, 35),
            image: '/img/maper.png'
          })
48ea9c43   wuxw   巡检开发完成
107
        })
b5dad34f   wuxw   巡检功能测试中
108
  
48ea9c43   wuxw   巡检开发完成
109
110
111
        this.map.setCenter(position)
        this.map.setZoom(16)
      },
b5dad34f   wuxw   巡检功能测试中
112
  
48ea9c43   wuxw   巡检开发完成
113
114
      updatePosition(lat, lng) {
        if (!this.map) return
59fd5759   王彪总   feat(map): 替换腾讯地图...
115
        this.addMarker([lng, lat])
48ea9c43   wuxw   巡检开发完成
116
117
      }
    },
48ea9c43   wuxw   巡检开发完成
118
    beforeDestroy() {
48ea9c43   wuxw   巡检开发完成
119
120
121
122
123
124
125
126
127
128
129
      if (this.map) {
        this.map.destroy()
        this.map = null
      }
    }
  }
  </script>
  
  <style scoped>
  .select-map-pos-container {
    width: 100%;
48ea9c43   wuxw   巡检开发完成
130
  }
59fd5759   王彪总   feat(map): 替换腾讯地图...
131
132
133
134
135
136
137
138
139
140
141
142
  .map-view {
    width: 100%;
    height: 400px;
    border: 1px solid #dcdfe6;
    border-radius: 4px;
  }
  .map-hint {
    font-size: 12px;
    color: #909399;
    margin-top: 6px;
  }
  </style>