Mercurial > hg > ChinaGisRestApi
view gis_gui/blocks/map.js @ 63:7f008e782563
add gui files to product via FileSystemSite
author | casties |
---|---|
date | Fri, 05 Nov 2010 18:52:55 +0100 |
parents | |
children | 2f477270cc0c |
line wrap: on
line source
guiBlocks.prototype.addMapBlock = function(url, baseId, firstLayer) { var block = this.addBlock(url, baseId, function() { // function after add block finished var be = block.element; console.debug("in mapblock after block load!"); block.params.map_layers = []; if (typeof(firstLayer) != "undefined") { block.appendMapLayer(firstLayer); } block.showMapParams(); // show block $(be).fadeIn(); // save map params in block.param -- too early //params = block.readLayerParams(); // load map block.updateMap(be,block.params); // update button $(be).find(".map_update_button").click(function() { console.debug("map update"); params = block.readMapParams(); block.updateMap(be,params); }); }); }; guiBlocks.Block.prototype.appendMapLayer = function(layerparams) { // add layer to this map var layerinfo = {display: true, layer:layerparams}; var layers = this.params.map_layers; layers.push(layerinfo); // update indexes for (var i = 0; i < layers.length; i++) { layers[i].idx = i; } }; guiBlocks.Block.prototype.showMapParams = function(elem,params) { // create html with layer parameters from params if (typeof(elem) == 'undefined') { elem = this.element; } if (typeof(param) == 'undefined') { params = this.params; } var layers = params.map_layers; // remove old info $(elem).remove(".layer_info"); // write new info if (layers.length > 0) { var tmpl = $(elem).find(".layer_info_tmpl").tmpl(layers); $(elem).find(".map_layer_header").after(tmpl); } }; guiBlocks.Block.prototype.readMapParams = function(elem,params) { // read layer parameters from html element and store in param if (typeof(elem) == 'undefined') { elem = this.element; } if (typeof(param) == 'undefined') { params = this.params; } params.name = $(elem).find(".map_name").val(); var layers = params.map_layers; for (var i = 0; i < layers.length; i++) { layers[i].display = $(elem).find(".layer_display_"+i).attr("checked"); } //params.position_field = $(elem).find(".map_position_select").val(); //params.connect_line = $(elem).find(".layer_line_checkbox").attr("checked"); return params; }; guiBlocks.Block.prototype.updateMap = function(elem,map_params) { // update and draw the google map var le = $(elem).find(".map_box").get(0); // create empty map if (typeof(google) != "undefined") { var latlng = new google.maps.LatLng(29, 116); var mapOpts = { zoom: 5, center: latlng, mapTypeId: google.maps.MapTypeId.TERRAIN }; var map = new google.maps.Map(le, mapOpts); console.debug("new google map=",map," on el=",le); } // add the layers var layerList = map_params.map_layers; for (var i = 0; i < layerList.length; i++) { if (!layerList[i].display) { continue; } var params = layerList[i].layer; var paramstr = "format=KML_URL"; if (params.position_field && params.position_field != "Default") { paramstr += "&gis_id_field="+params.position_field; } if (params.connect_line) { paramstr += "&connect_line="+params.connect_line; } var layerurl = "../db/RESTdb/db/public/" + escape(params.table) + "?" + paramstr; jQuery.get(layerurl, function(data, textStatus, XMLHttpRequest) { // function after load kml url finished console.debug("kml url loaded! this=", this, " data=", data, " ("+typeof(data)+")"); if (typeof(data) == "string") { var kmlURL = data; } else { // broken, what now? return; } // render layer if (typeof(google) != "undefined") { var newMarker=new google.maps.KmlLayer(kmlURL); console.debug("new marker layer=",newMarker," map=",map); newMarker.setMap(map); } }); } };