/** * [ONEMAP.M.gcmsDetail] * @return {[object]} */ define([ 'html!templates/gcms/gcmsDetail', 'css!styles/typo', 'css!styles/gcms/gcmsDetail', 'modDir/gcms/androidEvent'], function(tpcLayout){ //参数 var modValue = { options:{}, appendToMyLayer:null } //地图层 /** * 模块初始化 * @return {[type]} [description] */ function init(options){ remove(); modValue.options = {}; for(var op in options){ modValue.options[op] = options[op]; } //注册监听 subscribe(); //获取内容数据 getDetailData({callback:function(){ setDetailModal(); }}); } function getDetailData(options){ ONEMAP.V.loading.load(); $.ajax({ url: onemapUrlConfig.gcmsServiceUrl+'/show/'+modValue.options['column_name']+'/'+modValue.options['article_id'], type:"GET", dataType: 'json' }) .done(function(data) { ONEMAP.V.loading.loaded(); if(data.code == 4){ ONEMAP.C.noPermission('getDetailData'); return false; } if(data.code == 3){ ONEMAP.C.logout('getDetailData'); } ONEMAP.D.gcmsCurArticleData = data['data']; options.callback(); }) .fail(function() { ONEMAP.V.loading.loaded(); }); } /** * 设置容器 */ function setDetailModal(){ // console.log(ONEMAP.D.gcmsCurArticleData['detail_html']) // ONEMAP.D.gcmsCurArticleData['detail_html'] = ONEMAP.D.gcmsCurArticleData['detail_html'].replace("proxy_gcms","proxy_gcms_network"); var template = Handlebars.compile(tpcLayout); var dHTML= ONEMAP.D.gcmsCurArticleData['detail_html']; dHTML = replaceString(dHTML,'.jpg','.jpg?jwt='+ONEMAP.D.user.ticket); dHTML = replaceString(dHTML,'.png','.png?jwt='+ONEMAP.D.user.ticket); $('body').append(template({ title:ONEMAP.D.gcmsCurArticleData['record']['gcms_title'], detailTemplate:dHTML })); if(map23DData.display.map2D){ $('#gcmsDetailModal').removeClass('TD'); }else{ $('#gcmsDetailModal').addClass('TD'); } $('#gcmsDetailModal').show(); bindEvent(); layoutResize(); // var pian = _getPianLatlon(_this._map.getCenter(), parseInt($(window).width() / 6), 0); // _map.setView(pian, _this._map.getZoom()); if(ONEMAP.D.gcmsCurArticleData['record'].hasOwnProperty('map_center_lat')){ var pX = -(ONEMAP.M.pcLayout.styles.mapWidth / 2 - (ONEMAP.M.pcLayout.styles.mapWidth - 330) / 2); var pian = _getPianLatlon(L.latLng(ONEMAP.D.gcmsCurArticleData['record']['map_center_lat'], ONEMAP.D.gcmsCurArticleData['record']['map_center_lon']), pX, 0); if(map23DData.display.map2D){ map2DViewer.map.setView(pian, map23DData.view.zoom); }else if(map23DData.display.map3D){ map3DViewer.setView({ center:{ lat:pian.lat, lng:pian.lng }, zoom:map23DData.view.zoom, heading:0,//摄像机平面角度 正北为0 tilt:0,//摄像机倾斜角 }); } } $(window).resize(function() { layoutResize(); }); } /** * [replaceString description] * 字符串替换 * @param {[type]} string [description] * @param {[type]} type [description] * @param {[type]} change [description] * @return {[type]} [description] */ function replaceString(string,type,change){ type = "/"+type+"/g"; return string.replace(eval(type),change) } /** * 获取偏移坐标 * @type {Function} * @param latlng{Object} 坐标 * @param x {Number} 偏移x * @param y {Number} 偏移y * @returns {L.LatLng} * @private */ function _getPianLatlon(latlng, x, y, zoom) { var aLatLng = new L.LatLng(latlng.lat, latlng.lng); var zoom = zoom ? zoom : map23DData.view.zoom; var bPoints = map2DViewer.map.project(aLatLng, zoom); bPoints.x -= parseInt(x); bPoints.y -= parseInt(y); aLatLng = map2DViewer.map.unproject(bPoints, zoom); return aLatLng; } /** * 事件绑定 * @return {[type]} [description] */ function bindEvent(){ $('#gcmsDetailModal .close').bind('click', function() { remove(); $("#userIGListInfo section.item li.item").removeClass('selected'); // if(ONEMAP.M.diyData!=""){ // ONEMAP.C.publisher.publish({ // action:'remove', // guid: ONEMAP.M.diyData // }, ONEMAP.M.diyData); // var options = { // action: "remove", // DOMid: ONEMAP.M.diyData // } // ONEMAP.M.diyData = ONEMAP.M.myLayers.myLayerControl(options); // // console.log(ONEMAP.M.diyData); // } }); $('#gcmsDetailModal .modal-header').dragmove($('#gcmsDetailModal')); var $box2 = $('#gcmsDetailModal').on('mousedown', '#coorForGcmsDetailModal', function(e) { var posix = { 'w': $box2.width(), 'h': $box2.height(), 'x': e.pageX, 'y': e.pageY }; $.extend(document, {'move': true, 'call_down': function(e) { $box2.css({ 'width': Math.max(30, e.pageX - posix.x + posix.w), 'height': Math.max(30, e.pageY - posix.y + posix.h) }); var bodyHeight = Math.max(30, e.pageY - posix.y + posix.h )-51-$("#gcmsDetailModal .modal-header").height(); $("#gcmsDetailModal .popup-cb").css({height:bodyHeight}); }}); return false; }); //拖拽 $("#gcmsDetailModal .popup-ct").dragmove($('#gcmsDetailModal')); $("#gcmsDetailModal .popup-cb").mCustomScrollbar({ scrollInertia: 500 }); } /** * 界面布局重置 * @type {Function} */ function layoutResize(){ // .modal-body // $('#gcmsDetailModal').css({height:$(window).height()-300}); $('#gcmsDetailModal .popup-cb').css({height:$(window).height()-351-$("#gcmsDetailModal .modal-header").height()}); } /** * 切换23D样式 */ function layoutResizeCSS(cid) { if (cid == '2d') { $('#gcmsDetailModal').removeClass('TD'); } else { $('#gcmsDetailModal').addClass('TD'); } } /** * 注册监听 * @type {Function} */ function subscribe(){ ONEMAP.C.publisher.subscribe(remove,'gcmsArticleShowRemove'); ONEMAP.C.publisher.subscribe(remove, 'cleanMap'); ONEMAP.C.publisher.subscribe(layoutResizeCSS, 'change23D'); } /** * 取消监听 * @type {Function} */ function unSubscribe() {} /** * 模块移除 * @return {[type]} [description] */ function remove(){ $('#gcmsDetailModal').remove(); unSubscribe(); } return ONEMAP.M.gcmsDetail = { init:init, remove:remove } });