ArcGIS API for Javascript最方便的部署方式(懒人部署方式)

来源:互联网 发布:在淘宝店上怎样上图 编辑:程序博客网 时间:2024/06/06 03:19

关于ArcGIS API for Javascript 的部署,网上有很多资料,官方也有。很简单

第1步、下载ArcGIS APIfor Javascript,好像现在官网的下载不了。网上很多资源,可以去下载。

   这里我下载的是3.17

   说明:最好下载稍新一点的,以适应当前新的浏览器。(例3.5对ie11不兼容,鼠标滚轮放大缩小失控。)

第2步、以IIS为例,将下载下来的api放到想要的路径中。注意下载下来的api可以路径很深,可以只取api有用的文件夹。

  

     IIS路径:

  

第3步:打开3.17下的install_win.html页面(以windows为例)。查看js文件路径配置说明。




   官方的说明中都说的很清楚了,就是修改4个js文件中的路径。

   问题:依官方的说法,我们只是给api固定1个访问路径。如果访问路径有变化,域名更替什么的。你只能乖乖再改一次路径。或者需要同时兼容内外网不同路径访问时。这现起来比较困难,可能需要部署两个api。再是api部署服务器迁移时,每次都要去改这4个路径。很麻烦。

(最新有个项目,一会部署到这个服务器、一会部署到另一个服务器;客户服务器为政务网,而具需要内外网两种模式兼容,内外网完全隔离的;按原方法部署可能要部署两个)

   解决:这里有个方法可以实现一次性解决所有以上问题。

         首先我们在这4个js文件的前面都加上以下代码:

       (代码摘自: https://github.com/fsjohnhuang/getCurrAbsPath/blob/master/lib/getCurrAbsPath.js )

(function(exports) {
    var doc = exports.document,
  a = {},
  expose = +new Date(),
  rExtractUri = /((?:http|https|file):\/\/.*?\/[^:]+)(?::\d+)?:\d+/,
  isLtIE8 = ('' + doc.querySelector).indexOf('[native code]') === -1;
    exports.getCurrAbsPath = function() {
        // FF,Chrome
        if (doc.currentScript) {
            returndoc.currentScript.src;
        }

        var stack;
        try {
            a.b();
        }
        catch (e) {
            stack =e.fileName || e.sourceURL || e.stack || e.stacktrace;
        }
        // IE10
        if (stack) {
            var absPath= rExtractUri.exec(stack)[1];
            if (absPath){
               return absPath;
            }
        }

        // IE5-9
        for (var scripts = doc.scripts,
   i = scripts.length - 1,
   script; script = scripts[i--]; ) {
            if(script.className !== expose && script.readyState === 'interactive') {
               script.className = expose;
               // if less than ie 8, must get abs path by getAttribute(src, 4)
               return isLtIE8 ? script.getAttribute('src', 4) : script.src;
            }
        }
    }();
} (window));

        例:

 

         然后我们把官方的baseUrl改进一下:

         原:baseUrl:(location.protocol ==='file:' ? 'http:' : location.protocol) + '//' +"localhost/3.17/3.17/dojo"

         改:baseUrl:getCurrAbsPath.replace("/"+getCurrAbsPath.split("/").pop(),"") + "/dojo"

         大功造成。

   注:getCurrAbsPath为得到当前js的引用路径。

      getCurrAbsPath.replace("/"+getCurrAbsPath.split("/").pop(),"")后面要按的路径需要根据当前js文件路径修改。

 

SDK:SDK可以直接放api要目录下方便查看。

下载的SDK: 


IIS:

 

附:ArcGIS_JS_Api3.17免配置包(含SDK):

链接:http://pan.baidu.com/s/1slbdEmL

密码:6fm5




0 0
原创粉丝点击