ArcGIS Server for JavaScript api 离线部署已经很简单了只需要改一个或者两个文件为什么是或者后面就知道了,但是每部署一次就要修改很麻烦。
为了达到减少修改次数的目的,我们稍作下修改
首先下载离线API下载地址 http://support.esrichina.com.cn/... cgis_js_v33_api.zip
解压后 arcgis_js_v33_api\library\3.3 会有两个文件夹 jsapi和jsapicompact
我们以 jsapi为例,
一、在此目录下新建一个js文件Global.js
其内容为
/**
* host_server_ip: jsapi部署服务器的IP地址
* host_server_port: jsapi部署服务器的端口
* relative_path: jsapi部署服务器的相对路径
*/
var arcgis_jsapi_config={
host_server_ip:"192.168.1.102",
host_server_port:"80",
relative_path:"jsapi"
};
这样下次我们在部署时只需要修改Global.js即可
二、找到init.js和js\dojo\dojo下面的dojo.js
找到[HOSTNAME_AND_PATH_TO_JSAPI], 将"[HOSTNAME_AND_PATH_TO_JSAPI]js/dojo/dojo"替换为arcgis_jsapi_config.host_server_ip+":"+arcgis_jsapi_config.host_server_port+"/"+arcgis_jsapi_config.relative_path+"/js/dojo/dojo"
注意包括双引号
三、为了达到快速加载js文件的目的,我们可以通过jsapi下的几个页面,Default.ashx,index.jsp,index.php,加载js文件。所以也要对他们进行修改。很简单只要在相应的页面中增加Global.js即可
例如:Default.ashx 中在context.Response.WriteFile(context.Server.MapPath("js\\dojo\\dojo\\dojo.js"));前
增加context.Response.WriteFile(context.Server.MapPath("Global.js"));
四、在iis中部署 即设置虚拟目录即可 ,虚拟目录为jsapi
在页面中引用有两种方法
1)通过<scripttype="text/javascript"src="http://192.168.1.102/jsapi/Default.ashx"></script> 一句代码即可
或者
2)
<scripttype="text/javascript"src="http://192.168.1.102/jsapi/Global.js"></script>
<scripttype="text/javascript" src="http://192.168.1.102/jsapi/init.js"></script>
测试一下 看看
代码如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTDHTML 4.01//EN" " http://www.w3.org/TR/html4/strict.dtd ">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Simple Map</title>
<link rel="stylesheet" type="text/css" href="http://192.168.1.102/jsapi/js/dojo/dijit/themes/claro/claro.css">
<link rel="stylesheet" href="http://192.168.1.102/jsapi/js/esri/css/esri.css">
<scripttype="text/javascript" src="http://192.168.1.102/jsapi/Default.ashx"></script>
<scripttype="text/javascript">
dojo.require("esri.map");
function init() {
var myMap =new esri.Map("mapDiv");
var myTiledMapServiceLayer =newesri.layers.ArcGISTiledMapServiceLayer("http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/TaxParcel/AssessorsBasemap/MapServer");
myMap.addLayer(myTiledMapServiceLayer);
}
dojo.addOnLoad(init);
</script>
</head>
<body class="claro">
<div id="mapDiv" style="width:900px;height:600px; border:1px solid #000;"></div>
</body>
</html>
下面是我修改好的jsapi 下载地址
http://pan.baidu.com/share/link?shareid=364482&uk=3608003693
部署二
部署ArcGIS JS API 离线包(Tomcat与IIS)
ArcGIS Javascript API 在国内访问一直非常缓慢,Ersi也没有部署国内CDN的意思,但是它提供了离线安装包。安装过程其实挺简单的,就是有些繁琐, Tomcat的部署不太清晰。主要为了记录一下,便于以后查阅。
1.下载离线包
首先下载ArcGIS JS API 离线包需要注册一个免费的帐号,注册地址为:https://webaccounts.esri.com/cas/index.cfm 。然后进入ESRI官网下载页面选择下载,版本: v2.7, v3.0, v3.2 .如果访问缓慢的话,可以从微盘下载:v2.7, v3.0, v3.2 .
2.安装离线包
- 解压下载的压缩包,将里面的 \
arcgis_js_api\library
目录的所有内容全部拷贝到你的web 服务器中。比如的以下路径例子所示,- Tomcat: \home\vent\tomcat7\webapps\arcgis_js_api\library
- IIS: C:\Inetpub\wwwroot\arcgis_js_api\library
- 将以下文件在文本编辑器(如Notepad++,Vim)中打开:
- Tomcat: \home\vent\tomcat7\webapps\arcgis_js_api\library\2.7\jsapi\js\esri\esri.js
- IIS:
C:\Inetpub\wwwroot\arcgis_js_api\library\2.7\jsapi\js\esri\esri.js
- 搜索
esri.js
文件中的'[HOSTNAME_AND_PATH_TO_JSAPI]'
, 用以下URI代替之。- Tomcat: <myserver>:8080/arcgis_js_api/library/2.7/jsapi/
- IIS: <myserver>/arcgis_js_api/library/2.7/jsapi/
myserver是你的网站访问URI,本地可以用localhost/127.0.0.1来代替.
- 将以下文件在文本编辑器(如Notepad++,Vim)中打开:
- Tomcat: \home\vent\tomcat7\webapps\arcgis_js_api\library\2.7\jsapi\dojo\dojo\dojo.xd.js
- IIS:
C:\Inetpub\wwwroot\arcgis_js_api\library\2.7\jsapi\js\dojo\dojo\dojo.xd.js
- 搜索dojo.xd.js文件中的三个 '[HOSTNAME_AND_PATH_TO_JSAPI]' ,用以下URI代替之。
- Tomcat: <myserver>:8080/arcgis_js_api/library/2.7/jsapi/
- IIS: <myserver>/arcgis_js_api/library/2.7/jsapi/
- 将以下文件在文本编辑器(如Notepad++,Vim)中打开:
- Tomcat: \home\vent\tomcat7\webapps\arcgis_js_api\library\2.7\jsapi\dojo\dojo\dojo.xd.js.uncompressed.js
- IIS:
C:\Inetpub\wwwroot\arcgis_js_api\library\2.7\jsapi\js\dojo\dojo\dojo.xd.js.uncompressed.js
- 搜索dojo.xd.js文件中的三个 '[HOSTNAME_AND_PATH_TO_JSAPI]' ,用以下URI代替之。
- Tomcat: <myserver>:8080/arcgis_js_api/library/2.7/jsapi/
- IIS: <myserver>/arcgis_js_api/library/2.7/jsapi/
- (可选) 如果你在项目中使用到压缩版的ArcGIS JS API,需要在arcgis_js_api\library\2.7\jsapicompact重复4-7的步骤。
- 将这个文件夹部署到Web服务器上。由于ArcGIS JavaScript APIs将多个 JavaScript 文件通过单一的URL流式地提供给客户端,所以它需要默认的处理器来模拟、控制JS文件流. ESRI提供了三种方式,在\library\2.7\jsapi\文件夹下,包括index.jsp, index.php,Default.ashx .配置如下,Tomcat配置过程:
- 打开 \home\vent\tomcat7\webapps\arcgis_js_api\library\2.7\jsapi\init.js
- 搜索init.js文件中的
'[HOSTNAME_AND_PATH_TO_JSAPI]'
, 用<myserver>:8080/arcgis_js_api/library/2.7/jsapi/代替之 - 在页面调用的时候使用方法:
<script type="text/javascript" src="http://<myserver>:8080/arcgis_js_api/library/2.7/jsapi/init.js"></script>
IIS配置过程:
- 打开IIS 管理器.
- 打开包含Default.ashx 文件的文件夹 (C:\Inetpub\wwwroot\arcgis_js_api\library\2.7\jsapi).
- 右键点击属性,选择文件Tab。确定启用默认内容页被勾选 。
- 点击添加到按钮 .输入 "Default.ashx,点击确认并退出。
3.测试
测试代码如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Simple Map</title>
<link rel="stylesheet" type="text/css" href="http://<myserver>:8080/arcgis_js_api/library/2.7/jsapi/js/dojo/dijit/themes/tundra/tundra.css">
<link rel="stylesheet" type="text/css" href="http://<myserver>:8080/arcgis_js_api/library/2.7/jsapi/js/esri/css/esri.css" />
<script type="text/javascript" src="http://<myserver>:8080/arcgis_js_api/library/2.7/jsapi/init.js"></script>
<script type="text/javascript">
dojo.require("esri.map");
function init() {
var myMap = new esri.Map("mapDiv");
//note that if you do not have public Internet access then you will need to point this url to your own locally accesible cached service.
var myTiledMapServiceLayer = new esri.layers.ArcGISTiledMapServiceLayer("http://cache1.arcgisonline.cn/ArcGIS/rest/services/ChinaOnlineCommunity/MapServer");
myMap.addLayer(myTiledMapServiceLayer);
}
dojo.addOnLoad(init);
</script>
</head>
<body class="tundra">
<div id="mapDiv" style="width:900px; height:600px; border:1px solid #000;"></div>
</body>
</html>