toolFlyLineModal.js 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. define([
  2. 'html!templates/tools/toolFlyLineModal',
  3. 'css!styles/tools/toolFlyLineModal'],function(tpcLayout){
  4. /**
  5. * 状态值
  6. * @type {Boolean}
  7. * @default false
  8. * @private
  9. */
  10. var status = {
  11. initialized:false,//是否初始化
  12. veiwHeightType:null
  13. };
  14. /**
  15. * 模块数据 用于数据存储和外部调用
  16. * @type {Object}
  17. * 数据存放
  18. */
  19. var modValue = {
  20. };
  21. /**
  22. * 飞行模拟初始化
  23. */
  24. function init(){
  25. if(!status.initialized){
  26. setLayout();
  27. bindEvent();
  28. subscribe();
  29. status.initialized = true;
  30. }
  31. ONEMAP.C.publisher.publish({
  32. modName: 'toolFlyLineModel'
  33. }, 'tools:active');
  34. };
  35. function setLayout(){
  36. $('body').append(tpcLayout);
  37. //拖拽
  38. $("#flyLineModal .popup-ct").dragmove($('#flyLineModal'));
  39. };
  40. function subscribe(){
  41. ONEMAP.C.publisher.subscribe(remove,'tools:active');
  42. ONEMAP.C.publisher.subscribe(remove, 'change23D');
  43. //ONEMAP.C.publisher.subscribe(resizeLayout,'map3DclickNew')
  44. };
  45. function resizeLayout(){
  46. if($("#selectFlyLine").hasClass('cur')){
  47. $("#selectFlyLine").removeClass('cur')
  48. }
  49. }
  50. function remove(options){
  51. if(options.modName != 'toolFlyLineModel'){
  52. $(".tools-flyLineModal").removeClass('cur');
  53. $('#clearFlyLine').click();
  54. removeflyLineModal();
  55. }else{
  56. if($(".tools-flyLineModal").hasClass('cur')){
  57. $(".tools-flyLineModal").removeClass('cur');
  58. $('#clearFlyLine').click();
  59. removeflyLineModal();
  60. }else{
  61. $(".tools-flyLineModal").addClass('cur');
  62. addflyLineModal();
  63. }
  64. }
  65. if(options == '2d'){
  66. $('#flyLineModal').removeClass('class3d');
  67. }else{
  68. $('#flyLineModal').addClass('class3d');
  69. }
  70. }
  71. /**
  72. * 加载模拟飞行
  73. */
  74. function addflyLineModal(){
  75. $("#flyLineModal").show();
  76. };
  77. /**
  78. * 移除模拟飞行
  79. */
  80. function removeflyLineModal(){
  81. $("#flyLineModal").hide();
  82. }
  83. /**
  84. * 绑定点击事件
  85. */
  86. function bindEvent(){
  87. //清除路线
  88. $('#clearFlyLine').bind('click',function(){
  89. locaSpaceMap.Globe.StopFly();
  90. $("#drawFlyLine").removeClass('cur');
  91. $("#selectFlyLine").removeClass('cur');
  92. locaSpaceMap.Globe.Action = 0; //使鼠标动作返回普通浏览状态
  93. locaSpaceMap.Globe.MemoryLayer.RemoveAllFeature();
  94. //刷新显示
  95. locaSpaceMap.Refresh();
  96. $('#drawFlyLine, #selectFlyLine, #flyByLine').show();
  97. $('#flyStop , #flyGo').hide();
  98. });
  99. //绘制路线
  100. $("#drawFlyLine").bind('click',function(){
  101. if($(this).hasClass('cur')){
  102. $(this).removeClass('cur');
  103. locaSpaceMap.Globe.Action = 0; //使鼠标动作返回普通浏览状态
  104. locaSpaceMap.Refresh(); //刷新显示
  105. }else {
  106. $('#toolsModal .modal-body .cur').removeClass('cur');
  107. $(this).addClass('cur');
  108. locaSpaceMap.Globe.Action = 10;
  109. locaSpaceMap.Refresh(); //刷新显示
  110. }
  111. })
  112. //选定路线
  113. $('#selectFlyLine').bind('click',function(){
  114. if($(this).hasClass('cur')){
  115. $(this).removeClass('cur');
  116. locaSpaceMap.Globe.Action = 0; //使鼠标动作返回普通浏览状态
  117. locaSpaceMap.Refresh(); //刷新显示
  118. }else {
  119. $('#flyLineModal .modal-body .cur').removeClass('cur');
  120. $(this).addClass('cur');
  121. locaSpaceMap.Globe.Action = 5;
  122. locaSpaceMap.Refresh(); //刷新显示
  123. }
  124. });
  125. //沿线飞行
  126. $('#flyByLine').bind('click',function(){
  127. var features=locaSpaceMap.Globe.DestLayerFeatureAdd.GetAllFeatures();
  128. if(locaSpaceMap.Globe.SelectedObject){
  129. var flyAlongLineSpeed=parseInt($('#flyOptions').find('input[name="flySpeed"]').val())?parseInt($('#flyOptions').find('input[name="flySpeed"]').val()):0;
  130. var flyAlongLineHeight=parseInt($('#flyOptions').find('input[name="flyHeight"]').val())?parseInt($('#flyOptions').find('input[name="flyHeight"]').val()):0;
  131. var flyAlongLineElev=parseInt($('#flyOptions').find('input[name="flyElevation"]').val())?parseInt($('#flyOptions').find('input[name="flyElevation"]').val()):0;
  132. //var flyAlongLineHead=parseInt($('#flyOptions').find('input[name="flyHeading"]').val())?parseInt($('#flyOptions').find('input[name="flyHeading"]').val()):0;
  133. if(flyAlongLineSpeed<100 || flyAlongLineSpeed>100000){
  134. alert('请输入大于100小于100000的速度值');
  135. return false;
  136. }
  137. if(flyAlongLineHeight<300 || flyAlongLineHeight>100000){
  138. alert('请输入大于300小于100000的高度值');
  139. return false;
  140. }
  141. if(flyAlongLineElev<1 || flyAlongLineElev>90){
  142. alert('请输入大于1小于90的仰角值');
  143. return false;
  144. }
  145. //if(flyAlongLineHead<1 || flyAlongLineHead>360){
  146. // alert('请输入大于1小于360的仰角值');
  147. // return false;
  148. //}
  149. //禁止倾斜
  150. locaSpaceMap.Globe.FlyAlongLineSpeed=flyAlongLineSpeed;
  151. locaSpaceMap.Globe.FlyEyeAlongWithLine1(locaSpaceMap.Globe.SelectedObject.Geometry, flyAlongLineHeight, flyAlongLineElev, true, 0 , false);
  152. locaSpaceMap.Globe.Action = 0;
  153. $('#drawFlyLine, #selectFlyLine, #flyByLine').hide();
  154. $('#flyStop , #flyGo').show();
  155. }else {
  156. alert('请绘制或选择路线!');
  157. }
  158. });
  159. $('#flyGo').bind('click',function(){
  160. locaSpaceMap.Globe.ContinueFly();
  161. });
  162. $('#flyStop').bind('click',function(){
  163. $('#drawFlyLine, #selectFlyLine, #flyByLine').show();
  164. $('#flyStop , #flyGo').hide();
  165. locaSpaceMap.Globe.StopFly();
  166. });
  167. }
  168. return ONEMAP.M.toolFlyLineModel = {
  169. init:init
  170. }
  171. })