您的位置:首页 > Web前端 > JavaScript

ArcGIS API for javascript 空间查询 没有结果 解决

2014-06-19 16:27 621 查看
问题背景:

用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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐