每个业务子系统都要加载flexviewer搭建的gis系统,我们可以共用同一个系统,把要交互的逻辑封装出去,首先把加载flash那段js代码封装起来放到一个自己定义的控制类,这个类暂时叫MapControl,把初始化flash的一个方法定义到里面。
1 /** 2 * Created with JetBrains WebStorm. 3 * User: haibalai 4 * Date: 15-12-9 5 * Time: 下午3:51 6 * To change this template use File | Settings | File Templates. 7 */ 8 9 var MapControl = function () { 10 /** 11 * 地图初始化parameter 具体参考Parameter类 12 * @type {Parameter} 13 */ 14 this.parameter = new Parameter(); 15 /** 16 * 地图初始化 17 */ 18 this.inlitialize = function () { 19 20 21 swfobjhash[this.parameter.div] = this; 22 var swfVersionStr = "11.4.0"; 23 var xiSwfUrlStr = ""; 24 var flashvars = {}; 25 26 var params = {}; 27 params.wmode = "opaque"; 28 params.quality = "high"; 29 params.bgcolor = "#ffffff"; 30 params.allowscriptaccess = "always"; 31 params.allowfullscreen = "true"; 32 var attributes = {}; 33 attributes.id = this.parameter.div; 34 attributes.name = this.parameter.div; 35 attributes.align = "middle"; 36 swfobject.embedSWF( 37 "http://localhost/mymap/index.swf" + this.parameter.getUrlString() , this.parameter.div, 38 this.parameter.width, this.parameter.height, 39 swfVersionStr, xiSwfUrlStr, 40 flashvars, params, attributes); 41 swfobject.createCSS("#" + this.parameter.div, "display:block;text-align:left;"); 42 } 43 }
其中Parameter类是我们自定义某些属性的东西,比如地图的长宽,放置div的id,还有系统的别名,flexviewer默认的是config.xml,如果你定制另外一个系统你可以改为config-aaa.xml
之类的。
1 /** 2 * Created with JetBrains WebStorm. 3 * User: haibalai 4 * Date: 15-12-9 5 * Time: 下午3:51 6 * To change this template use File | Settings | File Templates. 7 */ 8 9 var Parameter = function (){ 10 11 /** 12 *图层配置xml 13 * @type {string} 14 */ 15 this.config = ""; 16 17 /** 18 * 嵌入flash的div配置 19 * @type {string} 20 */ 21 this.div = ""; 22 /** 23 *图形组件的宽 24 * @type {string} 25 */ 26 this.width = ""; 27 /** 28 *图形组件的高 29 * @type {string} 30 */ 31 this.height = ""; 32 33 34 this.getUrlString = function() 35 { 36 var a = "?config=" + this.config; 37 return a; 38 } 39 40 41 }
我们在测试页面html可以这样子
1 <html> 2 <head> 3 <title>mymap</title> 4 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 5 <script type="text/javascript" src="http://locahost/mymap/libary/MapTool.js"></script> 6 7 </head> 8 9 10 11 <script type="text/javascript"> 12 13 var a = new MapControl(); 14 a.parameter.config = "config.xml"; 15 a.parameter.div= "flashContent"; 16 a.parameter.width = "800"; 17 a.parameter.height = "800"; 18 a.inlitialize(); 19 20 </script> 21 22 <body> 23 24 <div id="flashContent"> 25 26 </div> 27 28 29 </body> 30 </html>
其中MapTool.js是压缩了MacControl.js 和Parameter.js。