Esri提供了在线版本的ArcGIS API For JavaScript,方便开发者调用。但在有些项目中,由于某些原因不能访问外网,因此有必要在局域网中部署一条ArcGIS API For JavaScript。
本篇博客中使用Tomcat来作为Web应用服务器。Java JDK和Tomcat的安装配置可参考我的另外一篇博客,也可在百度上搜索相关的教程。
首先呢,需要从官方网站上下载最新的API(此处以4.10版本为例),然后将其解压,拷贝到tomcat安装目录下的webapp文件夹中,目录结果如下图所示。
在arcgis_js_api\library\4.10文件夹中,分别编辑init.js和dojo\dojo.js文件,将这里两个文件中的[HOSTNAME_AND_PATH_TO_JSAPI]替换为10.10.10.10/arcgis_js_v410_api/arcgis_js_api/library/4.10/,其中10.10.10.10是机器的IP地址,arcgis_js_v410_api/arcgis_js_api/library/4.10/为基于webapp文件夹访问init.js的路径。
在浏览器中输入https://10.10.10.10/arcgis_js_v410_api/arcgis_js_api/library/4.10/dojo/dojo.js ,如果可以访问表示,JS API配置成功。
到了这一步JS API已经在Tomcat中部署好了,如果此时在前端调用,会发现地图的放大或缩小等其他按钮图标不能正常显示,此时我们需要对Tomcat做进一步的跨域处理。
下载Tomcat配置跨域所需的文件(链接:https://pan.baidu.com/s/1uV6MsQH6SUaA8RTC2qOQdQ ,提取码:dedj),然后将加压后的文件夹中的cors-filter-2.5.jar和java-property-utils-1.9.1拷贝到tomcat的lib文件夹内,然后编辑conf文件夹中的web.xml,在250行左右添加如下内容。
<filter>
<filter-name>CORS</filter-name>
<filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>
<init-param>
<param-name>cors.allowOrigin</param-name>
<param-value>*</param-value>
</init-param>
<init-param>
<param-name>cors.supportedMethods</param-name>
<param-value>GET, POST, HEAD, PUT, DELETE</param-value>
</init-param>
<init-param>
<param-name>cors.supportedHeaders</param-name>
<param-value>Accept, Origin, X-Requested-With, Content-Type, Last-Modified</param-value>
</init-param>
<init-param>
<param-name>cors.exposedHeaders</param-name>
<param-value>Set-Cookie</param-value>
</init-param>
<init-param>
<param-name>cors.supportsCredentials</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CORS</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
配置web.xml文件后,重启tomcat服务。然后刷新前端页面,如果能够访问到正常的图标文件,表示ArcGIS API For JavaScript可以正常使用了。