問題背景:
用ArcGIS API for javascript 空間查詢時,通過簡單的拉框,繪制多邊形等簡單幾何要素之間疊加,相交空間分析這種查詢方式通過
Query task->中使用queryTask.execute(query)執行查詢的時候,觸發到dojo.connect(queryTask, "onComplete", function(fset)中的onComplete事件。
結果可以出來。但是當幾何要素複雜的時候,比如行政區于某個要素幾何疊加,相交分析,此時行政區的Geometry多大幾萬個點,
API的Query Task的web service的url的參數個數大于2048個,而我們這裡采用的是get方式(最大的字元數為2048)不是post方式。是以我們需要一個proxy page做代理(即例子中的proxy.ashx)。
解決方法如下:
I、下載下傳proxy.ashx檔案(包含proxy.config)的zip壓縮包,将上述兩個包解壓到你的web application的目錄下.然後在程式中添加上它們兩個.
II、修改proxy.config配置檔案:<serverUrls>節點下添加一個子節點<serverUrl >,設定屬性url:如果你的web程式用到大于兩個服務(下面"二、"說的七種服務)的話 url=http://你的IP位址/arcgis/rest/services/;如果是web程式用到一個服務的話:url=http://你的IP位址/arcgis/rest/services/MyMapService/MapServer 。如果你不是用本地的服務的話你可以不做修改(因為它裡面已經有ESRI釋出的相關服務的URL了).
III、将proxy.ashx在IIS中釋出。添加如下代碼:
esri.config.defaults.io.proxyUrl = "http://localhost/proxy.ashx";(當然這個位址是proxy.ashx釋出的位置" …/Proxy/proxy.ashx"等)
//可以設定她是不是用proxy page,如果字元數>2048時,預設的是false。
esri.config.defaults.io.alwaysUseProxy = true;