Blame view

src/components/inspection/selectMapPos.vue 3.01 KB
48ea9c43   wuxw   巡检开发完成
1
2
  <template>
    <div class="select-map-pos-container">
b5dad34f   wuxw   巡检功能测试中
3
      <div id="selectMap" style="width: 100%; height: 100%;"></div>
48ea9c43   wuxw   巡检开发完成
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    </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   巡检功能测试中
22
  
48ea9c43   wuxw   巡检开发完成
23
24
25
26
    data() {
      return {
        map: null,
        marker: null,
b5dad34f   wuxw   巡检功能测试中
27
28
29
30
31
        communityId: '',
        mapData: {
          lat: 0,
          lng: 0
        }
48ea9c43   wuxw   巡检开发完成
32
33
34
35
      }
    },
    mounted() {
      this.communityId = getCommunityId()
b5dad34f   wuxw   巡检功能测试中
36
  
48ea9c43   wuxw   巡检开发完成
37
38
    },
    methods: {
b5dad34f   wuxw   巡检功能测试中
39
      initMap(_data) {
48ea9c43   wuxw   巡检开发完成
40
        // 清除现有地图
b5dad34f   wuxw   巡检功能测试中
41
42
43
44
45
        let _lng = 116.397128;
        let _lat = 39.916527;
  
        if (_data.lng) {
          _lng = _data.lng;
48ea9c43   wuxw   巡检开发完成
46
        }
9d019fa6   wuxw   测试OA相关流程
47
  
b5dad34f   wuxw   巡检功能测试中
48
49
50
51
52
53
        if (_data.lat) {
          _lat = _data.lat;
        }
        try {
          if (this.map) {
            this.map.destroy();
48ea9c43   wuxw   巡检开发完成
54
          }
b5dad34f   wuxw   巡检功能测试中
55
56
        } catch (e) {
          console.log(e)
48ea9c43   wuxw   巡检开发完成
57
        }
b5dad34f   wuxw   巡检功能测试中
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
  
  
        let addMap = new window.TMap.Map('selectMap', {
          center: new window.TMap.LatLng(_lat, _lng),
          zoom: 13
        });
        // $that.addMapInfo.addMap = addMap;
        let marker;
        //添加监听事件  获取鼠标点击事件
        let _this = this
        addMap.on('click', function (event) {
          console.log(event)
          if (!marker) {
            marker = new window.TMap.MultiMarker({
              styleId: "marker",
              position: event.latLng,
              map: addMap,
              id: "1",
            });
          }
          console.log(event)
          //marker.setPosition(event.latLng);
          _this.$emit('position-change', {
            lat: event.latLng.lat,
            lng: event.latLng.lng
          })
  
          marker.updateGeometries([
            {
              "styleId": "marker",
              "id": "1",
              "position": event.latLng,
            }
          ])
        });
        //为地图注册click事件获取鼠标点击出的经纬度坐标
  
        this.map = addMap;
48ea9c43   wuxw   巡检开发完成
96
      },
b5dad34f   wuxw   巡检功能测试中
97
98
  
  
48ea9c43   wuxw   巡检开发完成
99
100
101
102
103
      addMarker(position) {
        // 清除现有标记
        if (this.marker) {
          this.marker.setMap(null)
        }
b5dad34f   wuxw   巡检功能测试中
104
  
48ea9c43   wuxw   巡检开发完成
105
        // 创建新标记
9d019fa6   wuxw   测试OA相关流程
106
107
        let TMap = window.TMap
  
48ea9c43   wuxw   巡检开发完成
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
        this.marker = new TMap.MultiMarker({
          map: this.map,
          styles: {
            "marker": new TMap.MarkerStyle({
              width: 25,
              height: 35,
              src: '/img/maper.png',
              anchor: { x: 32, y: 32 }
            })
          },
          geometries: [{
            id: '1',
            styleId: 'marker',
            position: position
          }]
        })
b5dad34f   wuxw   巡检功能测试中
124
  
48ea9c43   wuxw   巡检开发完成
125
126
127
128
        // 移动地图中心到标记位置
        this.map.setCenter(position)
        this.map.setZoom(16)
      },
b5dad34f   wuxw   巡检功能测试中
129
  
48ea9c43   wuxw   巡检开发完成
130
131
      updatePosition(lat, lng) {
        if (!this.map) return
9d019fa6   wuxw   测试OA相关流程
132
  
b5dad34f   wuxw   巡检功能测试中
133
        const position = new window.TMap.LatLng(lat, lng)
48ea9c43   wuxw   巡检开发完成
134
135
136
        this.addMarker(position)
      }
    },
48ea9c43   wuxw   巡检开发完成
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
    beforeDestroy() {
      // 组件销毁时清除地图实例
      if (this.map) {
        this.map.destroy()
        this.map = null
      }
    }
  }
  </script>
  
  <style scoped>
  .select-map-pos-container {
    width: 100%;
    height: 100%;
  }
  </style>