業務gis 怎麼讓別的開發人員不需要懂gis就可以搞開發? (四)

來源:互聯網
上載者:User

標籤:

  我們來想下業務系統用的做多選項是什麼,他們要的很多是地塊定位,業務系統要知道地塊在哪,地塊的樣式,符號化,圖層的展示,還有地塊的屬性顯示,而業務開發人員並不關心你圖層sde是啥,rest發布地址,所以你這些就沒必要告訴他們,首先圖層的管理是很重要的,每個業務系統(指定的config)有可能載入圖層不一樣,我們要把他們管理起來,至於怎麼管理看大家愛好,我是寫了一個工具去管理,把切面的圖和動態圖分開,許可權順序也放在這裡,管理url發布。

 圖層工具做好了後,業務開發人員怎麼去定位這個地塊呢,arcgis for flex或者arcgis for javascript 都有querytask這個東西,業務開發人員不可能去用這個來調用,首先說明,圖層sde名字是不能告訴他們的,因為往往發布服務時候會有definitioan操作,會有一對多的情況,rest服務地址也不能,有可能以後系統升級rest服務地址改了怎麼辦。所以就是flex 上顯示圖層名字為主,這裡指的是我們寫的flex widget的圖層模組,掛載自己的業務圖層。然後業務系統和圖層有關聯索引值對傳給我們,我們在自己做好的圖層工具找到url querytask去尋找地塊。

  我們定義一個Map類,專門對接flex那邊註冊的函數。

 1 var Map = function () { 2  3     this.emap = new Object(); 4      5 } 6  7 Map.prototype = { 8     constructor: Map, 9     /**10      * 地圖恢複到全圖11      */12    13 14 15     /** 有回調這個需要調服務16      * 根據圖層名和主鍵 和值定位到一個指定地塊 內建(高亮)17      * @param layerName 圖層名 暫訂為中文名18      * @param key  圖層主鍵19      * @param value  圖層主索引值20      * @param callback  回呼函數預設可以不傳21      */22     zoomByKeyValue: function (layerName, key, value, callback) {23         this.emap.zoomByKeyValue(layerName, key, value,callback);24     }25 26 27 }

  回調服務告訴是否定位成功,在MapControl 加入Map類

 1 var MapControl = function () { 2     /** 3      * 地圖初始化parameter  具體參考Parameter類 4      * @type {Parameter} 5      */ 6     this.parameter = new Parameter(); 7     /** 8      * 添加事件主體 具體參考EventBus類 9      * @type {EventBus}10      */11     this.eventBus = new EventBus();12     /**13      * Map提供的地圖函數 參考Map類 調用Map類的函數必須等待地圖初始化完畢,建議監聽Initialized事件14      * @type {Map}15      */16     this.map = new Map();17     /**18      * 地圖初始化19      */20     this.inlitialize = function () {21 22 23         swfobjhash[this.parameter.div] = this;24         var swfVersionStr = "11.4.0";25         var xiSwfUrlStr = "";26         var flashvars = {};27 28         var params = {};29         params.wmode = "opaque";30         params.quality = "high";31         params.bgcolor = "#ffffff";32         params.allowscriptaccess = "always";33         params.allowfullscreen = "true";34         var attributes = {};35         attributes.id = this.parameter.div;36         attributes.name = this.parameter.div;37         attributes.align = "middle";38         swfobject.embedSWF(39             "http://localhost/mymap/index.swf"   +40             this.parameter.getswfid() , this.parameter.div,41             this.parameter.width, this.parameter.height,42             swfVersionStr, xiSwfUrlStr,43             flashvars, params, attributes);44         swfobject.createCSS("#" + this.parameter.div, "display:block;text-align:left;");45     }46 }47 48 49 50 var swfobjhash = new Object();51 52 53 //flex圖形組件載入完畢回調 swfid是區分嵌入swf的標識碼54 function emapComplete(swfid) {55     swfobjhash[swfid].map.emap = document.getElementById(swfid);56     swfobjhash[swfid].eventBus.dispatchEvent({type: "Initialized"});57 }

 在html調用

 1 <script type="text/javascript"> 2  3         var a = new MapControl(); 4         a.parameter.config = "config-checkview.xml"; 5         a.parameter.div= "flashContent"; 6         a.parameter.width = "800"; 7         a.parameter.height = "800"; 8         a.eventBus.addEventListener(MapControlEvent.Initialized,initHandle); 9         a.initialise();10 11         function initHandle()12         {13 14             a.map.zoomByKeyValue("地下管線","P_NO","55555")15         }16 17 </script>

 

業務gis 怎麼讓別的開發人員不需要懂gis就可以搞開發? (四)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.