esri的proxy和config的配置
2012-09-17 21:12
246 查看
一、遇到的问题描述:
在参考ArcGIS Resource Center中的Query task->Query map with buffer polygon中使用queryTask.execute(query)执行查询的时候,总是不会触发到dojo.connect(queryTask, "onComplete", function(fset)中的onComplete事件。
部分代码如下:
{
……
query.geometry = graphic.geometry;
queryTask.execute(query);
dojo.byId('messages').innerHTML = "<b>Executing Query with Result Buffer Geometry...</b>";
});
// +++++Listen for QueryTask executecomplete event+++++
dojo.connect(queryTask, "onComplete", function(fset) {
……
}
后来firebug中调试发现:query.geometry是个多边形(含有的point多)导致的web service的url的参数个数大于2048个,而我们这里采用的是get方式(最大的字符数为2048)不是post方式。所以我们需要一个proxy page做代理(即例子中的proxy.ashx)。
关于proxy.ashx可以参考:http://resources.esri.com/help/9.3/arcgisserver/apis/javascript/arcgis/help/jshelp_start.htm中的working with ArcGIS Server Service
---> Using the proxy page相关.
这里大概介绍下使用方法(具体的参考上述ESRI官网的帮助):
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、在你客户端页面的js脚本初始话的时候,或者会导致get方式字符数>2048时。添加如下代码:
esri.config.defaults.io.proxyUrl = "proxy.ashx";(当然这个地址是根据实际在web项目中的位置决定的,也可能是" …/Proxy/proxy.ashx"等)
//可以设置她是不是用proxy page,如果字符数>2048时,默认的是false。
esri.config.defaults.io.alwaysUseProxy = true;
问题就解决了。
二、关于Geometry service相关:
1、9.3中共有七种服务,如下图。每创建一个服务之前,需要创建GIS resource(让人想起了 ADF OEM中的IGISResource),每种服务对应其GIS Resource:
Geometry service不需要任何资源,但是需要人工发布,发布后的地址如:http://esri-pc3973/ArcGIS/rest/services/Geometry/GeometryServer 。关于GP service可以参考安装的离线帮助。
在参考ArcGIS Resource Center中的Query task->Query map with buffer polygon中使用queryTask.execute(query)执行查询的时候,总是不会触发到dojo.connect(queryTask, "onComplete", function(fset)中的onComplete事件。
部分代码如下:
{
……
query.geometry = graphic.geometry;
queryTask.execute(query);
dojo.byId('messages').innerHTML = "<b>Executing Query with Result Buffer Geometry...</b>";
});
// +++++Listen for QueryTask executecomplete event+++++
dojo.connect(queryTask, "onComplete", function(fset) {
……
}
后来firebug中调试发现:query.geometry是个多边形(含有的point多)导致的web service的url的参数个数大于2048个,而我们这里采用的是get方式(最大的字符数为2048)不是post方式。所以我们需要一个proxy page做代理(即例子中的proxy.ashx)。
关于proxy.ashx可以参考:http://resources.esri.com/help/9.3/arcgisserver/apis/javascript/arcgis/help/jshelp_start.htm中的working with ArcGIS Server Service
---> Using the proxy page相关.
这里大概介绍下使用方法(具体的参考上述ESRI官网的帮助):
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、在你客户端页面的js脚本初始话的时候,或者会导致get方式字符数>2048时。添加如下代码:
esri.config.defaults.io.proxyUrl = "proxy.ashx";(当然这个地址是根据实际在web项目中的位置决定的,也可能是" …/Proxy/proxy.ashx"等)
//可以设置她是不是用proxy page,如果字符数>2048时,默认的是false。
esri.config.defaults.io.alwaysUseProxy = true;
问题就解决了。
二、关于Geometry service相关:
1、9.3中共有七种服务,如下图。每创建一个服务之前,需要创建GIS resource(让人想起了 ADF OEM中的IGISResource),每种服务对应其GIS Resource:
Geometry service不需要任何资源,但是需要人工发布,发布后的地址如:http://esri-pc3973/ArcGIS/rest/services/Geometry/GeometryServer 。关于GP service可以参考安装的离线帮助。
相关文章推荐
- angular2 使用更改默认端口,并配置proxy.config.json进行跨域访问
- ubunto apt config proxy 配置代理或者运行在代理网络的环境下
- PAC(Proxy Auto Config)代理自动配置文件的编写
- 关于esri 在javascript 下配置 proxy 的 跨域 问题
- ArcGIS API for Javascript 使用缓冲区结果做query查询出现“esri.config.defaults.io.proxyUrl 尚未进行设置”错误
- esri.config.defaults.io.proxyUrl设置
- Flex配置文件-proxy-config.xml
- esri.config.defaults.io.proxyUrl设置
- ArcGIS API for Javascript 使用query查询以某个点为半径的圆内的要素出现“esri.config.defaults.io.proxyUrl 尚未进行设置”错误
- proxy代理解决arcgis api报错“esri.config.defaults.io.proxyUrl 尚未进行设置”问题
- ArcGIS API for Javascript 使用缓冲区结果做query查询出现“esri.config.defaults.io.proxyUrl 尚未进行设置”错误
- 配置<aop:config proxy-target-class="true">时遇到的错误
- 使用asp.net2.0或3.5编程加密、解密web.config中的配置信息
- C#读写Config配置文件
- JSF配置文件faces-config.xml参数详解
- asp.net中Web.Config配置文件详解
- 自学Zabbix13.2 分布式监控proxy配置
- [转]关于IIS7.5下的web.config 404 配置的一些问题
- spring cloud config 配置
- spring.net config/file/assembly 配置说明