ArcGIS JavaScript API 本地部署的奇怪问题

根据安装的说明,我替换了以下4个文件中的[HOSTNAME_AND_PATH_TO_JSAPI],替换为我的地址
\library\3.18\3.18\init.js 
\library\3.18\3.18\dojo\dojo.js
中的替换为:
gis.cuog.cn/api/library/3.18/3.18/
\library\3.18\3.18compact\init.js
\library\3.18\3.18compact\dojo\dojo.js
中的替换为:
gis.cuog.cn/api/library/3.18/3.18compact/

(根据我的理解,如果上述地址是用IP,非默认端口的话,则替换格式为:IP:端口/api/library/3.18/3.18compact/,不知道我理解是否正确。)
测试页面正常。
http://gis.cuog.cn/samples/search_multiplesources/ 
引用本地配置的js正常显示
<link rel="stylesheet" href="http://gis.cuog.cn/api/library ... gt%3B
<link rel="stylesheet" type="text/css" href="http://gis.cuog.cn/api/library ... ot%3B />
<script type="text/javascript" src="http://gis.cuog.cn/api/library ... gt%3B 

1.png




Create Map and add a dynamic layer 这个例子,将css替换为本地的,js用远程的,可以正常显示。
http://gis.cuog.cn/map1.html 

2.png


相同的例子,CSS继续用本地,js用本地,却无法显示。
http://gis.cuog.cn/map2.html 

3.png



simple map这个例子,全部替换为本地部署,正常显示
http://gis.cuog.cn/map3.html 

4.png



本地配置的API既然在search_multiplesources以及simple map地图中可以正常显示,说明本地配置是没有问题的,为什么在http://gis.cuog.cn/map2.html中却无法正常显示呢?map2中将init.js替换为官方的才可以。
已邀请:

goldenlimit - Major in MIS and minor in GIS, graduated from University of Alabama. GIS is not a simply tool but a way of exploring the unknow

赞同来自: binghuan123 cugbboy

你call function 的順序不match, dojo的class的順序要對應,你的sample裡面吧domReady放在了
ArcGISDynamicMapServiceLayer之前,但是你function的order不是這樣的

"esri/map",
"esri/layers/ArcGISDynamicMapServiceLayer",
"esri/layers/ImageParameters",
"dojo/domReady!"
], function (
Map, ArcGISDynamicMapServiceLayer, ImageParameters) {


你點卡這個sample看看就明白了https://jsfiddle.net/goldenlimit/nbr5o5t0/

徐晨光 - 70后IT男,网名:君子8818

赞同来自: YuHui

ArcGIS API for JavaScript本地化(离线部署)终极解决方案,3.14-4.2均有效。
思路决定出路:
网上盛传的解决方案大多将api形而上学地修改HOSTNAME_AND_PATH_TO_JSAPI后,部署到tomcat或IIS服务中,工程中用绝对路径引用。这种方案太Low了,入门玩玩可以,根本没有考虑内外网访问的路径差异,若统一用外网IP访问,内网用户遇到没有回流功能的路由(某科路由基本都没有回流功能,需要人工加策略来实现)就惨了。另外还要考虑跨越问题。
那么,更好的方案就是将api集成到工程中,使用相对路径调用即可。(作者PS:本篇就这么一句话重要,其它的都是废话,高手不必向下看了。)
操作步骤:
1、下载(废话)并解压API,将arcgis_js_v42_api\arcgis_js_api\library\4.2\4.2以下的所有文件夹和文件复制。
2、打开你的工程的电子地图应用网页(xxx.html)所在的文件夹,新建arcgis_js文件夹并进入,粘贴刚才复制的内容。
3、打开init.js和dojo\dojo.js,查找'//' + "[HOSTNAME_AND_PATH_TO_JSAPI]dojo"替换为"arcgis_js/dojo"
并将这句话之前最近的location.protocol改为''
声明:本文版权木有,欢迎转载。作者:君子8818

gishome - GIS之家,我们的团队,具备丰富的webgis项目开发经验以及开源GIS项目经验(openlayer+geoserver、三维开源GIS cesium.js);GIS之家知乎专栏:https://zhuanlan.zhihu.com/gishome

赞同来自:

        map = new Map("mapDiv", {
          //sliderOrientation : "horizontal"
        });
        注释掉,用默认就行了,你构造Map对象时候

cugbboy

赞同来自:

服务器:http://gis.cuog.cn/map2.html
本地:
同一个html页面,不做任何改动,在服务器上无法显示地图,在本地电脑可以显示。何故?
这就是上述问题原因所在。
 
 

qiuzan

赞同来自:

用arcgisonline服务器的地图能显示,用自己服务器的地图不能显示,何故?可否交流交流?

要回复问题请先登录注册