fence.js 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. (function () {
  2. var page = {
  3. init: function ($page, param) {
  4. // //地图初始化
  5. var map = new AMap.Map("fence-map", {
  6. center: [113.955439, 22.542956],//地图中心点
  7. zoom: 12 //地图显示的缩放级别
  8. });
  9. learun.layer.loading(true, "加载数据中");
  10. map.on('complete', function(){
  11. learun.layer.loading(false);
  12. });
  13. // // var polygonFence = new AMap.Polygon({
  14. // // strokeColor: "#FF33FF",
  15. // // strokeWeight: 6,
  16. // // strokeOpacity: 0.2,
  17. // // fillOpacity: 0.4,
  18. // // fillColor: '#1791fc',
  19. // // zIndex: 50,
  20. // // })
  21. if(param){
  22. var fenceInfo = param.fenceInfo;
  23. var defaultPt = param.defaultLocation;
  24. var ableStatus = param.fenceAlarmStatus;
  25. var radius = fenceInfo.data.radius;
  26. }
  27. if(ableStatus){
  28. $('#fence-switch').addClass('f-active');
  29. }
  30. console.log(param);
  31. var circleFence = new AMap.Circle({
  32. center: defaultPt,
  33. radius: radius || 100,
  34. strokeOpacity: 0,
  35. strokeWeight: 0,
  36. strokeOpacity: 0.2,
  37. fillOpacity: 0.3,
  38. fillColor : '#1791fc',
  39. zIndex: 50,
  40. });
  41. circleFence.setMap(map)
  42. map.setFitView(circleFence);
  43. // displayFence(fenceInfo);
  44. $page.find('#fence-switch').lrswitch();
  45. var rangeObj = $('#fence-radius');
  46. rangeObj[0].value = radius || 100;
  47. $('#display-radius')[0].innerHTML = rangeObj[0].value;
  48. //获取要设置的半径
  49. function getSetRadius(){
  50. return rangeObj[0].value;
  51. }
  52. $('#fence-radius').on('input',function(){
  53. $('#display-radius')[0].innerHTML = this.value;
  54. var radius = getSetRadius();
  55. circleFence.setRadius(radius);
  56. // setFenceView(circleFence);
  57. map.setFitView([ circleFence ]);
  58. });
  59. map.on('moveend', function(){
  60. var center = map.getCenter();
  61. circleFence.setCenter(center);
  62. });
  63. //保存
  64. $page.find('#save-fence').on('tap', function(){
  65. learun.layer.confirm('保存将会覆盖原围栏', function (_index) {
  66. if(_index === '1'){
  67. var data = getPostData();
  68. console.log(data);
  69. if(!data){
  70. learun.layer.toast('围栏信息有误或者为空');
  71. return;
  72. }
  73. postFence(data);
  74. }else{
  75. return;
  76. }
  77. }, '保存围栏', ['否', '是']);
  78. });
  79. //获取提交数据
  80. function getPostData(){
  81. var fenceEnable = getAbleStatus();
  82. var circleCenter = circleFence.getCenter();
  83. var center = {lng: circleCenter.lng, lat:circleCenter.lat}
  84. var fenceData = {};
  85. fenceData.type = 'circle';
  86. fenceData.data = {};
  87. fenceData.data.radius = circleFence.getRadius();
  88. fenceData.data.center = center;
  89. var data = {};
  90. // vehicleNumber: 'AAAAAA000003',
  91. // data: fenceData,
  92. // fenceAlarmEnable: fenceEnable
  93. data.vehicleNumber = 'AAAAAA000003';
  94. data.data = JSON.stringify(fenceData);
  95. data.fenceAlarmEnable = fenceEnable;
  96. console.log(data)
  97. return data;
  98. }
  99. //获取启用状态
  100. function getAbleStatus(){
  101. var status = $('#fence-switch').hasClass('f-active');
  102. if(status){
  103. return true;
  104. }else{
  105. return false;
  106. }
  107. }
  108. //post围栏信息
  109. function postFence(data){
  110. learun.httppost(config.webapi+'?s=api/save_fence_info',data,function(res){
  111. if(!res.success){
  112. learun.layer.toast(res.message);
  113. return;
  114. }
  115. learun.layer.toast('保存成功');
  116. });
  117. }
  118. //显示围栏(初始)
  119. // function displayFence(fenceInfo){
  120. // if(!fenceInfo){
  121. // circleFence.setCenter(defaultPt);
  122. // var radius = getSetRadius();
  123. // circleFence.setRadius(radius);
  124. // // circleFence.setMap(map);
  125. // map.setFitView([ circleFence ]);
  126. // return;
  127. // }
  128. // var fence = fenceInfo;
  129. // console.log(fence);
  130. // if(fence.type == 'circle'){
  131. // var pt = new AMap.LngLat(fence.data.center.lng, fence.data.center.lat);
  132. // // circleFence.setCenter(pt);
  133. // circleFence.setRadius(fence.data.radius);
  134. // // circleFence.setMap(map);
  135. // map.setFitView([ circleFence ]);
  136. // return;
  137. // }
  138. // // if(fence.type == 'polygon'){
  139. // // var pts = [];
  140. // // var paths = fence.data.vertex;
  141. // // paths.forEach(v => {
  142. // // pts.push([v.lng, v.lat]);
  143. // // });
  144. // // polygonFence.setPath(pts);
  145. // // polygonFence.setMap(map);
  146. // // map.setFitView([ polygonFence ]);
  147. // // return;
  148. // // }
  149. // }
  150. }
  151. };
  152. return page;
  153. })();