Arcgis api for JavaScript 跨域配置(在线编辑问题)

Arcgis api for JavaScript 跨域配置(在线编辑问题)

 

关于发布Feature Sever的详细步骤可以查看下面的链接:

http://blog.csdn.net/lrspace/article/details/41704431

http://blog.csdn.net/lrspace/article/details/41730707

 

在线编辑的样例可以使用:

https://developers.arcgis.com/en/javascript/jssamples/ed_default_editingwidget.html

 

样例中使用的而是Editor工具,非常的全面,既包含图形编辑又有属性编辑(更改的时候自动进行保存),但是使用的时候一定要注意,跨域代理的问题,不设置这个,数据更改是没办法保存的。

 

再说三遍,代理真的很重要,代理真的很重要,代理真的很重要。Arcgis APi提供了关于代理的说明:https://developers.arcgis.com/en/javascript/jshelp/ags_proxy.html。里面提供了代理代码的下载:https://github.com/Esri/resource-proxy/releases

 

(本人所使用的arcgis server是10.1和10.2版本)解压后的文件如下:

 

分为.net版本,java版本,php版本,这里我们以.net为示例。

打开DotNet文件夹:

 

打开README.md,这里是部署的文档,明确说明了怎样部署代理文件,我将主要步骤罗列下来:

一、打开proxy.config:

<?xml version="1.0"encoding="utf-8" ?>

<ProxyConfigallowedReferers="*"

            mustMatch="true">

   <serverUrls>

       <serverUrl url="http://services.arcgisonline.com"

                   matchAll="true"/>

   </serverUrls>

</ProxyConfig>

 

<!-- Seehttps://github.com/Esri/resource-proxy for more information -->

 

配置文件的服务地址一定是要改的,改成自己的地图服务地址,如:

<serverUrl url="http://192.168.1.109:6080/arcgis/rest/services"

matchAll="true"/>

这里有个很有趣的小问题,我会在结尾说明。

 

保存好后,将整个DotNet文件夹拷贝到C:\inetpub\wwwroot下(确保以及开启了IIS,不然还是别往下看了)。

 

二、打开IIS管理器,右击DotNet,选择转换为应用程序。

 

应用程序池选择.Net 4.0(及以上)

 

至此,部署就告一段落了,接下来进行测试:

三、访问:http:// localhost/DotNet/proxy.ashx?ping,会看到:

 

{ "ProxyVersion":"1.1.0", "Configuration File":"OK", "LogFile": "OK"},然后再访问:http:// localhost/DotNet/proxy.ashx?http://192.168.1.109:6080/arcgis/rest/services/?f=pjson,如果看到指定ArcgisServer目录下的json数据,如

 

{"currentVersion":10.21,"folders":["Utilities","XKMSLFH"],"services":[{"name":"DOM2013","type":"ImageServer"}]},则到目前为止,代理配置成功!

 

这里有一个有趣的问题,当我在配置文件中设置的是:http://localhost:6080/arcgis/rest/services地址时,测试访问则依然使用http://192.168.1.109:6080/arcgis/rest/services,那么在测试时就会遇到403问题,所以这里一定要注意,如果配置的是localhost,那么在前端使用时,服务全部都是loalhost(当然这是服务也在本机的情况),如果使用本机的ip地址,那么所有的服务都应该是ip,服务不在本机时,不会有这种情况。

 

四、Js端在使用的时候,加上下面的代码就行了:

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

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

 

 

微信关注  奔跑的GISer  获取更多资源

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值