route.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297
  1. (function () {
  2. var page = {
  3. init: function ($page, param) {
  4. //页面初始化
  5. learun.layer.loading(true, "加载数据中");
  6. $('#date-time').text('时间:'+param.lastTime);
  7. $('#vehicle-speed').text('速度:'+param.speed+'km/h')
  8. //播放控制相关事件清除
  9. function removeEvents(){
  10. $(".icon-bofang").off("tap");
  11. $(".icon-last").off("tap");
  12. $(".icon-next").off("tap");
  13. $(".speed-set").off("tap");
  14. }
  15. //地图初始化
  16. var routeMap = new AMap.Map('route-map', {
  17. center: [117.000923, 36.675807],
  18. zoom: 15
  19. });
  20. routeMap.on('complete', function(){
  21. learun.layer.loading(false);
  22. });
  23. //test
  24. var initPage = function(PathSimplifier, data) {
  25. if(!data){
  26. if( window.pathSimplifierIns){
  27. window.pathSimplifierIns.setData([]);
  28. window.pathSimplifierIns = null;
  29. }
  30. $page.find('.icon-bofang').on('tap', function () {
  31. learun.layer.toast('当前日期无轨迹');
  32. });
  33. return;
  34. }
  35. removeEvents();
  36. if(window.pathSimplifierIns){
  37. window.pathSimplifierIns.setData([]);
  38. window.pathSimplifierIns = null;
  39. }
  40. //创建组件实例
  41. var pathSimplifierIns = new PathSimplifier({
  42. zIndex: 100,
  43. map: routeMap, //所属的地图实例
  44. getPath: function(pathData, pathIndex) {
  45. //返回轨迹数据中的节点坐标信息,[AMap.LngLat, AMap.LngLat...] 或者 [[lng|number,lat|number],...]
  46. // return pathData.path;
  47. var points = pathData.points,
  48. lnglatList = [];
  49. for (var i = 0, len = points.length; i < len; i++) {
  50. lnglatList.push(points[i].lngLat);
  51. }
  52. return lnglatList;
  53. },
  54. renderOptions: {
  55. //轨迹线的样式
  56. pathLineStyle: {
  57. strokeStyle: 'red',
  58. lineWidth: 6,
  59. dirArrowStyle: true
  60. }
  61. }
  62. });
  63. pathSimplifierIns.setData(data);
  64. //创建一个巡航器
  65. var navg0 = pathSimplifierIns.createPathNavigator(0, //关联第1条轨迹
  66. {
  67. loop: false, //循环播放
  68. speed: 1000
  69. });
  70. //播放速度控制
  71. $page.find('.speed-set').on('tap', function () {
  72. var speedSign = $page.find('#speed-icon');
  73. if(speedSign.hasClass('icon-beisu1')){
  74. speedSign.removeClass('icon-beisu1');
  75. speedSign.addClass('icon-beisu2');
  76. $page.find('.speed-level').html('中速');
  77. navg0.setSpeed(2*10000);
  78. }else if(speedSign.hasClass('icon-beisu2')){
  79. speedSign.removeClass('icon-beisu2');
  80. speedSign.addClass('icon-beisu4');
  81. $page.find('.speed-level').html('快速');
  82. navg0.setSpeed(4*10000);
  83. }else if(speedSign.hasClass('icon-beisu4')){
  84. speedSign.removeClass('icon-beisu4');
  85. speedSign.addClass('icon-beisu1');
  86. $page.find('.speed-level').html('慢速');
  87. navg0.setSpeed(10000);
  88. }
  89. });
  90. // 播放暂停切换
  91. $page.find('.icon-bofang').on('tap', function () {
  92. var playSign = $page.find('#play-pause');
  93. if(playSign.hasClass('icon-bofang')){
  94. playSign.removeClass('icon-bofang');
  95. playSign.addClass('icon-zanting');
  96. if(navg0.getNaviStatus() == 'stop'){
  97. navg0.start();
  98. }else{
  99. navg0.resume();
  100. }
  101. }else{
  102. playSign.removeClass('icon-zanting');
  103. playSign.addClass('icon-bofang');
  104. navg0.pause();
  105. }
  106. });
  107. //节点控制
  108. $page.find('.icon-last').on('tap', function () {
  109. if(navg0.getNaviStatus() == 'stop'){
  110. return;
  111. }
  112. if(navg0.getNaviStatus() == 'moving'){
  113. navg0.pause();
  114. // $('#play-pause').removeClass('icon-zanting');
  115. // $('#play-pause').addClass('icon-bofang');
  116. }
  117. //当前节点索引
  118. var presentNode = navg0.getCursor().idx;
  119. if(presentNode == 0){
  120. navg0.moveToPoint(0, 0);
  121. return;
  122. }
  123. navg0.moveToPoint(presentNode-1, 0);
  124. pathSimplifierIns.render();
  125. });
  126. $page.find('.icon-next').on('tap', function () {
  127. if(navg0.getNaviStatus() == 'stop'){
  128. return;
  129. }
  130. if(navg0.getNaviStatus() == 'moving'){
  131. navg0.pause();
  132. // $('#play-pause').removeClass('icon-zanting');
  133. // $('#play-pause').addClass('icon-bofang');
  134. }
  135. var endNode = navg0.getPathEndIdx();
  136. var presentNode = navg0.getCursor().idx;
  137. if(presentNode == endNode){
  138. return;
  139. }
  140. navg0.moveToPoint(presentNode+1, 0);
  141. pathSimplifierIns.render();
  142. });
  143. //重置
  144. $page.find('.icon-reset').on('tap', function () {
  145. navg0.moveToPoint(0, 0);
  146. navg0.stop();
  147. });
  148. //检测末端
  149. navg0.on('pause', function(){
  150. $('#play-pause').removeClass('icon-zanting');
  151. $('#play-pause').addClass('icon-bofang');
  152. });
  153. navg0.on('stop', function(){
  154. $('#play-pause').removeClass('icon-zanting');
  155. $('#play-pause').addClass('icon-bofang');
  156. });
  157. // $page.find('.text-area').on('tap', function(){
  158. // navg0.destroy();
  159. // });
  160. var pathData = pathSimplifierIns.getPathData(0).points;;
  161. navg0.on('move', function(){
  162. var presentIndex = navg0.getCursor().idx;
  163. var time = pathData[presentIndex].time;
  164. var speed = pathData[presentIndex].speed;
  165. $('#date-time').text('时间:'+time);
  166. $('#vehicle-speed').text('速度:'+speed+'km/h');
  167. });
  168. window.pathSimplifierIns = pathSimplifierIns;
  169. }
  170. AMapUI.load(['ui/misc/PathSimplifier'], function(PathSimplifier) {
  171. if (!PathSimplifier.supportCanvas) {
  172. alert('当前环境不支持 Canvas!');
  173. return;
  174. }
  175. $page.find('.date-set').rldate({
  176. type: 'date'
  177. },function(date){
  178. // $page.find('.f-dtpicker-ok').on('tap', function(){
  179. // });
  180. var pattern = /\d{4}(\-|\/|.)\d{1,2}\1\d{1,2}/;
  181. if(!pattern.test(date)){
  182. learun.layer.toast('请选择正确轨迹的日期');
  183. return;
  184. }
  185. var post_data = {
  186. "date":date,
  187. "deviceNumber":'868500028325363'
  188. }
  189. var geocoder = null;
  190. learun.httppost(config.webapi+'?s=api/get_gps_route',post_data,function(res){
  191. if(!geocoder){
  192. geocoder = new AMap.Geocoder({
  193. radius: 500 //范围,默认:500
  194. });
  195. }
  196. if(!res.success){
  197. learun.layer.toast(res.message);
  198. }
  199. var data = null;
  200. if(res.data){
  201. data = [{name:'test1',points:[]}];
  202. JSON.parse(res.data).forEach(v => {
  203. data[0].points.push({speed:v.speed, lngLat:[v.lng, v.lat], time:v.deviceTime});
  204. // lngLats.push([v.lng, v.lat]);
  205. });
  206. }
  207. initPage(PathSimplifier, data);
  208. });
  209. });
  210. //启动页面
  211. // initPage(PathSimplifier);
  212. // 6789012345
  213. var nowDate = new Date().Format("yyyy-MM-dd");
  214. var post_data = {
  215. "date": nowDate,
  216. "deviceNumber":'6789012345'
  217. }
  218. learun.httppost(config.webapi+'?s=api/get_gps_route',post_data,function(res){
  219. if(!res.success){
  220. learun.layer.toast(res.message);
  221. }
  222. var data = null;
  223. if(res.data){
  224. data = [{name:'test1',points:[]}];
  225. JSON.parse(res.data).forEach(v => {
  226. data[0].points.push({speed:v.speed, lngLat:[v.lng, v.lat], time:v.deviceTime});
  227. // lngLats.push([v.lng, v.lat]);
  228. });
  229. }
  230. initPage(PathSimplifier, data);
  231. });
  232. });
  233. }
  234. };
  235. return page;
  236. })();