日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ArcGIS Web 应用开发框架(ADF)中的Ajax

發(fā)布時間:2025/6/17 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ArcGIS Web 应用开发框架(ADF)中的Ajax 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
我希望各位看官在看這篇文章之前,先對.NET中內(nèi)置的Ajax了解較透,如果還不是很明白,建議先看我的上一篇博文.NET內(nèi)置的Ajax工作原理 ESRI ArcGIS Server 9.2 的web應(yīng)用開發(fā)框架充分利用了ASP.NET中的回調(diào)技術(shù)。我們來看看利用Visual Studio 模板創(chuàng)建的默認(rèn)應(yīng)用程序中如何利用回調(diào)的。
首先看到默認(rèn)的主頁面Default.aspx 對應(yīng)的類 WebMapApplication 實(shí)現(xiàn)了 ICallbackEventHandler 接口。 我們再以Identify工具來深入了解應(yīng)用開發(fā)框架。 在 WebMapApplication 類的 Load 事件處理器中,調(diào)用 new MapIdentify(Map1) 初始化Identify 工具。在 MapIdentify 類的構(gòu)造函數(shù)中,調(diào)用了SetupIdentify 方法。該方法首先通過調(diào)用 GetCallbackEventReference 方法來生成客戶端腳本,然后調(diào)用 RegisterClientScriptBlock 注冊一個名為 identifyCallbackFunctionString 的 JavaScript 函數(shù),該函數(shù)中調(diào)用生成的客戶端腳本。 在 display_mapidentify.js 文件的 MapIdClick 函數(shù)(Identify 事件處理器)中調(diào)用了?identifyCallbackFunctionString 函數(shù),從而觸發(fā)了?WebMapApplication 類的 RaiseCallbackEvent 方法。 RaiseCallbackEvent ?方法不僅需要處理 Identify 工具,還需要處理其他工具,本實(shí)例中包括關(guān)閉應(yīng)用程序與獲取版權(quán)文本。為了在該方法中判斷是哪個工具啟動了該方法調(diào)用,需要在傳入在參數(shù)中包含表明調(diào)用“身份”。同時由于在傳入?yún)?shù)中還需要其他可能更多的信息,例如Identify工具,不僅需要表明調(diào)用者身份的信息,還需要當(dāng)前用戶單擊處 X、Y 坐標(biāo)信息。為了能在RaiseCallbackEvent ?方法中把這些信息都解釋出來,本實(shí)例使用的是
"參數(shù)名1=參數(shù)值1&參數(shù)名2=參數(shù)值2"
式。例如在 MapIdClick 函數(shù)中傳入的是
"ControlID=Map1&ControlType=Map&EventArg=MapIdentify&Map1_mode=MapIdentify &minx="+zleft+"&miny="+ztop
而在 RaiseCallbackEvent 方法(或者是?RaiseCallbackEvent 中調(diào)用的?一個webservice方法,一個自定義類方法),通過調(diào)用?Split("&".ToCharArray ()) 方法將各個 “參數(shù)名=參數(shù)值” 放置到一組數(shù)組中,然后再通過建立哈希表的方式把“參數(shù)名” 與 “參數(shù)值” 分開,具體的代碼如下:
?? ? ? ? ? ?string[]?keyValuePairs;//含有”=“的數(shù)組
????????????string[]?keyValue;//只有字符串的數(shù)組
?? ? ? ? ? ?NameValueCollection?m_queryString?=?new?NameValueCollection?();//鍵值對的集合

?????????????keyValuePairs?
=?eventArgument.Split("&".ToCharArray?());//eventArgument是客戶端傳入的參數(shù)
?????????????
if?(keyValuePairs.Length?>?0)//如果傳遞的參數(shù)是argA=arg1&argB=arg2……形式的,也就是說參數(shù)不止一個
?????????????{
?????????????????
for?(int?i?=?0;?i?<?keyValuePairs.Length;?i++)
?????????????????{
?????????????????????keyValue?
=?keyValuePairs.GetValue(i).ToString().Split("=".ToCharArray());
?? ? ? ? ? ? ? ? ? ? ?m_queryString?.Add(keyValue[
0],?keyValue[1]);
?????????????????}
?????????????}
?????????????
else//傳遞的參數(shù)只有一個
?????????????{
?????????????????keyValue?
=?eventArgument.Split("=".ToCharArray());
?????????????????
if?(keyValue.Length?>?0)//如果有參數(shù)傳遞過來的話
?????????????????{
?? ? ? ? ? ? ? ? ? ? ?m_queryString?.Add(keyValue[
0],?keyValue[1]);
?????????????????}
?????????????}
?????????????
//通過htQueryString["EventArg"]這種方式調(diào)用參數(shù)的值
?????????????return?"您選擇的工具名稱是:?"?+?m_queryString?["EventArg"].ToString()?;
通過執(zhí)行上訴的代碼后,只需要調(diào)用m_queryString?["EventArg"]就能判斷是哪個工具啟動該方法的調(diào)用。如果是 Identify 工具,那么該值就為 MapIdentify 。 ?? ? ? ?在判斷出調(diào)用工具是 Identify 后, RaiseCallbackEvent 方法調(diào)用 MapIdentify 類的 Identify 方法得到返回值。
?? ? ? ?通過解析 Arcserver ADF 中的 Ajax ,就不難理解為什么利用 ArcServer ADF 開發(fā)的 webgis 產(chǎn)品中地圖的刷新是如此之快了。。。。。。。。。。。。。

轉(zhuǎn)載于:https://www.cnblogs.com/gisland/archive/2009/09/14/1566599.html

總結(jié)

以上是生活随笔為你收集整理的ArcGIS Web 应用开发框架(ADF)中的Ajax的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。