fence.js 6.2 KB

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