warn.vue 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. <template>
  2. <div>
  3. <div id="container" v-bind:style="'width: 100%;border: 1px solid #cecece;height:'+pageHeight*0.9+'px;'">
  4. </div>
  5. </div>
  6. </template>
  7. <script>
  8. import request from '@/utils/request'
  9. export default {
  10. data() {
  11. return {
  12. address: "",
  13. queryParams: {
  14. address: {},
  15. distance: "50"
  16. },
  17. placeInfo: [
  18. {value: "", label: ""}
  19. ],
  20. distanceOptions: [
  21. {value: "50", label: "50米"},
  22. {value: "100", label: "100米"},
  23. {value: "200", label: "200米"}
  24. ],
  25. map: null,
  26. pageHeight: document.documentElement.clientHeight
  27. }
  28. },
  29. created() {
  30. setTimeout(() => {
  31. this.initMap()
  32. }, 100)
  33. },
  34. methods: {
  35. initMap() {
  36. this.map = new BMap.Map("container", {enableMapClick: false}); // 创建Map实例 命名空间为BMAP
  37. this.map.centerAndZoom(new BMap.Point(113.465771, 30.368834), 13); // 初始化地图,设置中心点坐标和地图级别
  38. this.map.setCurrentCity("仙桃");
  39. this.map.enableScrollWheelZoom(true); //开启鼠标滚轮缩放
  40. this.map.disableDoubleClickZoom(); //禁用双击放大
  41. this.init();
  42. },
  43. init() {
  44. const t = this;
  45. request({
  46. url: '/monitorArea/infoList',
  47. method: "get"
  48. }).then(function (rs) {
  49. const areaInfo = rs.areaInfo;
  50. const noWarnClientInfo = rs.noWarnClientInfo;
  51. const WarnClientInfo = rs.WarnClientInfo;
  52. console.log(areaInfo, noWarnClientInfo, WarnClientInfo);
  53. areaInfo.forEach(data => {
  54. if (data.areaType == 3) {
  55. let listData = JSON.parse(data.areaData);
  56. let list = [];
  57. listData.forEach(areaData => {
  58. let pt = new BMap.Point(areaData.longitude, areaData.latitude);
  59. list.push(pt);
  60. });
  61. let polygon = new BMap.Polygon(list, {fillColor: data.areaColor, strokeWeight: 2, strokeOpacity: 0.5}); //创建折线
  62. t.map.addOverlay(polygon);
  63. var x = 0,
  64. y = 0;
  65. var path = polygon.getPath();//返回多边型的点数组;ply是多边形覆盖物
  66. for (var k = 0; k < path.length; k++) {
  67. x = x + parseFloat(path[k].lng);
  68. y = y + parseFloat(path[k].lat);
  69. }
  70. x = x / path.length;
  71. y = y / path.length;
  72. let points = [];
  73. let pt = new BMap.Point(x, y);
  74. points.push(pt);
  75. let icon = new BMap.Icon(require("@/assets/images/area_icon16x16.png"), new BMap.Size(16, 16));
  76. let options = {
  77. icon: icon
  78. }
  79. let marker = new BMap.Marker(pt, options);
  80. t.map.addOverlay(marker);
  81. marker.addEventListener('click', function (e) {
  82. var content =
  83. '<ul class="map-customer-info">'
  84. + '<li ><span>社区名称:</span>' + 'xxx社区' + '</li>'
  85. + '<li ><span>人口:</span>' + 'xxxxxx' + '</li>'
  86. + '<li ><span>零售户数量:</span>' + 'xxx' + '</li>'
  87. + '<li ><span>可办证数量:</span>' + 'xx' + '</li>'
  88. + '</ul>';
  89. t.$alert(content, '社区信息', {
  90. dangerouslyUseHTMLString: true
  91. });
  92. });
  93. }
  94. });
  95. let points = [];
  96. noWarnClientInfo.forEach(data => {
  97. let pt = new BMap.Point(data.longitude, data.latitude);
  98. pt.shortName = data.shortName;
  99. pt.clientCode = data.clientCode;
  100. pt.telephone = data.telephone;
  101. pt.cnname = data.cnname;
  102. points.push(pt);
  103. });
  104. let options = {
  105. size: BMAP_POINT_SIZE_NORMAL,
  106. shape: BMAP_POINT_SHAPE_STAR,
  107. color: '#848080'
  108. }
  109. let pointCollection = new BMap.PointCollection(points, options);
  110. pointCollection.addEventListener('click', function (e) {
  111. var content =
  112. '<ul class="map-customer-info">'
  113. + '<li ><span>许可证号:</span>' + e.point.clientCode + '</li>'
  114. + '<li ><span>名称:</span>' + e.point.shortName + '</li>'
  115. + '<li ><span>电话:</span>' + e.point.telephone + '</li>'
  116. + '<li ><span>客户经理:</span>' + e.point.cnname + '</li>'
  117. + '<li ><span>库存:</span>' + 666 + '</li>'
  118. + '</ul>';
  119. t.$alert(content, '零售户信息', {
  120. dangerouslyUseHTMLString: true
  121. });
  122. });
  123. t.map.addOverlay(pointCollection);
  124. });
  125. }
  126. }
  127. }
  128. </script>
  129. <style rel="stylesheet/scss" lang="scss">
  130. .BMap_cpyCtrl {
  131. display: none;
  132. }
  133. .anchorBL {
  134. display: none;
  135. }
  136. </style>