Blame view

src/components/VMap.vue 4.93 KB
1e4db980   liuqimichale   轮廓
1
  <template>
f1105655   liuqimichale   map
2
      <div class="map-wrap" id="map"></div>
1e4db980   liuqimichale   轮廓
3
4
5
  </template>
  
  <script>
f1105655   liuqimichale   map
6
7
8
9
  import busyCar from '../images/content/busy-status.png'; //以import的方式导入图片文件
  import normalCar from '../images/content/normal-status.png'; //以import的方式导入图片文件
  import idleCar from '../images/content/idle-status.png'; //以import的方式导入图片文件
  
1e4db980   liuqimichale   轮廓
10
  export default {
f1105655   liuqimichale   map
11
    name: 'VMap',
633692cc   liuqimichale   axios
12
13
14
15
    props:['mapdata'],
    data(){
      return{
        map:'',
7d8d3bd4   liuqimichale   收入单位处理
16
        mapdataarr:[]
633692cc   liuqimichale   axios
17
18
      }
    },
f1105655   liuqimichale   map
19
    mounted(){
efc9bf4b   liuqimichale   地图坐标
20
      console.log(this.mapdata)
7d8d3bd4   liuqimichale   收入单位处理
21
      this.map = new BMap.Map('map', {enableMapClick: false})
83ffa354   liuqimichale   地图 数据
22
23
24
25
26
27
  
    },
    watch:{
      // mapdata:function (newVal) {
      //   console.log(newVal)
      // }
efc9bf4b   liuqimichale   地图坐标
28
29
30
31
32
      mapdata:  {
        handler(){
  
          this.mapdataarr = this.mapdata.data
          //let mapData = this.mapdataarr
7d8d3bd4   liuqimichale   收入单位处理
33
34
35
36
37
38
39
40
          // let map = this.map
          console.log(this.mapdata)
          // let data =  [
          //     {Name:'万达停车场1',lonId:'111.742579',latId:'40.818675',status:0,freeBrethNum:0,plBerthNum:1000,plName:'万达广场停车场1',plAddress:'北京万达广场1'},
          //     {Name:'万达停车场2',lonId:'111.622579',latId:'40.878675',status:1,freeBrethNum:100,plBerthNum:800,plName:'万达广场停车场2',plAddress:'北京万达广场2'},
          //     {Name:'万达停车场333333',lonId:'111.782579',latId:'40.778675',status:2,freeBrethNum:300,plBerthNum:500,plName:'万达广场停车场3',plAddress:'北京万达广场3'}
          //   ];
          // let data = this.data
efc9bf4b   liuqimichale   地图坐标
41
42
43
          console.log(this.mapdata.lonId)
          console.log(this.mapdata.latId)
          var point = new BMap.Point(this.mapdata.lonId, this.mapdata.latId)
7d8d3bd4   liuqimichale   收入单位处理
44
45
46
47
          this.map.centerAndZoom(point, 22)
          var mapStyle={  style : "midnight" }
          this.map.enableScrollWheelZoom(false);
          this.map.setMapStyle(mapStyle);
7d8d3bd4   liuqimichale   收入单位处理
48
  
83ffa354   liuqimichale   地图 数据
49
          this.drawMap()
efc9bf4b   liuqimichale   地图坐标
50
51
52
        },
        deep:true
  
7d8d3bd4   liuqimichale   收入单位处理
53
      },
f1105655   liuqimichale   map
54
55
    },
    methods:{
633692cc   liuqimichale   axios
56
57
58
      initMap(){
  
      },
f1105655   liuqimichale   map
59
      drawMap(){
f1105655   liuqimichale   map
60
  
7d8d3bd4   liuqimichale   收入单位处理
61
        this.map.clearOverlays();
f1105655   liuqimichale   map
62
63
        var i = 0;
        var points = [];
efc9bf4b   liuqimichale   地图坐标
64
        let mapData = this.mapdata.data
7d8d3bd4   liuqimichale   收入单位处理
65
        var that = this
633692cc   liuqimichale   axios
66
        for (var item in mapData) {
f1105655   liuqimichale   map
67
68
69
          (function (x) {
            var itemthat = item;
            //创建标注
633692cc   liuqimichale   axios
70
            var pt = new BMap.Point(mapData[item].lonId, mapData[item].latId);
f1105655   liuqimichale   map
71
            points[i] = pt;
e73a397f   liuqimichale   进出场
72
            if(mapData[item].freeBrethNum/mapData[item].plBerthNum == 0|mapData[item].freeBrethNum==0){
5b095e2d   liuqimichale   地图
73
              var myIcon = new BMap.Icon(idleCar,
f1105655   liuqimichale   map
74
75
76
77
78
                new BMap.Size(29, 40), {
                  offset: new BMap.Size(10, 40),
                  textColor: '#fff'
                });
              var marker = new BMap.Marker(pt,{icon:myIcon});
633692cc   liuqimichale   axios
79
            } else if(mapData[item].freeBrethNum/mapData[item].plBerthNum <= 0.3){
f1105655   liuqimichale   map
80
81
82
83
84
85
86
              var myIcon = new BMap.Icon(normalCar,
                new BMap.Size(29, 40), {
                  offset: new BMap.Size(10, 40),
                  textColor: '#fff'
                });
              var marker = new BMap.Marker(pt,{icon:myIcon});
            } else {
5b095e2d   liuqimichale   地图
87
              var myIcon = new BMap.Icon(busyCar,
f1105655   liuqimichale   map
88
89
90
91
92
93
                new BMap.Size(29, 40), {
                  offset: new BMap.Size(10, 40),
                  textColor: '#fff'
                });
              var marker = new BMap.Marker(pt,{icon:myIcon});
            }
efc9bf4b   liuqimichale   地图坐标
94
  
f1105655   liuqimichale   map
95
96
  
            marker.setTop(true,27000000);
894cea60   liuqimichale   地图坐标
97
98
99
100
101
            // marker.addEventListener('click',function () {
            //   console.log(marker)
            //   var p = marker.getPosition();  //获取marker的位置
            //   alert("marker的位置是" + p.lng + "," + p.lat);
            // })
7d8d3bd4   liuqimichale   收入单位处理
102
            that.map.addOverlay(marker);
f1105655   liuqimichale   map
103
            var myLabel;
7d8d3bd4   liuqimichale   收入单位处理
104
            that.map.removeOverlay(myLabel);
f1105655   liuqimichale   map
105
  
5b095e2d   liuqimichale   地图
106
107
108
            // map.removeOverlay(myLabel);
            myLabel = new BMap.Label(
              `<div class="dialog-wrap">
633692cc   liuqimichale   axios
109
110
                    <div class="dialog-header" title="${mapData[item].plAddress}">${mapData[item].plName}</div>
                    <div class="dialog-address" title="${mapData[item].plAddress}">${mapData[item].plAddress}</div>
5b095e2d   liuqimichale   地图
111
                    <ul class="dislog-body">
633692cc   liuqimichale   axios
112
                      <li><div>${mapData[item].freeBrethNum}</div><div>空闲</div></li>
5b095e2d   liuqimichale   地图
113
                      <li></li>
633692cc   liuqimichale   axios
114
                      <li><div>${mapData[item].plBerthNum}</div><div>总数</div></li>
5b095e2d   liuqimichale   地图
115
                    </ul>
83ffa354   liuqimichale   地图 数据
116
117
                    <div class="dislog-footer">停车场收入:${mapData[item].income}元</div>
                    <div class="dislog-footer">停车场欠费:${mapData[item].arreageincome}元</div>
5b095e2d   liuqimichale   地图
118
119
120
121
122
123
                  </div>`,
              {
                offset: new BMap.Size(-225, -55),   //label的偏移量,为了让label的中心显示在点上
                position: pt
              });
            myLabel.setStyle({
5b095e2d   liuqimichale   地图
124
                padding: "0",
5b095e2d   liuqimichale   地图
125
126
127
                backgroundColor: "",
                border: "0px",
                zIndex: "1000"
f1105655   liuqimichale   map
128
              }
5b095e2d   liuqimichale   地图
129
130
131
            );
            marker.setLabel(myLabel)
            marker.setTop(true,27000000);
f1105655   liuqimichale   map
132
133
134
135
136
137
138
139
            i++;
          })(i);
        }
  
      }
  
    }
  
1e4db980   liuqimichale   轮廓
140
141
142
143
  }
  </script>
  
  <style scoped lang="scss">
f1105655   liuqimichale   map
144
145
146
147
      .map-wrap{
          width: 100%;
          height: 100%;
      }
5b095e2d   liuqimichale   地图
148
149
  
  
1e4db980   liuqimichale   轮廓
150
  </style>