heighterControl.js 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302
  1. define(['html!templates/heighterControl_mini',
  2. 'css!styles/heighterControl_mini'
  3. ],
  4. function(tplayout) {
  5. /**
  6. * [modValue description]
  7. * 数据存储
  8. * @type {[type]}
  9. */
  10. var modValue = {
  11. curLayerModel: null,
  12. curAddLayer: {},
  13. appendToMyLayer: null,
  14. shijingGroup: null
  15. };
  16. /**
  17. * 状态存储
  18. */
  19. var status = {
  20. initialized: false
  21. };
  22. /**
  23. * 模块初始化
  24. */
  25. function init() {
  26. if (!status.initialized) {
  27. status.initialized = true;
  28. setLayout();
  29. subscribe();
  30. bindEvents();
  31. }
  32. }
  33. /**
  34. * [setLayout description]
  35. * 加载布局0
  36. */
  37. function setLayout() {
  38. $(tplayout).appendTo($("#wrapper"));
  39. //添加路网实景控件
  40. modValue.leadorStreetViewControl = new L.Control.LeadorStreetView();
  41. modValue.leadorStreetViewControl.addTo(map2DViewer.map);
  42. };
  43. function change23D(options) {
  44. if (options == '2d') {
  45. $('#heighterSlider').removeClass('class3d');
  46. $("#leadorStreetViewModal .popup_html").removeClass('TD');
  47. } else {
  48. $('#heighterSlider').addClass('class3d');
  49. $("#leadorStreetViewModal .popup_html").addClass('TD');
  50. }
  51. }
  52. /**
  53. * 加载监听事件
  54. */
  55. function subscribe() {
  56. ONEMAP.C.publisher.subscribe(change23D, 'change23D');
  57. ONEMAP.C.publisher.subscribe(function(zoom) {
  58. if (zoom < 11) {
  59. jumpToLiveaction('clear');
  60. $("#heighterSlider").hide();
  61. } else if(onemapUrlConfig.leadorSwitch){
  62. $("#heighterSlider").show();
  63. }
  64. }, 'mapChange23D');
  65. ONEMAP.C.publisher.subscribe(function(options) {
  66. if (modValue.leadorStreetViewControl) {
  67. modValue.leadorStreetViewControl.updateMarker3D(options.latlng);
  68. }
  69. }, 'map3DclickNew')
  70. };
  71. /**
  72. * 加载点击事件
  73. */
  74. function bindEvents() {
  75. $("#heighterSlider .heighterslider-content .heighterslider-li").bind('click', function() {
  76. if ($(this).hasClass('active')) {
  77. $("#heighterSlider .heighterslider-content .heighterslider-li").removeClass('active');
  78. var mid = 'clear';
  79. } else {
  80. var mid = $(this).attr('mid');
  81. $("#heighterSlider .heighterslider-content .heighterslider-li").removeClass('active');
  82. $(this).addClass('active');
  83. }
  84. jumpToStallite(mid); //19
  85. jumpToIonosphere(mid); //18
  86. jumpToClouds(mid);
  87. jumpToImage(mid);
  88. jumpToModel(mid);
  89. jumpToLiveaction(mid);
  90. })
  91. $("#menu .liveaction").off("click").on("click", function() {
  92. var mid;
  93. if ($(this).hasClass('active')) {
  94. $(this).removeClass('active');
  95. mid = 'clear';
  96. } else {
  97. mid = $(this).attr('mid');
  98. $(this).addClass('active');
  99. }
  100. jumpToLiveaction(mid);
  101. })
  102. };
  103. function jumpToStallite(mid) {
  104. if (mid == 'stallite') {
  105. if (modValue.curLayerModel != 'stallite') {
  106. setViewer(1);
  107. ONEMAP.C.publisher.publish('3D', 'layout::mapStyle');
  108. modValue.curLayerModel = 'stallite';
  109. if (ONEMAP.M.taiShiMap) { ONEMAP.M.taiShiMap.removeAllLayers() }
  110. require(['modDir/weixing/daohang'], function(daohang) {
  111. daohang.init($(this));
  112. });
  113. }
  114. } else {
  115. if (ONEMAP.M.daohang) {
  116. ONEMAP.M.daohang.cleanmap();
  117. modValue.curLayerModel = null;
  118. }
  119. }
  120. };
  121. function jumpToIonosphere(mid) {
  122. if (mid == 'ionosphere') {
  123. if (modValue.curLayerModel != 'ionosphere') {
  124. setViewer(2);
  125. modValue.curLayerModel = 'ionosphere';
  126. }
  127. } else {
  128. modValue.curLayerModel = null;
  129. }
  130. };
  131. function jumpToClouds(mid) {
  132. if (mid == 'clouds') {
  133. if (modValue.curLayerModel != 'clouds') {
  134. setViewer(4);
  135. modValue.curLayerModel = 'clouds';
  136. }
  137. } else {
  138. modValue.curLayerModel = null;
  139. }
  140. };
  141. function jumpToImage(mid) {
  142. if (mid == 'image') {
  143. ONEMAP.C.publisher.publish('showGH', 'layout::mapStyle');
  144. } else {
  145. modValue.curLayerModel = null;
  146. }
  147. };
  148. function jumpToModel(mid) {
  149. if (mid == 'model') {
  150. if (modValue.curLayerModel != 'model') {
  151. modValue.curLayerModel = 'model';
  152. ONEMAP.C.publisher.publish('3D', 'layout::mapStyle');
  153. ONEMAP.C.publisher.publish('add', '3DModelControl');
  154. }
  155. } else {
  156. ONEMAP.C.publisher.publish('remove', '3DModelControl');
  157. modValue.curLayerModel = null;
  158. }
  159. };
  160. function jumpToLiveaction(mid) {
  161. if (mid == 'liveaction') {
  162. $("#leadorStreetViewControl #leadorStreetViewWrap").dragmove($("#leadorStreetViewControl"));
  163. if (modValue.curLayerModel != 'liveaction') {
  164. map23DControl.setView({
  165. center: {
  166. lat: 39.91302,
  167. lng: 116.4166
  168. },
  169. zoom: 13
  170. })
  171. modValue.curLayerModel = 'liveaction';
  172. if (!modValue.shijingGroup) {
  173. modValue.shijingGroup = map23DControl.group({
  174. action: 'add'
  175. })
  176. }
  177. if (!modValue.appendToMyLayer) {
  178. var options = {
  179. action: "add",
  180. DOM: {
  181. name: '实景',
  182. type: "group",
  183. guid: modValue.shijingGroup
  184. }
  185. }
  186. modValue.appendToMyLayer = ONEMAP.M.myLayers.myLayerControl(options);
  187. ONEMAP.C.publisher.subscribe(controlMyLayer, modValue.appendToMyLayer);
  188. }
  189. modValue.leadorStreetViewControl.addShijing();
  190. if (map23DData.display.map2D){
  191. $("#leadorStreetViewModal .popup_html").removeClass('TD');
  192. }else{
  193. $("#leadorStreetViewModal .popup_html").addClass('TD');
  194. }
  195. $("#leadorStreetViewModal .popup-ct").dragmove($("#leadorStreetViewModal"));
  196. } else {
  197. jumpToLiveaction('clear')
  198. }
  199. } else {
  200. $("#heighterSlider .heighterslider-content .liveaction").removeClass('active');
  201. if (modValue.leadorStreetViewControl) {
  202. modValue.leadorStreetViewControl.controlShijing();
  203. modValue.curLayerModel = null;
  204. var options = {
  205. action: "remove",
  206. DOMid: modValue.appendToMyLayer
  207. }
  208. ONEMAP.M.myLayers.myLayerControl(options);
  209. ONEMAP.C.publisher.unSubscribe(controlMyLayer, modValue.appendToMyLayer);
  210. modValue.appendToMyLayer = false;
  211. modValue.shijingGroup = false;
  212. }
  213. }
  214. };
  215. function clearOtherLayer() {
  216. $("#heighterSlider .heighterslider-content .liveaction").removeClass('active');
  217. modValue.leadorStreetViewControl.controlShijing();
  218. modValue.curLayerModel = null;
  219. if (modValue.shijingGroup) {
  220. map23DControl.group({
  221. action: 'remove',
  222. guid: modValue.shijingGroup
  223. })
  224. modValue.shijingGroup = false;
  225. }
  226. }
  227. function controlMyLayer(options) {
  228. switch (options.action) {
  229. case 'remove':
  230. removeMyLayer();
  231. break;
  232. case 'opacity':
  233. setGropOpacity(options);
  234. break;
  235. case 'up':
  236. case 'down':
  237. setGroupZIndex(options);
  238. break;
  239. }
  240. };
  241. function setGroupZIndex(options){
  242. }
  243. function removeMyLayer() {
  244. jumpToLiveaction('clear');
  245. };
  246. function setGropOpacity(options) {
  247. options = options.options;
  248. if (options.opacity == 1) {
  249. map23DControl.group({
  250. action: 'show',
  251. guid: modValue.shijingGroup
  252. })
  253. $("#leadorStreetViewModal").show();
  254. modValue.leadorStreetViewControl.controlMyLayer('show');
  255. } else if (options.opacity == 0) {
  256. map23DControl.group({
  257. action: 'hide',
  258. guid: modValue.shijingGroup
  259. })
  260. $("#leadorStreetViewModal").hide();
  261. modValue.leadorStreetViewControl.controlMyLayer('hide');
  262. }
  263. }
  264. function setViewer(zoom) {
  265. map23DControl.setView({
  266. zoom: zoom,
  267. heading: 0, //摄像机平面角度 正北为0
  268. tilt: 0, //摄像机倾斜角
  269. })
  270. }
  271. /**
  272. * [layoutResize description]
  273. * 重置布局
  274. * @return {[type]} [description]
  275. */
  276. function layoutResize() {
  277. }
  278. return ONEMAP.M.heighterControl = {
  279. init: init,
  280. modValue: modValue
  281. }
  282. })