ArcGIS API for JavaScript 4.X本地部署教程

10
分享 2017-11-13
好吧,鉴于有好多人在问为什么4.X的API部署之后不能用或者报各种问题。在这里就总结一下部署的步骤以及可能会遇到的各种问题。
正文开始之前,先贴一下ArcGIS API for JavaScript如何进行下载的文章地址:https://zhihu.geoscene.cn/article/3057 。毕竟还没下载下来,你部署个锤锤。
先割一下,正文开始
Installing the ArcGIS API for JavaScript library on Windows
这篇文章是以你在Internet Information Services (IIS)下部署ArcGIS API for JavaScript为例进行说明,如果您不是在IIS下进行部署,那此文章仅供参考。当然如果您喜欢阅读英文的原文,可以直接查看下载后的API包中“\arcgis_js_api\library\downloads\install-windows\index.html”,双击这个html文件就可以打开了,如果您部署到非Windows系统中,那你查看“\arcgis_js_api\library\downloads\install-linux\index.html”
Install the Build
1.复制你下载之后的文件“\arcgis_js_api\library”到IIS的web server地址。复制完成之后的地址类似于“C:\Inetpub\wwwroot\arcgis_js_api\library”这个地址很重要!很重要!很重要!如果跟你的地址不一样,那你在后边的配置中也需要做相应的修改
2.打开“C:\Inetpub\wwwroot\arcgis_js_api\library\4.5\dojo\dojo.js”文件,然后搜索[HOSTNAME_AND_PATH_TO_JSAPI]并替换成你的网络路径“www.example.com/arcgis_js_api/library/4.5/”(根据你自己的路径去灵活修改!!!),在这里你需要注意,在4.X的API中默认使用的是htps协议。关于为什么使用https协议你可以参考这两篇文章:(注:需要科学上网)
#Google: Why HTTPS Matters
#Google: Secure your site with HTTPS
当然如果你看完了这两篇文章或者我就不看我就要用http协议,好吧你任性!凸,那你除了要替换[HOSTNAME_AND_PATH_TO_JSAPI]之外还要把[HOSTNAME_AND_PATH_TO_JSAPI]前面的"https://"改成“http://”。
Test the Install
好了修改就是这么简单,下面就是测试了。你可以在浏览器中直接访问https://www.example.com/arcgis_js_api/library/4.5/dojo/dojo.js,如果可以看到代码,那恭喜你上边的修改是正确的。您也可以直接测试以下的代码:https://github.com/ly2013203742/Test-The-Install/blob/master/test.html。可以正常访问,那你的本地部署就成功了。先开心两分钟吧,当然在这个测试代码中你会看到用来访问ArcGIS JavaScript library的链接是"https://www.example.com/arcgis_js_api/library/4.5/dojo/dojo.js"而不是平常我们熟悉的“https://www.example.com/arcgis_js_api/library/4.5/init.js”,这是因为我们上边修改的就是dojo.js文件而不是init.js文件,如果我们仍想用我们比较熟悉的init.js的链接,那在Install the Build的步骤中我们就直接来修改init.js文件就可以了。
Question
question1:放大、缩小按钮不能正常显示 https://zhihu.geoscene.cn/question/14522
answer:在IIS中对于HTTP响应标头添加以下内容
Access-Control-Allow-Credentials:true
Access-Control-Allow-Headers:origin,x-requested-with,content-type
Access-Control-Allow-Methods:POST,GET,OPTIONS
Access-Control-Allow-Origin:*
完成之后的效果如下图



question2:在访问3D的页面时,报关于stars.wsv的错误 https://zhihu.geoscene.cn/question/14596
answer:在IIS的MIME Type中添加.wsv type


question3:就这些吧以后再加
answer:好哒
文章来源:http://www.jianshu.com/p/7f186bcbd217

19 个评论

遇到放大缩小按钮不能整除显示的问题,按照文章所述在iis在加了那些东西,还是出不来图片。
有报错么,你最好按照步骤一步步操作,这个我测试过很多遍没有问题了。
有报错呀,如下:Access to Font at 'http://localhost/arcgis_js_v45_api/arcgis_js_v45_api/arcgis_js_api/library/4.5/esri/themes/base/icons/fonts/CalciteWebCoreIcons.ttf?cu4poq' from origin 'http://localhost:6964' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:6964' is therefore not allowed access.
MyFrist4X.html:1 Access to Font at 'http://localhost/arcgis_js_v45_api/arcgis_js_v45_api/arcgis_js_api/library/4.5/esri/themes/base/icons/fonts/CalciteWebCoreIcons.woff?cu4poq' from origin 'http://localhost:6964' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:6964' is therefore not allowed access. The response had HTTP status code 404.
按照文章的步骤一步步操作了(api版本是4.5,采用http协议),dojo.js和init.js都可以正常访问。测试的时候依然报错:dojo_zh-cn.js Failed to load resource: net::ERR_NAME_NOT_RESOLVED。
https://www.example.com/arcgis_js_api/library/4.5/dojo/dojo.js
输入这个后,看不到代码啊!出现的是example domain。。。
怎么解决啊?
www.Example.com的意思是改为你自己的主机名。不是用示例主机名,Example的意思是“示例”
http://www.cnblogs.com/tracine0513/p/8779437.html。这个可以
我能访问http://localhost/arcgis_js_api/library/4.5/dojo/dojo.js,但是例子用不起来,打开浏览器什么也显示不出来。其中,layer用的是在线"http://server.arcgisonline.com/ArcGIS/rest/services/NGS_Topo_US_2D/MapServer"
dojo_zh-cn.js和MapView.js报404,

Request URL: http://localhost/arcgis_js/api/library/4.3/4.3/esri/views/MapView.js
Request Method: GET
Status Code: 404 Not Found
Remote Address: [::1]:80
Referrer Policy: no-referrer-when-downgrade


Request URL: http://localhost/arcgis_js/api/library/4.3/4.3/dojo/nls/dojo_zh-cn.js
Request Method: GET
Status Code: 404 Not Found
Remote Address: [::1]:80
Referrer Policy: no-referrer-when-downgrade
你的到底是4.3还是4.5.。。你可以直接从iis找到mapview.js文件,从内容视图然后直接右键浏览看一下地址。
http://server.arcgisonline.com/arcgis/rest/services/NGS_Topo_US_2D/MapServer,服务地址是这个吧
Uncaught ReferenceError: require is not defined这个错误是为什么呢?我本地部署了API之后,按照网上的方法可以打开dojo.js,不是说明已经配置成功了,可是还是报这个错,如果我在html代码种引用dojo.js,报的错更多
补充一下相对路径的部署方式吧?
同样, 请问解决了吗
为什么我也是不行
为什么我所有显示都是正常,会报错这个啊
MapView.js:708 GET http://localhost/4.9/esri/themes/base/fonts/avenir-next/Avenir_Next_W00_400.woff2 net::ERR_ABORTED 404 (Not Found)
GET http://localhost/4.9/esri/themes/base/fonts/avenir-next/Avenir_Next_W00_400.woff net::ERR_ABORTED 404 (Not Found)
需要添加什么name类型吗
最新的4.22版本文件夹里面没有dojo.js文件
老师您好,我用iis部署的3.3版本api,部署以后测试加载2d地图一直显示空白,我又下了您教程中的4.14,可以正常显示,想请教您一下这是为什么?

要回复文章请先登录注册