gcmsDetail.js 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. /**
  2. * [ONEMAP.M.gcmsDetail]
  3. * @return {[object]}
  4. */
  5. define([
  6. 'html!templates/gcms/gcmsDetail',
  7. 'css!styles/typo',
  8. 'css!styles/gcms/gcmsDetail',
  9. 'modDir/gcms/androidEvent'],
  10. function(tpcLayout){
  11. //参数
  12. var modValue = {
  13. options:{},
  14. appendToMyLayer:null
  15. }
  16. //地图层
  17. /**
  18. * 模块初始化
  19. * @return {[type]} [description]
  20. */
  21. function init(options){
  22. remove();
  23. modValue.options = {};
  24. for(var op in options){
  25. modValue.options[op] = options[op];
  26. }
  27. //注册监听
  28. subscribe();
  29. //获取内容数据
  30. getDetailData({callback:function(){
  31. setDetailModal();
  32. }});
  33. }
  34. function getDetailData(options){
  35. ONEMAP.V.loading.load();
  36. $.ajax({
  37. url: onemapUrlConfig.gcmsServiceUrl+'/show/'+modValue.options['column_name']+'/'+modValue.options['article_id'],
  38. type:"GET",
  39. dataType: 'json'
  40. })
  41. .done(function(data) {
  42. ONEMAP.V.loading.loaded();
  43. if(data.code == 4){
  44. ONEMAP.C.noPermission('getDetailData');
  45. return false;
  46. }
  47. if(data.code == 3){
  48. ONEMAP.C.logout('getDetailData');
  49. }
  50. ONEMAP.D.gcmsCurArticleData = data['data'];
  51. options.callback();
  52. })
  53. .fail(function() {
  54. ONEMAP.V.loading.loaded();
  55. });
  56. }
  57. /**
  58. * 设置容器
  59. */
  60. function setDetailModal(){
  61. // console.log(ONEMAP.D.gcmsCurArticleData['detail_html'])
  62. // ONEMAP.D.gcmsCurArticleData['detail_html'] = ONEMAP.D.gcmsCurArticleData['detail_html'].replace("proxy_gcms","proxy_gcms_network");
  63. var template = Handlebars.compile(tpcLayout);
  64. var dHTML= ONEMAP.D.gcmsCurArticleData['detail_html'];
  65. dHTML = replaceString(dHTML,'.jpg','.jpg?jwt='+ONEMAP.D.user.ticket);
  66. dHTML = replaceString(dHTML,'.png','.png?jwt='+ONEMAP.D.user.ticket);
  67. $('body').append(template({
  68. title:ONEMAP.D.gcmsCurArticleData['record']['gcms_title'],
  69. detailTemplate:dHTML
  70. }));
  71. if(map23DData.display.map2D){
  72. $('#gcmsDetailModal').removeClass('TD');
  73. }else{
  74. $('#gcmsDetailModal').addClass('TD');
  75. }
  76. $('#gcmsDetailModal').show();
  77. bindEvent();
  78. layoutResize();
  79. // var pian = _getPianLatlon(_this._map.getCenter(), parseInt($(window).width() / 6), 0);
  80. // _map.setView(pian, _this._map.getZoom());
  81. if(ONEMAP.D.gcmsCurArticleData['record'].hasOwnProperty('map_center_lat')){
  82. var pX = -(ONEMAP.M.pcLayout.styles.mapWidth / 2 - (ONEMAP.M.pcLayout.styles.mapWidth - 330) / 2);
  83. var pian = _getPianLatlon(L.latLng(ONEMAP.D.gcmsCurArticleData['record']['map_center_lat'], ONEMAP.D.gcmsCurArticleData['record']['map_center_lon']), pX, 0);
  84. if(map23DData.display.map2D){
  85. map2DViewer.map.setView(pian, map23DData.view.zoom);
  86. }else if(map23DData.display.map3D){
  87. map3DViewer.setView({
  88. center:{
  89. lat:pian.lat,
  90. lng:pian.lng
  91. },
  92. zoom:map23DData.view.zoom,
  93. heading:0,//摄像机平面角度 正北为0
  94. tilt:0,//摄像机倾斜角
  95. });
  96. }
  97. }
  98. $(window).resize(function() {
  99. layoutResize();
  100. });
  101. }
  102. /**
  103. * [replaceString description]
  104. * 字符串替换
  105. * @param {[type]} string [description]
  106. * @param {[type]} type [description]
  107. * @param {[type]} change [description]
  108. * @return {[type]} [description]
  109. */
  110. function replaceString(string,type,change){
  111. type = "/"+type+"/g";
  112. return string.replace(eval(type),change)
  113. }
  114. /**
  115. * 获取偏移坐标
  116. * @type {Function}
  117. * @param latlng{Object} 坐标
  118. * @param x {Number} 偏移x
  119. * @param y {Number} 偏移y
  120. * @returns {L.LatLng}
  121. * @private
  122. */
  123. function _getPianLatlon(latlng, x, y, zoom) {
  124. var aLatLng = new L.LatLng(latlng.lat, latlng.lng);
  125. var zoom = zoom ? zoom : map23DData.view.zoom;
  126. var bPoints = map2DViewer.map.project(aLatLng, zoom);
  127. bPoints.x -= parseInt(x);
  128. bPoints.y -= parseInt(y);
  129. aLatLng = map2DViewer.map.unproject(bPoints, zoom);
  130. return aLatLng;
  131. }
  132. /**
  133. * 事件绑定
  134. * @return {[type]} [description]
  135. */
  136. function bindEvent(){
  137. $('#gcmsDetailModal .close').bind('click', function() {
  138. remove();
  139. $("#userIGListInfo section.item li.item").removeClass('selected');
  140. // if(ONEMAP.M.diyData!=""){
  141. // ONEMAP.C.publisher.publish({
  142. // action:'remove',
  143. // guid: ONEMAP.M.diyData
  144. // }, ONEMAP.M.diyData);
  145. // var options = {
  146. // action: "remove",
  147. // DOMid: ONEMAP.M.diyData
  148. // }
  149. // ONEMAP.M.diyData = ONEMAP.M.myLayers.myLayerControl(options);
  150. // // console.log(ONEMAP.M.diyData);
  151. // }
  152. });
  153. $('#gcmsDetailModal .modal-header').dragmove($('#gcmsDetailModal'));
  154. var $box2 = $('#gcmsDetailModal').on('mousedown', '#coorForGcmsDetailModal', function(e) {
  155. var posix = {
  156. 'w': $box2.width(),
  157. 'h': $box2.height(),
  158. 'x': e.pageX,
  159. 'y': e.pageY
  160. };
  161. $.extend(document, {'move': true, 'call_down': function(e) {
  162. $box2.css({
  163. 'width': Math.max(30, e.pageX - posix.x + posix.w),
  164. 'height': Math.max(30, e.pageY - posix.y + posix.h)
  165. });
  166. var bodyHeight = Math.max(30, e.pageY - posix.y + posix.h )-51-$("#gcmsDetailModal .modal-header").height();
  167. $("#gcmsDetailModal .popup-cb").css({height:bodyHeight});
  168. }});
  169. return false;
  170. });
  171. //拖拽
  172. $("#gcmsDetailModal .popup-ct").dragmove($('#gcmsDetailModal'));
  173. $("#gcmsDetailModal .popup-cb").mCustomScrollbar({
  174. scrollInertia: 500
  175. });
  176. }
  177. /**
  178. * 界面布局重置
  179. * @type {Function}
  180. */
  181. function layoutResize(){
  182. // .modal-body
  183. // $('#gcmsDetailModal').css({height:$(window).height()-300});
  184. $('#gcmsDetailModal .popup-cb').css({height:$(window).height()-351-$("#gcmsDetailModal .modal-header").height()});
  185. }
  186. /**
  187. * 切换23D样式
  188. */
  189. function layoutResizeCSS(cid) {
  190. if (cid == '2d') {
  191. $('#gcmsDetailModal').removeClass('TD');
  192. } else {
  193. $('#gcmsDetailModal').addClass('TD');
  194. }
  195. }
  196. /**
  197. * 注册监听
  198. * @type {Function}
  199. */
  200. function subscribe(){
  201. ONEMAP.C.publisher.subscribe(remove,'gcmsArticleShowRemove');
  202. ONEMAP.C.publisher.subscribe(remove, 'cleanMap');
  203. ONEMAP.C.publisher.subscribe(layoutResizeCSS, 'change23D');
  204. }
  205. /**
  206. * 取消监听
  207. * @type {Function}
  208. */
  209. function unSubscribe() {}
  210. /**
  211. * 模块移除
  212. * @return {[type]} [description]
  213. */
  214. function remove(){
  215. $('#gcmsDetailModal').remove();
  216. unSubscribe();
  217. }
  218. return ONEMAP.M.gcmsDetail = {
  219. init:init,
  220. remove:remove
  221. }
  222. });