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>
使用Chrome Develop Tool 或者其它JS調試工具查看是否出錯。
本作品由VentLam創作,采用知識共享署名-非商業性使用-相同方式共享 2.5 中國大陸許可協議進行許可。