Mercurial > hg > ChinaGisRestApi
view gis_gui/blocks/layer.js @ 218:1ac5bcf3dad2
implement Google Search
author | fknauft |
---|---|
date | Tue, 29 Mar 2011 15:58:35 +0200 |
parents | 47acfb4a97cf |
children | 0a1dee507612 |
line wrap: on
line source
guiBlocks.prototype.addLayerBlock = function(url, baseId, params) { if (typeof(params) == "string") { // then its the table name params = {"type": "layer", "table": params, "color_field":"red","geometry_field":"point"}; } var block = this.addBlock(url, baseId, params, function() { // function after add block finished var id = block.id; var be = block.element; block.type = "layer"; var tablename = params.table; console.debug("in layerblock after block load!"); $(be).find(".layer_name").val(block.params.name); $(be).find(".layer_position_select").load("../db/RESTdb/db/public/"+tablename+"?format=HTML&type=schema_table_rows&layout=select&element_id=rows #rows *", function() { $(this).find("option:first").before('<option>Default</option>'); if (!params.position_field) { params.position_field = "Default"; } $(this).find("option").filter(function(){return $(this).text() == params.position_field;}).attr("selected","true"); }); $(be).find(".layer_label_select").load("../db/RESTdb/db/public/"+tablename+"?format=HTML&type=schema_table_rows&layout=select&element_id=rows #rows *", function() { $(this).find("option:first").before('<option>Default</option>'); if (!params.label_field) { params.label_field = "Default"; } $(this).find("option").filter(function(){return $(this).text() == params.label_field;}).attr("selected","true"); }); $(be).find(".layer_size_select").load("../db/RESTdb/db/public/"+tablename+"?format=HTML&type=schema_table_rows&layout=select&element_id=rows #rows *", function() { $(this).find("option:first").before('<option>Default</option>'); if (!params.size_field) { params.size_field = "Default"; } $(this).find("option").filter(function(){return $(this).text() == params.size_field;}).attr("selected","true"); }); $(be).find(".layer_geom_select").attr("element","<select id='geom'><option selected>point</option><option>poly</option><option>line</option></select>"); params.geometry_field = "point"; $(be).find(".layer_color_select").attr("element","<select id='color'><option selected>red</option><option>blue</option><option>black</option><option>green</option><option>violett</option></select>"); params.color_field = "red"; $(be).find(".layer_shape_select").load("../db/RESTdb/db/public/"+tablename+"?format=HTML&type=schema_table_rows&layout=select&element_id=rows #rows *", function() { $(this).find("option:first").before('<option>Default</option>'); if (!params.shape_field) { params.shape_field = "Default"; } $(this).find("option").filter(function(){return $(this).text() == params.shape_field;}).attr("selected","true"); }); $(be).find(".layer_line_checkbox").attr("checked", params.connect_line); // show block $(be).fadeIn(); // save map params in block.param -- too early //params = block.readLayerParams(); // load map console.debug("params:", params); block.updateLayer(be,params); // update button $(be).find(".layer_update_button").click(function() { console.debug("layer update"); params = block.readLayerParams(); block.updateLayer(be,params); }); // save button $(be).find(".layer_save_button").click(function() { console.debug("layer save. this=",this," block=",block); params = block.readLayerParams(be,params); block.storeBlock("test1"); }); // open table button $(be).find(".layer_open_table_button").click(function() { console.debug("layer open table. this=",this," block=",block); var tblblock = blocks.addTableBlock("blocks/table.html?table="+escape(params.table),"table", params.table); }); // create map button $(be).find(".map_create_button").click(function() { console.debug("layer create map. this=",this," block=",block); var mapblock = blocks.addMapBlock("blocks/map.html?layer="+escape(params.name),"map",null,params); }); }); }; guiBlocks.Block.prototype.readLayerParams = function(elem,params) { // read layer parameters from html element and store in param if (elem == null) { elem = this.element; } if (params == null) { params = this.params; } params.name = $(elem).find(".layer_name").val(); params.position_field = $(elem).find(".layer_position_select").val(); params.label_field = $(elem).find(".layer_label_select").val(); params.size_field = $(elem).find(".layer_size_select").val(); params.color_field = $(elem).find(".layer_color_select").val(); params.geometry_field = $(elem).find(".layer_geom_select").val(); params.shape_field = $(elem).find(".layer_shape_select").val(); params.connect_line = $(elem).find(".layer_line_checkbox").attr("checked"); return params; }; guiBlocks.Block.prototype.updateLayer = function(elem,params) { // update and draw the google map var le = $(elem).find(".map_box").get(0); var paramstr = "format=KML_URL"; if (params.position_field && params.position_field != "Default") { paramstr += "&gis_id_field="+params.position_field; } if (params.color_field!="None"){ paramstr += "&color_field="+params.color_field; } if (params.geometry_field!="None"){ paramstr += "&geometry_field="+params.geometry_field; } if (params.connect_line) { paramstr += "&connect_line="+params.connect_line; } var layerurl = "../db/RESTdb/db/public/" + escape(params.table) + "?" + paramstr; //alert(layerurl); 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 { // what to do? return; } if (google != null) { 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); //geocoder = new google.maps.Geocoder(); var newMarker=new google.maps.KmlLayer(kmlURL,{ suppressInfoWindows: true, map: map}); google.maps.event.addListener(newMarker, 'click', function(kmlEvent) { var text = kmlEvent.featureData.description; showInContentWindow(text); }); function showInContentWindow(text) { var orig_html=$(elem).find(".mapping_info").html(); $(elem).find(".mapping_info").html(text); $(elem).find(".mapping_info").one("click",function(){$(elem).find(".mapping_info").html(orig_html);}); } console.debug("new marker layer=",newMarker); //newMarker.setMap(map); } }); };