ArcGIS在线编辑与跨域问题

ArcGIS在线编辑与跨域问题

1、问题描述:本人用的版本为ArcGIS10.0 ArcServer10.0 ArcSDE9.3 oracle11g 做在线编辑功能,引用的是官网的例子https://developers.arcgis.com/javascript/3/sandbox/sandbox.html?sample=ed_default_editingwidget,前提安装好server并且与数据库连接。首先将本地数据导入DatabaseConnections数据库中,然后将初始mxd文档中的数据源替换成数据库中的数据,接着另存为mxd文档,然后在catalog中发布另存的mxd为featureserver,注意这里做在线编辑功能必须发布featureserver服务,mapserver只能浏览不能做编辑,所以在服务发布页面需要勾选feature access(图1),若报configuration错误通常都是数据源没有替换成数据库中数据,还是使用本地数据导致(图2)。


(图1)


(图2)

2、服务发布后开始调用,mapserver加载较快但是不能用作编辑,featureserver加载较慢但是可以编辑,因此为了同时达到加载快又能编辑的目的,我们将mapserver与featureserver同时添加进地图,再将featureserver的透明度设置为0,即可,代码如下(图3)


(图3)

3、接下来就可以在网页上浏览你发布的地图了,然而你会发现运行时会报错(XMLHttpRequest cannot load http://server/arcgis/rest/info?f=json. Origin http://localhost:8080 is not allowed by Access-Control-Allow-Origin),那么使用的代码都一样,为什么官网发布的地图服务就可以用,调用我们自己发布的服务就不可以用呢?这就涉及到跨域问题了,具体什么是跨域请自行百度。

4、解决跨域问题大概有两种办法,本人使用的是通过配置代理来解决的,具体参考http://blog.csdn.net/a1002308667/article/details/52044290,笔者第一次遇到跨域问题,因为教程不够详细所以按照该教程配置时总是失败,好在最后成功了,所以这里再补充一部分细节供新手参考以少走一些弯路。

5、首先proxy.config配置文件的服务地址一定是要改的,改成自己的地图服务地址,将ip与端口号改成自己的(图5),这一步非常重要,若地址错误,后面是不会成功的,楼主深受其害,接着将整个DotNet文件夹拷贝到C:\inetpub\wwwroot下,然后打开IIS管理器,右击DotNet,选择转换为应用程序。转换时记得连接并且测试成功才可以,设置凭据时最好使用电脑管理员账号密码登录(图6)


                                                                                          (图5)


(图6)

6、

6、如果下载的是1.0以上版本则支持ping测试,访问:http:// localhost/DotNet/proxy.ashx?ping时,会看到:

{ "ProxyVersion":"1.1.0", "Configuration File":"OK", "LogFile": "OK"},然后再访问:http://192.16.16.146:8010/DotNet/proxy.ashx?http://192.16.16.146:8010/ArcGISServer/rest/services/?f=pjson,如果看到指定ArcgisServer目录下的json数据,如 {"currentVersion":10.21,"folders":["Utilities","XKMSLFH"],"services":[{"name":"DOM2013","type":"ImageServer"}]},则到目前为止,代理配置成功!若是1.0以下版本,则不支持ping测试,直接访问:http://192.16.16.146:8010/DotNet/proxy.ashx?http://192.16.16.146:8010/ArcGISServer/rest/services/?f=pjson如果看到指定ArcgisServer目录下的json数据 {"currentVersion":10.21,"folders":["Utilities","XKMSLFH"],"services"[{"name":"DOM2013","type":"ImageServer"}]}(图7),则代理配置成功!


(图7)

7、

最后在代码里加入下面两行即可(图8):

esri.config.defaults.io.proxyUrl="http:// localhost/DotNet/proxy.ashx ";

esri.config.defaults.io.alwaysUseProxy=false;



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值