/** * @fileoverview 用户 地点记录 模块 * @author Song.Huang * @version 1.0.0 */ define([ 'html!templates/user/userThematic', 'css!styles/user/userThematic' ], function(tplLayout) { /** * 模块数据 用于数据存储和外部调用 * @type {Object} * 数据存放 */ var modValue = { options: { page: 1, pageSize: 20 }, favData: null, appendToMyLayer: null } /** * 模块状态,用于存储模块的状态 例如:收起,关闭 * @type {Object} */ var status = { initialized: false, isFirstAdd: true, //是否第一次添加收藏专题图 showInfoData: false } //分页 var pageContainer, favPageBtnGroup, pageJump; var overLayerOpacityControl; /** * 初始化 * @type {Function} */ function init() { setLayout(); subscribe(); showPage({ page: 1 }); } /** * 设置界面 */ function setLayout() { $("#usrCenterContent").empty().append(tplLayout); if (!status.initialized) { $("#userThematicInfoDetail").appendTo('#wrapper'); status.initialized = true; } pageContainer = $('
').appendTo($("#usrCenterContent")); $("#userFav").mCustomScrollbar({ scrollInertia: 1000 }); layoutResize(); $(window).resize(function() { layoutResize(); }); } /** * 界面重置 * @return {[type]} [description] */ function layoutResize() { $("#userFav").css({ height: $(window).height() - 154 }); $("#userFav").mCustomScrollbar("update"); } /** * 显示指定参数的列表 * @type {Function} * @param options {Object} 参数 * @see options * @private */ function showPage(options) { ONEMAP.T.objExtend(modValue.options, options, true); getFavData(); } /** * 获取收藏数据 * @type {Function} * @private */ function getFavData() { ONEMAP.V.loading.load(); $.ajax({ type: "get", dataType: 'json', url: onemapUrlConfig.userCenterUrl + '/thematic/list' + '?page=' + modValue.options.page + '&size=' + modValue.options.pageSize, success: function(data) { ONEMAP.V.loading.loaded(); if(data.code == 4){ ONEMAP.T.noPermission('addFav',data.message); return false; } if(data.code == 3){ ONEMAP.T.logout('addFav'); return false; } modValue.favData = data; if(data.total>0){ setTimeout(function(){ setFavItem(); },100) } else { $("#userFavList").html("暂无数据"); } }, error: function(errorData) { ONEMAP.V.loading.loaded(); } }); } /** * 设置收藏列表item * @type {Function} * @private */ function setFavItem() { var count = 0; $("#userFavList").empty(); if (modValue.favData['list'].length > 0) { for (var i = 0, l = modValue.favData['list'].length; i < l; i++) { var da = modValue.favData['list'][i]; count++; var itemHtml = $('暂无数据!
'); } $("#userFav").mCustomScrollbar("update"); } /** * 添加专题图层到地图层 * @type {Function} * @param obj {Object} 构造好了的专题图对象 * @private */ function addOverLayerToMap(data) { //添加到23D地图上 //如果是2D 添加透明度控件 modValue.currentOverLayerGuid = map23DControl.tileLayer({ action: 'add', layer: { url2D: onemapUrlConfig.thematicTileUrl + '/' + data.t_id + '?l={z}&x={x}&y={y}', url3D: onemapUrlConfig.thematicTileFo3DUrl + '/' + data.t_id + '?z=%d&x=%d&y=%d', minZoom: data['min_zoom'], maxZoom: data['max_zoom'], maxNativeZoom: data['max_zoom'], attribution: '', opacity: 1, imageType: 'png', name: data.name, guid: data.t_id } }) ONEMAP.D.ThematicInMapData[modValue.currentOverLayerGuid] = { 'name': data.name, 'guid': data.t_id }; if (status.showInfoData) { getShowInfo(data); } if (!modValue.appendToMyLayer) { var options = { action: "add", DOM: { name: data.name, type: "layer", guid: modValue.currentOverLayerGuid } } modValue.appendToMyLayer = ONEMAP.M.myLayers.myLayerControl(options); ONEMAP.C.publisher.subscribe(controlMyLayer, modValue.appendToMyLayer); }else{ var options = { action: "update", DOM: { name: data.name, type: "layer" }, DOMid:modValue.appendToMyLayer } ONEMAP.M.myLayers.myLayerControl(options); } ONEMAP.D.overLayerCount++; map2DViewer.map.setZoomScope(data['min_zoom'], data['max_zoom']); }; /** * 我的图层控制当值图层 */ function controlMyLayer(options) { switch (options.action) { case 'remove': removeCurrentOverLayer(); break; case 'opacity': setGropOpacity(options); break; case 'up': case 'down': setGroupZIndex(options); break; } }; function setGroupZIndex(options) { } function setGropOpacity(options) { var options = options.options; if(modValue.currentOverLayerGuid){ if(options.opacity == 1){ map23DControl.tileLayer({ action:'show', guid:modValue.currentOverLayerGuid, layer: { opacity:options.opacity } }) }else if(options.opacity == 0){ map23DControl.tileLayer({ action:'hide', guid:modValue.currentOverLayerGuid, layer: { opacity:options.opacity } }) }else{ map23DControl.tileLayer({ action:'update', guid:modValue.currentOverLayerGuid, layer: { opacity:options.opacity } }) } } } /** * 移除当前显示专题图 * @private */ function removeCurrentOverLayer(data) { if (data != undefined) { status.showInfoData = false; $('#userThematicInfoDetail').hide(); } if (modValue.currentOverLayerGuid) { delete ONEMAP.D.ThematicInMapData[modValue.currentOverLayerGuid]; ONEMAP.D.overLayerCount-- if (ONEMAP.D.overLayerCount == 0) { map2DViewer.map.setZoomScope(1, 19); } map23DControl.tileLayer({ action: 'remove', guid: modValue.currentOverLayerGuid }) modValue.currentOverLayerGuid = null; modValue.appendToMyLayer = null } }; function cleanmap(){ removeCurrentOverLayer() if(modValue.appendToMyLayer){ var options = { action: "remove", DOMid:modValue.appendToMyLayer } ONEMAP.M.myLayers.myLayerControl(options); modValue.appendToMyLayer = null } } /** * 显示专题图详情 */ function getShowInfo(data) { var guid = data.t_id; var ajaxUrl = onemapUrlConfig.thematicDataServerUrl + '/production/metadata?production_id=' + guid; ONEMAP.V.loading.load(); $.ajax({ type: "get", dataType: 'jsonp', url: ajaxUrl, success: function(data) { ONEMAP.V.loading.loaded(); //添加专题图信息到地图容器中 addItemToContent(data.metadata); }, error: function(data) { ONEMAP.V.loading.loaded(); ONEMAP.C.publisher.publish({ type: 'error', message: '获取地图数据失败!' }, 'noteBar::add'); } }); }; function addItemToContent(data) { $('#userThematicInfoDetail').show(); var zIndex = ONEMAP.M.sideBar.getZIndex(); $('#userThematicInfoDetail').css({ zIndex: zIndex }); $('#userThematicInfoDetail .cover-content').empty(); $('作者: ' + data.author + '
').appendTo($('#userThematicInfoDetail .cover-content')); $('创建时间: ' + data.created_time + '
').appendTo($('#userThematicInfoDetail .cover-content')); $('发布者: ' + data.publisher + '
').appendTo($('#userThematicInfoDetail .cover-content')); $('发布时间: ' + data.publication_date + '
').appendTo($('#userThematicInfoDetail .cover-content')); $('地图来源: ' + data.original_atlas + '
').appendTo($('#userThematicInfoDetail .cover-content')); $('最小缩放等级: ' + data.min_zoom_level + '
').appendTo($('#userThematicInfoDetail .cover-content')); $('最大缩放等级: ' + data.max_zoom_level + '
').appendTo($('#userThematicInfoDetail .cover-content')); //$('瓦片格式: '+data.image_format+'
').appendTo($('#userThematicInfoDetail .content')); //$('瓦片质量: '+data.image_quality+'
').appendTo($('#userThematicInfoDetail .content')); $('地图宽度: ' + data.map_image_width + '像素
').appendTo($('#userThematicInfoDetail .cover-content')); $('地图高度: ' + data.map_image_height + '像素
').appendTo($('#userThematicInfoDetail .cover-content')); if (data.coordinate_system == 0) { data.coordinate_system = '无坐标图形' } $('坐标系: ' + data.coordinate_system + '
').appendTo($('#userThematicInfoDetail .cover-content')); } function addThematicToMap(data) { if (!status.showInfoData) { status.showInfoData = true; getShowInfo(data); } else { status.showInfoData = false; $('#userThematicInfoDetail').hide(); } }; /** * 添加收藏 */ function addThematic(thematicData) { //构造数据 var ajaxData = {}; ajaxData.name = thematicData.name; ajaxData.center_lat = map23DData.view.center['lat']; ajaxData.center_lon = map23DData.view.center['lng']; ajaxData.initial_zoom = map23DData.view.zoom; ajaxData.t_id = thematicData.guid; ajaxData.min_zoom = thematicData.min_zoom; ajaxData.max_zoom = thematicData.max_zoom; ajaxData.map_type = thematicData.map_type; ajaxData.data_type = thematicData.data_type; ajaxData.thumb_min_id = thematicData.thumb_min_id; ONEMAP.V.loading.load(); $.ajax({ type: "get", dataType: 'json', url: onemapUrlConfig.userCenterUrl + '/thematic/add', data: ajaxData, success: function(data) { ONEMAP.V.loading.load(); if (data.success) { ONEMAP.C.publisher.publish({ type: 'success', message: '收藏专题图(' + thematicData.name + ')成功' }, 'noteBar::add'); getFavData(); } else { ONEMAP.C.publisher.publish({ type: 'error', message: '收藏专题图(' + thematicData.name + ')失败/已收藏过该专题图' }, 'noteBar::add'); } }, error: function(errorData) { ONEMAP.V.loading.loaded(); } }); } /** * 编辑表单 * @type {Function} * @param data {Object} 表单数据 * @param self {Object} 父类 * @private */ function editForm(data, self) { var parent = self.parent().parent(); var formHtml = $('