var MAPPER_AJAX_SERVER = "/php/mapper_ajax.php"; var globals = { }; /* not admin */ //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- /* Главный класс */ //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- mapper_Core = newClass( null, { // InitLayers: function(params) { if (this.layer) this.layer.Del(); this.selection = []; var ths = this; SetLoading(".viewport", "Загрузка конфигурации"); $.ajax({ url:MAPPER_AJAX_SERVER , dataType: "json" , data:{__op:[{fn:'getconfig', dt:{root:this.root}}]} , success:function(data){ if (data.config) { ths.config = DecompJSON(data.config); //alert(Dump(ths.styles)); } else { ths.treebox.html("Failed to load config"); } SetLoading(".viewport", "Загрузка слоев"); $.ajax({ url:MAPPER_AJAX_SERVER , dataType: "json" , data:{__op:[{fn:'getlayertree', dt:{mapid:ths.root, root:ths.root}}]} , success:function(data){ if (data.t) { ths.layer = new mapper_groupLayer(); ths.layer.Init(ths, ths, data.t); RemoveLoading(".viewport"); if (ths.geoloadflag) { /* means geo wasnt loaded on time */ ths.LoadGeo(); } if (params && params.onaftertree) params.onaftertree(); } else { ths.treebox.html("Failed to load layer tree"); } } }); } }); }, //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- Init: function(boxselector, options /* hide root node or not - in future?*/) { this.root = options.root; if (!this.root) {alert('Cannot initiate mapper: no root given!'); return;} var ths = this; this.options = options; this.type = 'root'; this.boxid = boxselector; this.selection = []; this.mainbox = $(boxselector); this.dragged = false; this.geoloadflag = true; this.booted=false; /*Признак выполнения первичной загрузки */ // if (!(google&&google.maps&&google.maps.BrowserIsCompatible())) { alert('Cannot initiate GMap: not compatible!'); return;} if (!this.mainbox.length) {alert('Cannot initiate mapper: no box found!'); return;} var obj = $("
").addClass('layerpanel') .html='
'; this.mainbox.append(obj); this.treebox = $(".layerbox", this.mainbox); // obj.append(this.treebox); // this.treebox = $("
").attr('id',boxselector+'_layerbox'); // obj.append(this.treebox); var obj = $("
").addClass('mappanel'); this.mainbox.append(obj); this.mapbox = $("
").addClass('mapbox'); obj.append(this.mapbox); this.mainbox.append($("
").addClass("floatclear")); var options = { zoom: 2 ,center: new google.maps.LatLng(65, 98) /**/ ,mapTypeId: google.maps.MapTypeId.SATELLITE //ROADMAP ,mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU } ,panControl: false ,streetViewControl: false }; this.map = new google.maps.Map(this.mapbox.get(0), options); google.maps.event.addListener(this.map, 'idle', function() { ths.onBoundsChange() }); google.maps.event.addListenerOnce(this.map, 'bounds_changed', function() { ths.InitLayers() }); this.mainbox.splitter({sizeLeft:true}); $(".mapper .scrollbar1").tinyscrollbar(); SetLoading(".mappanel", "Подготовка карты"); // this.LoadTree(); }, //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- onBoundsChange: function() { if (this.layer) { this.LoadGeo(); this.geoloadflag=false; } else this.geoloadflag = true; }, //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- LoadGeo: function(params) { //debugger; var ths = this; var dt = params&¶ms.dt?params.dt:{}; var bounds = this.map.getBounds(); var b_ne = bounds.getNorthEast(); var b_sw = bounds.getSouthWest(); //debugger; dt.bnd = [b_ne.lat(),b_ne.lng(),b_sw.lat(),b_sw.lng()]; dt.id = this.root; dt.z = this.map.getZoom(); if (!this.booted) SetLoading(".mappanel", "Загрузка объектов"); //debugger; $.ajax({ url:MAPPER_AJAX_SERVER , dataType: "json" , data:{__op:[{fn:'getgeo', dt:dt}]} , success:function(data){ /* if (data.diagonal) { console.debug("Diargonal = " + data.diagonal);}*/ // debugger; if (data.geo) { // try { if (!ths.booted) { RemoveLoading(".mappanel"); ths.booted = true; } ths.layer.SetGeo(data.geo); } catch (e) { setTimeout(function(){ths.layer.SetGeo(data.geo);}, 1000); debugger; } if (params&¶ms.onload) params.onload(); // } else { // alert("Failed to load geo-info"); } } }); }, getSubtreeBox: function() { return this.treebox; }, getStyleName: function() { return ""; }, FindNodeById: function(id) { try { return this.layer.FindNodeById(id); } catch(e) {}; return null; }, //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- ScrollTo: function(id) { // debugger; var node; if (typeof(id)=='object') node=id; else node = this.layer.FindNodeById(id); var bnode = node; var pos = 0; while (node != this) { if (node.type == 'group') { $('.tree', node.box).addClass('opened'); $('.plus', node.box).addClass('opened'); var p = node.box.position(); pos += p.top; } node = node.parent; } $(".mapper. .scrollbar1").tinyscrollbar_update(pos); /* */ } //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- }); /*of class */ /* mapper_Core.prototype.LoadTree = function() { } */ //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- /* function mapper_LayerSet(parent, rootobj, box, roots) { // Набор слоев this.parent = parent; this.rootobj = rootobj; this.layers = {}; this.box = $("
").appendTo(box).addClass("layerset"); for (var i=0; i").appendTo(box).addClass("layer").attr('id', 'lay'+this.id); // $("
").appendTo(this.box).addClass("controls"); $("
").appendTo(this.box).addClass("info").html(this.type + " layer") .click(function(){ths.CenterBounds();}) this.box.append($("
").addClass("ctrlb sele").click(function(){ths.Select(); $(this).toggleClass('ok');})) ; this.box.append($("
").addClass("ctrlb edit").click(function(){ths.Edit();})) ; } */ }, //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- CenterBounds: function() { //debugger; if (!this.bounds.isEmpty()) { this.rootobj.map.fitBounds(this.bounds); this.rootobj.onBoundsChange(); } else { alert("Bounds are broken..."); } }, //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- Hide: function() { /*--- операции с изменением стиля слоя */ if (this.geo) { this.geo.setMap(null); /* Или как еще скрывать геометрию с карты??*/ } this.shown = false; }, //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- Del: function() { if (this.layers) { for (var k in this.layers) { this.layers[k].Del(); } } if (this.geo) { this.geo.setMap(null); delete(this.geo); } if (this.box) { this.box.remove(); } delete(this); }, //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- GetData: function() { return {'parent':this.parent.id} }, //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- FindNodeById: function(id) { if (this.id == id) return this; if (this.layers) { for (var i in this.layers) { var n = this.layers[i].FindNodeById(id); if (n) return n; } } return null; }, //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- UpdateStyle: function() { if (this.rootobj && this.rootobj.config.styles) { this.style = this.rootobj.config.styles[this.getStyleName()]; if (typeof(this.style.map)=='object') { this.style = this.style.map; if (this.geo) this.geo.setOptions(this.style); } } }, //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- getStyleName: function() { if (this.stylename) return this.stylename; else return this.parent.getStyleName(); } });/*of class Layer */ //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- mapper_polyLayer = newClass (mapper_Layer, { constructor: function(){ this.constructor.prototype.constructor.call(this); }, SetGeo: function(dt) { //debugger; var data = dt[this.id]; this.constructor.prototype.SetGeo.call(this); /* style definition */ if (data) { /* if (data.p) { data.geo=data.p; data.p=true; } else if (data.g) { data.geo=data.g; } if (typeof(data.geo)=='string') { data.geo=[data.geo];} for (var i in data.geo) { debugger; var path1 = google.maps.geometry.encoding.decodePath(data.geo[i]); set.push(path1); } */ //debugger; if (typeof(data)=='string') { var path = google.maps.geometry.encoding.decodePath(data); if (path.length == 1) { data = {p:path[0]}; } else { data = {geo:path}; } } else { var set = []; for (var i in data.geo) { var path1 = google.maps.geometry.encoding.decodePath(data.geo[i]); set.push(path1); } data.geo = set; } if (this.geo && ((this.point && !data.p/*oint*/)||(!this.point && data.p/*oint*/))) { this.geo.setMap(null); this.geo=null;} if (data.p/*oint*/) { if (!this.point || !this.geo) { this.geo = new google.maps.Marker(this.style.map); if (this.shown) this.Show(); } // this.geo.setPosition(set[0][0]); this.geo.setPosition(data.p); this.point = true; } else { if (this.point || !this.geo) { this.geo = new google.maps.Polygon(this.style.map); if (this.shown) this.Show(); } this.geo.setPaths(data.geo); // this.geo.setPaths(set); this.point = false; } this.SetListners() } else { if (this.geo) { this.geo.setMap(null); this.geo=null;} } } }); /* of class polyLayer*/ //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- mapper_lineLayer = newClass (mapper_Layer, { constructor: function(){ this.constructor.prototype.constructor.call(this); }, SetGeo: function(dt) { alert('SetLayer not implemented for Line'); } }); /* of class lineLayer*/ //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- mapper_pointLayer = newClass (mapper_Layer, { constructor: function(){ this.constructor.prototype.constructor.call(this); }, SetGeo: function(dt) { var data = dt[this.id]; this.constructor.prototype.SetGeo.call(this); /* style definition */ if (data) { var set = google.maps.geometry.encoding.decodePath(data); // set = google.maps.geometry.encoding.decodePath(data.geo[0]); if (!this.geo) { this.geo = new google.maps.Marker(this.style.map); if (this.shown) this.Show(); } this.geo.setPosition(set[0]); this.SetListners() } else { if (this.geo) { this.geo.setMap(null); this.geo=null;} } } }); /* of class pointLayer*/ //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- // Группа-слой //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- mapper_groupLayer = newClass(mapper_Layer, { constructor: function(){ this.constructor.prototype.constructor.call(this); }, //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- Init: function(parent, rootobj, data) { this.constructor.prototype.Init.call(this, parent, rootobj, data); this.hasChildren = false; this.baloon = null; this.balooncache = null; this.open=false; if (typeof(rootobj.options.autoopen)=="object") { for (var i in rootobj.options.autoopen) { if (this.id == rootobj.options.autoopen[i]) {this.open=true; break;} } } this.layers = []; this.BuildNode(); this.SetTitle(data.tl); this.SetDescription(data.ds); this.SetStyle(data.st); var tree = data.t; if (tree) { for (var k in tree) { this.AddLayer(tree[k], true); } } this.setupSubf(); }, //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- AddLayer: function(obj, ignoreSetupSubf) { var constr = 'mapper_' + obj.tp + 'Layer'; if ((eval("typeof "+constr) != 'function')) { alert("No valid constructor found for '"+obj.tp); return; } var o; eval("o = "+constr); o = new o(); o.Init(this, this.rootobj, obj); this.layers.push(o); if (!ignoreSetupSubf) { this.setupSubf(); } }, //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- OpenClose: function() { // $(this.box).children('.tree').toggleClass('opened'); var opened = this.treebox.toggleClass('opened').hasClass('opened'); this.box.children('.left').children('.plus').toggleClass('opened'); /* var node = this; var pos = 0; while (node != this.rootobj) { if (node.type == 'group') { var p = node.box.position(); pos += p.top; } node = node.parent; } var scpos = parseInt($('.viewport .overview').css('top')); var height = $('.viewport').height(); var treeh = opened?this.treebox.height():0; var npos; debugger; if (treeh > height-(pos-scpos)) { if (treeh > height-10) npos = pos else npos = pos - (height-treeh); if (npos < 0) npos = 0; } if (scroll */ // setTimeout(function(){$(".mapper. .scrollbar1").tinyscrollbar_update(npos);}, 100); setTimeout(function(){$(".mapper. .scrollbar1").tinyscrollbar_update('relative');}, 100); /* if ($(this.box).children('.left').children('.plus').hasClass('opened')) { var node = this; var pos = 0; while (node != this.rootobj) { if (node.type == 'group') { var p = node.box.position(); pos += p.top; } node = node.parent; } // setTimeout(function(){$(".mapper. .scrollbar1").tinyscrollbar_update(pos);},100); } else { setTimeout(function(){$(".mapper. .scrollbar1").tinyscrollbar_update();},100); } */ // setTimeout(function(){$(".mapper. .scrollbar1").tinyscrollbar_update();},100); }, //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- Show: function() { //debugger; if (this.layers) { for (var k in this.layers) { this.layers[k].Show(); } } this.shown = true; // $('.vis', this.box).removeClass('hide'); this.box.removeClass('hide'); this.box.addClass('show'); /*--- операции с изменением стиля слоя */ }, //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- Hide: function() { /*--- операции с изменением стиля слоя */ //debugger; if (this.layers) { for (var k in this.layers) { this.layers[k].Hide(); } } this.shown = false; // $('.vis', this.box).addClass('hide'); this.box.addClass('hide'); this.box.removeClass('show'); // $('.vis', this.box).removeClass('ok'); // $('.vis', this.box).addClass('closed'); }, SetGeo: function(dt) { if (this.layers) { for (var k in this.layers) { if (!this.layers[k].SetGeo) { debugger; } this.layers[k].SetGeo(dt); } } }, //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- ShowBaloon: function(event) { var ths = this; var clickpoint = event?event.latLng:this.point; if (this.baloon) { this.baloon.setPosition(clickpoint); return; } if (this.rootobj.baloon) { google.maps.event.trigger(this.rootobj.baloon, 'closeclick') this.rootobj.baloon.close(); } this.baloon = new google.maps.InfoWindow({maxWidth:400}); // if (!this.balooncache) this.baloon.setPosition(clickpoint); this.balooncache = this.GenBaloonContent(); this.baloon.setContent(this.balooncache.get(0)); this.rootobj.baloon=this.baloon; google.maps.event.addListener(this.baloon, 'closeclick', function() { ths.baloon = null; }); }, //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- GenBaloonContent: function() { var txs = this; var o = txs; var p = []; var txt = ''; while (o != this.rootobj) { p.unshift(o); o = o.parent; } p.shift(); var i; for (i in p) { txt+="
"+p[i].title+"
"; } // txt+="
"+this.title+"
"; /* if (this.descr) { txt+="
"+this.descr+"
"; } */ var ret = $("
").addClass('baloo').html(txt); $.ajax({ url:MAPPER_AJAX_SERVER , dataType: "json" , data:{__op:[{fn:'getlayertxt', id:this.id}]} , success:function(data){ if (data.__out) alert(data.__out); if (data.c1) {ret.append($("
").addClass('c1').html("Основан в " + data.c1 + " г."));} var sq = GetNativeSq(data.c2, 100); if (data.c2) {ret.append($("
").addClass('c2').html("Площадь " + sq.native + " га." + (sq.country?(' (' + sq.country + ')'):"") ).attr('title', sq.km2 + ' км.кв.'));} if (data.html) { ret.append($("
").addClass('content').html(data.html)); $("a.enlarge", ret).lightBox(); // txs.baloon.setContent(txs.baloon.getContent()); } txs.baloon.open(txs.rootobj.map); } }); return ret; }, //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- GetData: function() { return { 'parent':this.parent.id ,'title':this.title ,'descr':this.descr ,'stylename':this.stylename } }, //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- SetLegend: function(url) { var icon = $('.lgnd',this.box.children('.left')); if (url) { if (icon.length) icon.css('background-image', 'url('+url+')'); else // $('.titlebox',this.infobox).before($("").addClass('lgnd').attr('src', '/imn/spacer.gif').css('background-image', 'url('+url+')')); this.box.children('.left').append($("").addClass('lgnd').attr('src', '/imn/spacer.gif').css('background-image', 'url('+url+')')); } else icon.remove(); // if (this.title==txt) return; // this.title = txt; }, //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- SetTitle: function(txt) { if (this.title==txt) return; $('.title',this.infobox).text(txt); this.title = txt; }, //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- SetDescription: function(txt) { this.descr = txt; return; /* if (this.descr==txt) return; var box = $('.descr',this.infobox); if (txt) { if (box.length) box.text(txt); else $('.content',this.infobox).after($("").addClass('descr').text(txt)); } else { box.remove(); } // $('.descr',this.infobox).text(txt); */ }, //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- SetStyle: function(txt) { if (this.stylename==txt) return; this.stylename = txt; //if (txt!='default') debugger; this.UpdateStyle(); }, //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- UpdateStyle: function() { if (this.stylename && this.rootobj && this.rootobj.config && this.rootobj.config.styles) { var style = this.rootobj.config.styles[this.stylename]; if (typeof(style)!='object') { alert("Style name is not found: "+this.stylename); return; } //debugger; if (typeof(style.legend)=='object') { this.SetLegend(style.legend.icon); } } if (this.layers) { for (var k in this.layers) { this.layers[k].UpdateStyle(); } } }, //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- BuildNode: function() { var box = this.parent.getSubtreeBox(); if (box) { var ths = this; this.box = $("
").appendTo(box).addClass("layer show").attr('id', 'lay'+this.id);; /* this.box.append($("
").addClass("ctrlb vis").click(function(){ths.ShowHide();})) this.box.append($("
").addClass("ctrlb sele").click(function(){ths.Select(); $(this).toggleClass('ok');})) ; this.box.append($("
").addClass("ctrlb edit").click(function(){ths.Edit();})) ; */ this.infobox = $("
").appendTo(this.box).addClass("info") .append($("
") .append($("").addClass("title").click(function(){ths.CenterBounds();})) .addClass("content")) /* .append($("") .addClass("descr") //.click(function(){ths.CenterBounds();}) ) */ /* $("
").appendTo(this.box).addClass("admin") .append($("
").html('id:'+ths.id+' edit').click(function(){ths.Edit();})) ; */ this.box.append($("
").addClass("left").append($("
").addClass("subf"+(this.open?" opened":"")))) .append($("
").addClass("ctrlb") .append($("
").addClass("vis").click(function(e){ {ths.ShowHide();}})) ) /* .append($("
").addClass("ctrlb vis").click(function(){ths.ShowHide();})) .append($("
").addClass("ctrlb sele").click(function(){ths.Select(); $(this).toggleClass('ok');})) .append($("
").addClass("ctrlb edit").click(function(){ths.Edit();})) */ this.treebox = $("
").appendTo(this.box).addClass("tree"+(this.open?" opened":"")); } }, //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- setupSubf: function() { if (!this.box) return; var subf = this.box.children('.left').children('.subf'); this.hasChildren = false; for (var k in this.layers) { if (this.layers[k].type=='group') { this.hasChildren=true; break; } } if (subf.length) { var ths = this; subf.unbind('click');//(function(){ths.OpenClose();}); if (this.hasChildren) { subf.click(function(){ths.OpenClose();}); subf.addClass("plus"); if (this.open) {subf.addClass("open");} } else { subf.removeClass("plus"); } } }, //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- getSubtreeBox: function() { if (this.box) return this.box.children('.tree'); else return null; } }); //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- // Service function //_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- function mixin(dst, src){ var tobj = {} for(var x in src){ if((typeof tobj[x] == "undefined") || (tobj[x] != src[x])){ dst[x] = src[x]; } } } function DecompJSON(d) { /* this function converts coplacated properties of object int object constructors etc */ var reg = new RegExp('^(\\w+)__constructor__([\\w\\.]+)$', 'i'); var res; if (typeof(d) == "object") { for (var k in d) { d[k] = DecompJSON(d[k]); if ((res = reg.exec(k)) != null) { // if (k.match(reg)) { //debugger; var t=d[k]; var obj = eval(res[2]); var p = new obj(); for (var i in t) { p[i] = t[i]; } d[res[1]] = p; delete(d[k]); /* var t=d[k]; var fun = eval(res[2] + '.prototype.constructor'); var p = new Object(); fun.apply(p, t); d[res[1]] = p; delete(d[k]); */ }; } } return d; } function SetLoading(_b, text) { //debugger; var parent = $(_b); var box = parent.data('loading'); if (!box) { box = $("
").addClass('loading'); parent.data('loading', box); } var b = parent.offset(); b.width = parent.width(); b.height = parent.height(); box.empty(); box.append($("
").css({'marginTop':(b.height/3)}).html("
"+text+"
")).css(b).appendTo(document.body); } function RemoveLoading(_b) { var parent = $(_b); var box = parent.data('loading'); parent.data('loading', ''); box.fadeOut(2000,function(){$(this).remove()}); } function GetNativeSq(sq, to_km) { var ret = {}; var sizes = [[1000,"тыс."], [1000000,"млн."]]; var countries = [ ['Австралия','Австралии','7686850'], ['Австрия','Австрии','83858'], ['Белоруссия','Белоруссии','207600'], ['Бельгия','Бельгии','32545'], ['Бразилия','Бразилии','8511965'], ['Великобритания','Великобритании','244820'], ['Германия','Германии','357021'], ['Греция','Греции','131940'], ['Египет','Египета','1001450'], ['Израиль','Израиля','22072'], ['Испания','Испании','497304'], ['Италия','Италии','301340'], ['Канада','Канады','9976139'], ['Кипр','Кипра','9250'], ['Китай','Китая','9598962'], ['Мексика','Мексики','1972550'], ['Польша','Польшы','312685'], ['Португалия','Португалии','92082'], ['США','США','9519431'], ['Турция','Турции','780580'], ['Украина','Украины','603700'], ['Франция','Франции','547030'], ['Москва','Москвы','1091'], ['московская область','московской области','45799'], ['Швейцария','Швейцарии','41290']]; if (!to_km) to_km=1; ret.original = sq; ret.km2 = sq/to_km; var nat = sq; for (var i in sizes) { if (sq < sizes[i][0]) break; nat = Math.round(10*sq / sizes[i][0])/10 + " " + sizes[i][1]; } ret.native = nat; if (ret.km2 > 4000) { var n = {err:1000000000000000}; var coofs = [[0.25, "1/4"],[0.33333, "1/3"],[0.5, "половина" ],[1,"площадь"],[2,"две"],[3,"три"],[4,"четыре"],[5,"пять"]]; for (var i in countries) { var t=countries[i]; for (var o in coofs) { var d = parseInt(t[2])*coofs[o][0]; if (Math.abs(d-ret.km2) < n.err) { n.err = Math.abs(d-ret.km2); n.coof = o; n.cnt = i; n.more = (d