天天看點

ArcGIS API for javascript 空間查詢 沒有結果 解決

問題背景:

用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;

繼續閱讀