问题背景:
用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;