123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248 |
- /**
- * [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
- }
- });
|