Mercurial > hg > ChinaGisRestApi
comparison gis_gui/blocks/layer.js @ 63:7f008e782563
add gui files to product via FileSystemSite
author | casties |
---|---|
date | Fri, 05 Nov 2010 18:52:55 +0100 |
parents | |
children | 49fb47bbe2e6 |
comparison
equal
deleted
inserted
replaced
62:3905385c8854 | 63:7f008e782563 |
---|---|
1 | |
2 guiBlocks.prototype.addLayerBlock = function(url, baseId, params) { | |
3 if (typeof(params) == "string") { | |
4 // then its table name | |
5 params = {"type": "layer", "table": params}; | |
6 } | |
7 var block = this.addBlock(url, baseId, params, function() { | |
8 // function after add block finished | |
9 var id = block.id; | |
10 var be = block.element; | |
11 block.type = "layer"; | |
12 var tablename = params.table; | |
13 console.debug("in layerblock after block load!"); | |
14 $(be).find(".layer_name").val(block.params.name); | |
15 $(be).find(".layer_position_select").load("../db/RESTdb/db/public/"+tablename+"?format=HTML&type=schema_table_rows&layout=select&element_id=rows #rows *", | |
16 function() { | |
17 $(this).find("option:first").before('<option>Default</option>'); | |
18 if (!params.position_field) { | |
19 params.position_field = "Default"; | |
20 } | |
21 $(this).find("option").filter(function(){return $(this).text() == params.position_field;}).attr("selected","true"); | |
22 }); | |
23 $(be).find(".layer_label_select").load("../db/RESTdb/db/public/"+tablename+"?format=HTML&type=schema_table_rows&layout=select&element_id=rows #rows *", | |
24 function() { | |
25 $(this).find("option:first").before('<option>Default</option>'); | |
26 if (!params.label_field) { | |
27 params.label_field = "Default"; | |
28 } | |
29 $(this).find("option").filter(function(){return $(this).text() == params.label_field;}).attr("selected","true"); | |
30 }); | |
31 $(be).find(".layer_size_select").load("../db/RESTdb/db/public/"+tablename+"?format=HTML&type=schema_table_rows&layout=select&element_id=rows #rows *", | |
32 function() { | |
33 $(this).find("option:first").before('<option>Default</option>'); | |
34 if (!params.size_field) { | |
35 params.size_field = "Default"; | |
36 } | |
37 $(this).find("option").filter(function(){return $(this).text() == params.size_field;}).attr("selected","true"); | |
38 }); | |
39 $(be).find(".layer_color_select").load("../db/RESTdb/db/public/"+tablename+"?format=HTML&type=schema_table_rows&layout=select&element_id=rows #rows *", | |
40 function() { | |
41 $(this).find("option:first").before('<option>Default</option>'); | |
42 if (!params.color_field) { | |
43 params.color_field = "Default"; | |
44 } | |
45 $(this).find("option").filter(function(){return $(this).text() == params.color_field;}).attr("selected","true"); | |
46 }); | |
47 $(be).find(".layer_shape_select").load("../db/RESTdb/db/public/"+tablename+"?format=HTML&type=schema_table_rows&layout=select&element_id=rows #rows *", | |
48 function() { | |
49 $(this).find("option:first").before('<option>Default</option>'); | |
50 if (!params.shape_field) { | |
51 params.shape_field = "Default"; | |
52 } | |
53 $(this).find("option").filter(function(){return $(this).text() == params.shape_field;}).attr("selected","true"); | |
54 }); | |
55 $(be).find(".layer_line_checkbox").attr("checked", params.connect_line); | |
56 // show block | |
57 $(be).fadeIn(); | |
58 | |
59 // save map params in block.param -- too early | |
60 //params = block.readLayerParams(); | |
61 | |
62 // load map | |
63 block.updateLayer(be,params); | |
64 | |
65 // update button | |
66 $(be).find(".layer_update_button").click(function() { | |
67 console.debug("layer update"); | |
68 params = block.readLayerParams(); | |
69 block.updateLayer(be,params); | |
70 }); | |
71 // save button | |
72 $(be).find(".layer_save_button").click(function() { | |
73 console.debug("layer save. this=",this," block=",block); | |
74 params = block.readLayerParams(be,params); | |
75 block.storeBlock("test1"); | |
76 }); | |
77 // open table button | |
78 $(be).find(".layer_open_table_button").click(function() { | |
79 console.debug("layer open table. this=",this," block=",block); | |
80 var tblblock = blocks.addTableBlock("blocks/table.html?table="+escape(params.table),"table", params.table); | |
81 }); | |
82 // create map button | |
83 $(be).find(".map_create_button").click(function() { | |
84 console.debug("layer create map. this=",this," block=",block); | |
85 var mapblock = blocks.addMapBlock("blocks/map.html?layer="+escape(params.name),"map",params); | |
86 }); | |
87 | |
88 }); | |
89 }; | |
90 | |
91 guiBlocks.Block.prototype.readLayerParams = function(elem,params) { | |
92 // read layer parameters from html element and store in param | |
93 if (typeof(elem) == 'undefined') { | |
94 elem = this.element; | |
95 } | |
96 if (typeof(param) == 'undefined') { | |
97 params = this.params; | |
98 } | |
99 params.name = $(elem).find(".layer_name").val(); | |
100 params.position_field = $(elem).find(".layer_position_select").val(); | |
101 params.label_field = $(elem).find(".layer_label_select").val(); | |
102 params.size_field = $(elem).find(".layer_size_select").val(); | |
103 params.color_field = $(elem).find(".layer_color_select").val(); | |
104 params.shape_field = $(elem).find(".layer_shape_select").val(); | |
105 params.connect_line = $(elem).find(".layer_line_checkbox").attr("checked"); | |
106 return params; | |
107 }; | |
108 | |
109 guiBlocks.Block.prototype.updateLayer = function(elem,params) { | |
110 // update and draw the google map | |
111 var le = $(elem).find(".map_box").get(0); | |
112 var paramstr = "format=KML_URL"; | |
113 if (params.position_field && params.position_field != "Default") { | |
114 paramstr += "&gis_id_field="+params.position_field; | |
115 } | |
116 if (params.connect_line) { | |
117 paramstr += "&connect_line="+params.connect_line; | |
118 } | |
119 var layerurl = "../db/RESTdb/db/public/" + escape(params.table) + "?" + paramstr; | |
120 jQuery.get(layerurl, function(data, textStatus, XMLHttpRequest) { | |
121 // function after load kml url finished | |
122 console.debug("kml url loaded! this=", this, " data=", data, " ("+typeof(data)+")"); | |
123 if (typeof(data) == "string") { | |
124 var kmlURL = data; | |
125 } else { | |
126 // what to do? | |
127 return; | |
128 } | |
129 if (typeof(google) != "undefined") { | |
130 var latlng = new google.maps.LatLng(29, 116); | |
131 var mapOpts = { | |
132 zoom: 5, | |
133 center: latlng, | |
134 mapTypeId: google.maps.MapTypeId.TERRAIN | |
135 }; | |
136 var map = new google.maps.Map(le, mapOpts); | |
137 console.debug("new google map=",map," on el=",le); | |
138 | |
139 //geocoder = new google.maps.Geocoder(); | |
140 var newMarker=new google.maps.KmlLayer(kmlURL); | |
141 console.debug("new marker layer=",newMarker); | |
142 newMarker.setMap(map); | |
143 } | |
144 }); | |
145 | |
146 }; | |
147 |