123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664 |
- /**
- * 应用唯一全局对象
- * @namespace ONEMAP
- * @type {*|Object}
- */
- var ONEMAP = ONEMAP || {}; //全局变量
- /**
- * 模块对象
- * @namespace ONEMAP.M
- * @type {Object}
- */
- ONEMAP.M = {}; //模块
- /**
- * 视图对象
- * @namespace ONEMAP.V
- * @type {Object}
- */
- ONEMAP.V = {}; //视图
- /**
- * 管理对象
- * @namespace ONEMAP.C
- * @type {Object}
- */
- ONEMAP.C = {}; //管理
- /**
- * 共用工具对象
- * @namespace ONEMAP.T
- * @type {Object}
- */
- ONEMAP.T = {}; //共用
- /**
- * 数据对象
- * @namespace ONEMAP.D
- * @type {Object}
- */
- ONEMAP.D = {}; //数据
- //新旧用户动作id对照表
- ONEMAP.D.newToOld = {
- 1002: 26013,
- 1003: 26015,
- 1005: 26014,
- 1006: 26020,
- 1007: 26018,
- 1008: 26021,
- 1010: 26020,
- 1011: 26020,
- 1012: 26017,
- 1013: 26019,
- 1030: 26011,
- 1033: 26007,
- 1034: 26010,
- 1035: 26011,
- 1046: 26027,
- 1047: 26027,
- 1048: 26026,
- 1049: 26027,
- 1050: 26025,
- 1055: 26026,
- 1056: 26027,
- 1057: 26025,
- 1060: 26029,
- 1061: 26029,
- 1062: 26029,
- 1063: 26029,
- 1065: 26029,
- 1066: 26029,
- 1068: 26029,
- 1072: 26024,
- 1074: 26024,
- 1087: 26003,
- 1088: 26003,
- 1091: 26029,
- 1092: 26029,
- 1095: 26029
- }
- //专题图数据
- ONEMAP.D.Thematic = {};
- //地图显示专题图数据集
- ONEMAP.D.ThematicInMapData = {};
- //浏览器类型
- ONEMAP.M.liuLanQi = "";
- //require 配置
- require.config({
- baseUrl: "./",
- waitSeconds: 25,
- urlArgs: "v=" + onemapVersion,
- paths: {
- text: "scripts/vendor/require/text",
- html: "scripts/vendor/require/html",
- css: "scripts/vendor/require/css",
- image: "scripts/vendor/require/image",
- async: "scripts/vendor/require/async",
- font: "scripts/vendor/require/font",
- //modDir
- modDir: "scripts/mod",
- meteoDir: "scripts/meteo",
- layoutDir: "scripts/layout",
- vendorDir: "scripts/vendor",
- jbDir: "jbDraw",
- lgDir: "layerGuid",
- //handlebars
- handlebars: "scripts/vendor/handlebars/handlebars",
- jqueryDir: "scripts/vendor/jquery",
- jquery: "scripts/vendor/jquery/jquery",
- //kindeditor
- kindeditor: "scripts/vendor/kindeditor/kindeditor-all",
- kindeditorDir: "scripts/vendor/kindeditor",
- },
- shim: {
- "kindeditor": {
- deps: ["css!kindeditorDir/themes/default/default"]
- },
- "jqueryDir/jquery-ui": {
- deps: ["css!jqueryDir/jquery-ui", "jquery"]
- },
- "jqueryDir/jquery.iviewer.min": {
- deps: ["jqueryDir/jquery-ui", "jqueryDir/jquery.mousewheel"]
- },
- "handlebars": {
- exports: "Handlebars"
- },
- }
- });
- require([''],
- function() {
- $.ajaxSetup({
- cache: false
- });
- /**
- *
- * 订阅分发模块
- * 可以实现 某模块数据改变并通过 订阅分发模块
- * 告知其他订阅该组信息的模块进行相应的事件处理
- * @exports ONEMAP.C.publisher
- * @type {Object}
- */
- ONEMAP.C.publisher = {
- /**
- * 订阅人员分组集合
- * @type {Object}
- * @default []
- */
- subscribers: {
- any: []
- },
- /**
- * 注册订阅
- * @type {Function}
- * @param fn {Function} 事件
- * @param group {String} 订阅组名称
- * @example
- * ONEMAP.C.publisher.subscribe(function(){//something to do},'sideBarLayoutChange');
- */
- subscribe: function(fn, group) {
- group = group || 'any';
- if (typeof(this.subscribers[group]) === "undefined") {
- this.subscribers[group] = [];
- }
- this.subscribers[group].push(fn);
- },
- /**
- * 取消订阅
- * @type {Function}
- * @param fn {Function} 事件
- * @param group {String} 订阅组名称
- * @example
- * ONEMAP.C.publisher.unSubscribe(function(){//something to do},'sideBarLayoutChange');
- */
- unSubscribe: function(fn, group) {
- this.visitSubscribers('unSubscribe', fn, group);
- },
- /**
- * 推送订阅
- * @type {Function}
- * @param publicArg {*} 传递的参数
- * @param group {String} 订阅组名称
- * @example
- * ONEMAP.C.publisher.publish('','sideBarLayoutChange');
- */
- publish: function(publicArg, group) {
- this.visitSubscribers('publish', publicArg, group);
- },
- /**
- * 执行事件分发||执行取消订阅
- * @type {Function}
- * @param action {String} 执行方式
- * @param arg {*} 传递的参数
- * @param group {String} 订阅组名称
- */
- visitSubscribers: function(action, arg, group) {
- var pubGroup = group || 'any';
- if (this.subscribers[pubGroup]) {
- var subscribers = this.subscribers[pubGroup];
- var i;
- var max = subscribers.length;
- for (i = 0; i < max; i++) {
- if (action === 'publish') {
- subscribers[i](arg);
- } else {
- if (subscribers[i] === arg) {
- subscribers.splice(i, 1);
- }
- }
- }
- }
- }
- };
- /**
- * 定时器
- * 用于记录应用的timeOut事件集合
- * @exports ONEMAP.C.timeOut
- * @type {Object}
- * @example
- * ONEMAP.C.timeOut.mapDrag = setTimeOut(function(){},3000);
- */
- ONEMAP.C.timeOut = {};
- /**
- * 加密解密 调用 CryptoJS库
- * @exports ONEMAP.C.encryption
- * @type {Object}
- */
- ONEMAP.C.encryption = {
- /**
- * BASE64加密
- * @type {Function}
- * @param str {String} 加密前的文本
- * @returns {String} 加密后的文本
- */
- enCode: function(str) {
- return CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(str));
- },
- /**
- * BASE64解密
- * @type {Function}
- * @param str {String} 解密前的文本
- * @returns {String} 解密后的明文
- */
- deCode: function(str) {
- return CryptoJS.enc.Base64.parse(str).toString(CryptoJS.enc.Utf8);
- }
- };
- /**
- * loading 加载列队 控制当前有加载 显示loading条,如果该列队都加载完成后,隐藏loading条
- * 发送请求前 load , 回调回来 loaded
- * @exports ONEMAP.V.loading
- * @type {Object}
- */
- ONEMAP.V.loading = {
- /**
- * 在线loading统计
- * @type {Number}
- * @default 0
- */
- count: 0,
- /**
- * 添加一个加载统计
- * @type {Function}
- * @example
- * ONEMAP.V.loading.load()
- */
- load: function() {
- this.count++;
- $("#loading").slideDown(50);
- //超时设置
- if (ONEMAP.C.timeOut.loading) {
- clearTimeout(ONEMAP.C.timeOut.loading);
- }
- ONEMAP.C.timeOut.loading = setTimeout(function() {
- ONEMAP.V.loading.killLoad();
- }, 8000);
- },
- /**
- * 加载完成后调用一次,表示从加载列队中删除一此统计数
- * @type {Function}
- * @example
- * //加载
- * ONEMAP.V.loading.load();
- * //do something
- * //完成此次加载
- * ONEMAP.V.loading.loaded();
- */
- loaded: function() {
- this.count--;
- if (this.count === 0) {
- $("#loading").slideUp(50);
- }
- },
- /**
- * 强制删除加载列队统计
- * @type {Function}
- * @example
- * ONEMAP.V.loading.killLoad();
- */
- killLoad: function() {
- this.count = 0;
- $("#loading").slideUp(50);
- ONEMAP.C.timeOut.loading = null;
- }
- };
- /**
- * 获取url参数
- * @param {[type]} name [description]
- * @return {[type]} [description]
- */
- ONEMAP.T.getQueryString = function(name) {
- var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
- var r = window.location.search.substr(1).match(reg);
- if (r != null) return decodeURI(r[2]);
- return '';
- };
- /**
- * POST方式提交数据
- * @exports ONEMAP.T.POST
- * @type {Function}
- * @param URL {String}
- * @param PARAMS {Object}
- */
- ONEMAP.T.POST = function(URL, PARAMS) {
- var temp = document.createElement("form");
- temp.action = URL;
- temp.method = 'post';
- temp.style.display = "none";
- temp.target = '_blank';
- for (var x in PARAMS) {
- var opt = document.createElement("textarea");
- opt.name = x;
- opt.value = PARAMS[x];
- temp.appendChild(opt);
- }
- document.body.appendChild(temp);
- temp.submit();
- setTimeout(function() {
- document.body.removeChild(temp);
- }, 1000);
- return temp;
- },
- /**
- * 当前用户状态 包含浏览方式 当前城市信息 数据库里保存的历史记录 当前正在使用的模块
- * @exports ONEMAP.D.user
- * @type {Object}
- */
- ONEMAP.D.user = {
- //当前正在浏览的方式: pc/mobile
- viewType: 'pc',
- searchKeyWord: null,
- //用户令牌
- ticket: '',
- action_list: [],
- name: "游客",
- guest: true
- };
- /**
- * 当前城市信息
- * @type {Object}
- */
- ONEMAP.D.cityInfo = {
- name: null, //中文名称
- center: null,
- bounds: null,
- zoom: null,
- guid: null //唯一标识符
- }
- ONEMAP.D.currentSideBarMod = null;
- ONEMAP.D.appendToMyLayer = null;
- /**
- * 全局设置
- * @type {Object}
- */
- //ONEMAP.D.globalSettingData = null;
- ONEMAP.D.globalSettingData = {
- }
- /**
- * 统计地图上叠加的专题图
- * @type {Number}
- */
- ONEMAP.D.overLayerCount = 0;
- /**
- * cookie管理
- * @exports ONEMAP.C.cookie
- * @type {Object}
- */
- ONEMAP.C.cookie = {
- /**
- * 设置cookie
- * @type {Function}
- * @param name {String} 名称
- * @param value {String} 值
- * @param days {Number} 过期时间(天)
- * @example
- * ONEMAP.C.cookie.set('cookieName','cookieValue',20);
- */
- set: function(name, value, days) {
- //document.cookie = ONEMAP.C.encryption.enCode(name) + "=" + ONEMAP.C.encryption.enCode(escape(value));
- document.cookie = name + "=" + value;
- },
- /**
- * 获取cookie
- * @type {Function}
- * @param name {String} 名称
- * @returns {null|String} 返回值
- * @example
- * ONEMAP.C.cookie.get('cookieName');
- */
- get: function(name) {
- // var arr, reg = new RegExp("(^| )" + ONEMAP.C.encryption.enCode(name) + "=([^;]*)(;|$)");
- var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");
- arr = document.cookie.match(reg);
- if (arr) {
- // return ONEMAP.C.encryption.deCode(unescape(arr[2]));
- return arr[2];
- } else {
- return null;
- }
- },
- /**
- * 删除cookie
- * @type {Function}
- * @param name {String} 名称
- * @example
- * ONEMAP.C.cookie.del('cookieName');
- */
- del: function(name) {
- var exp = new Date();
- exp.setTime(exp.getTime() - 1);
- var cval = this.get(name);
- // if (cval !== null) document.cookie = ONEMAP.C.encryption.enCode(name) + "=" + cval + ";expires=" + exp.toGMTString();
- if (cval !== null) document.cookie = name + "=" + cval + ";expires=" + exp.toGMTString();
- }
- };
- /**
- * 对象合并
- * @exports ONEMAP.T.objExtend
- * @type {Function}
- * @param o {Object} 原始的
- * @param n {Object} 需要并入的
- * @param override {Boolean} 是否覆盖掉已有属性或者方法
- */
- ONEMAP.T.objExtend = function(o, n, override) {
- for (var p in n) {
- if (n.hasOwnProperty(p) && (!o.hasOwnProperty(p) || override)) {
- o[p] = n[p];
- }
- }
- };
- /**
- * 字符串长度截取
- * @exports ONEMAP.T.stringSub
- * @type {Function}
- * @param s {String} 原始字符串
- * @param n {Number} 保留的长度
- * @returns {String} 返回截取后的字符串
- */
- ONEMAP.T.stringSub = function(s, n) {
- var r = /[^\x00-\xff]/g;
- if (s.replace(r, "mm").length <= n) return s;
- var m = Math.floor(n / 2);
- for (var i = m; i < s.length; i++) {
- if (s.substr(0, i).replace(r, "mm").length >= n) return s.substr(0, i) + "...";
- }
- return s;
- };
- /**
- * 将obj的个属性名放到一个数组里并返回,方便取到长度和名称
- * @type {Function}
- * @exports ONEMAP.T.getObjNameAry
- * @param obj {Object} 需要查询的对象
- * @returns {Array} 返回结果数组
- */
- ONEMAP.T.getObjNameAry = function(obj) {
- var item;
- var count = [];
- for (item in obj) {
- if (obj.hasOwnProperty(item)) {
- count.push(item);
- }
- }
- return count;
- };
- /**
- * 判断一个对象是否为空对象
- * @exports ONEMAP.T.isEmptyObject
- * @type {Function}
- * @param obj {Object} 需要查询的对象
- * @returns {boolean} 返回 true || false
- */
- ONEMAP.T.isEmptyObject = function(obj) {
- for (var name in obj) {
- return false;
- }
- return true;
- };
- /**
- * 判断是否为Json格式
- * @exports ONEMAP.T.isJson
- * @type {Function}
- * @param obj {Object} 需要查询的Json对象
- * @returns {boolean} 返回true || false
- */
- ONEMAP.T.isJson = function(obj) {
- var isJson = typeof obj === "object" && Object.prototype.toString.call(obj).toLowerCase() === "[object object]" && !obj.length;
- return isJson;
- };
- /**
- * 检测flash player的版本
- * @exports ONEMAP.T.flashChecker
- * @type {Function}
- * @returns {Object}
- */
- ONEMAP.T.flashChecker = function() {
- var hasFlash = 0;
- var flashVersion = 0;
- if (document.all) {
- var swf = new ActiveXObject('ShockwaveFlash.ShockwaveFlash');
- if (swf) {
- hasFlash = 1;
- VSwf = swf.GetVariable('$version');
- flashVersion = parseInt(VSwf.split(" ")[1].split(",")[0]);
- }
- } else {
- if (navigator.plugins && navigator.plugins.length > 0) {
- var swf = navigator.plugins["Shockwave Flash"];
- }
- if (swf) {
- hasFlash = 1;
- var words = swf.description.split(" ");
- for (var i = 0; i < words.length; i++) {
- if (isNaN(parseInt(words[i]))) continue;
- flashVersion = parseInt(words[i]);
- }
- }
- }
- return {
- f: hasFlash,
- v: flashVersion
- };
- };
- /**
- * 没有权限提示
- * @param {[type]} modFunction [description]
- * @param {[type]} modTips [description]
- * @return {[type]} [description]
- */
- ONEMAP.C.noPermission = function(modFunction, modTips) {
- if (modTips == undefined) {
- modTips = "未登录";
- }
- ONEMAP.C.publisher.publish({
- type: 'warning',
- message: '您' + modTips + '!'
- }, 'noteBar::add');
- return false;
- };
- ONEMAP.T.noPermission = function(modFunction, modTips) {
- if (modTips == undefined) {
- modTips = "未登录";
- }
- ONEMAP.C.publisher.publish({
- type: 'warning',
- message: '您' + modTips + '!'
- }, 'noteBar::add');
- return false;
- };
- /**
- * 登出
- * @return {[type]} [description]
- */
- ONEMAP.C.logout = function(modName) {
- ONEMAP.C.cookie.del('session');
- delete ONEMAP.D.user.ticket;
- setTimeout(function() {
- if (onemapUrlConfig.accessType == 'oauth') {
- var jumpUrl = onemapUrlConfig.login_serverUrl + '/account/logout?next=' + onemapUrlConfig.login_serverUrl + '/go/?site=' + onemapUrlConfig.siteUrl;
- window.location.replace(jumpUrl);
- }
- }, 500);
- return false;
- };
- /**
- * 生成随机uuid4
- * @param {[type]} options [description]
- * @return {[type]} [description]
- */
- ONEMAP.C.uuid4 = function() {
- var text = "";
- var length = [8, 4, 4, 4, 12];
- var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
- for (var j = 0; j < 5; j++) {
- for (var i = 0; i < length[j]; i++) {
- text += possible.charAt(Math.floor(Math.random() * possible.length));
- }
- if (j < 3) {
- text += "-"
- }
- }
- return text;
- }
- /**
- * 登入
- * @return {[type]} [description]
- */
- ONEMAP.C.login = function() {
- ONEMAP.D.globalSettingData = onemapUrlConfig.defaultGlobalSettingData;
- ONEMAP.D.isLoad = true;
- require(['layoutDir/layout'], function(layout) {
- layout.init();
- });
- }
- //获取更多基本信息
- ONEMAP.C.getInf = function(id) {
- $.ajax({
- url: onemapUrlConfig.oauthServiceUrl + '/v1.0/user?id=' + id,
- type: 'GET',
- dataType: 'json'
- })
- .done(function(data) {
- _.merge(ONEMAP.D.user, data.data);
- })
- }
- map23DData.show3DAlert = false;
- ONEMAP.C.login();
- });
|