之前在做一个温度数据插值的功能,用到近3000个点去插值来实现等值面,我的想法是服务器端利用Php(或者.net,看喜好,这里不讨论效能问题)将数据文件写成ArcGIS中所需要的JSON格式,然后客户端利用处理好的json数据去直接初始化feature set,但是现在问题来了,虽然数据可以使用,但是只能在几个点的数据量下才能运行成功,一旦点数过多,就不可以了。我用chrome的develop tool去观察Network下的响应,发现request url后跟了一长串需要处理的json数据,猛然发现原来是因为url长度限制问题,所以要是数据多,超过了url限制的话,就会造成数据无法携带,无法传给服务器的问题,所以才会无法执行gp服务。ie浏览器是2048个字符,chrome和firefox貌似没有限制,但是依然不成功,原因就是get方法的问题,解决这个问题的方法就是在程序中利用proxy page去将get的数据转而post出来,这样就能规避长度有限的限制。具体的proxy page如何使用官方文档讲的很清楚,http://help.arcgis.com/en/webapi/javascript/arcgis/jshelp/#ags_proxy,需要的同学可以直接转页。不过对于使用IIS的同学貌似有点郁闷,因为文档中只介绍了IIS5和6的配置情况,没有讲7+的版本,所以我果断用了apache+PHP的方式,同时也给我了个教训,在选择服务器和服务器语言,要以主流为主啊,非主流太郁闷。。。
将下载下来的proxy.php直接拖入到项目文件中,并且在程序中加入下面这句: