fence.js 5.9 KB

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