一、說明:
1、本篇文章以及之后的相關的文章所使用的ArcGIS API for javascript 的版本是3.3。初學者為了學習簡單,可以引用在線的 Javascript。但是如果只能連接內網,而假如無法連接互聯網或者網速較慢的情況下,使用本地部署的 Javascript 是一個更佳的選擇,我們在這里要部署到 iis上,電腦怎么安裝IIS在這里不再贅述,不會安裝的自己去問度娘。
2、部署步驟:
(1)、下載ArcGIS API for javascript引用文件
自己可以到官網下載,也可以在下面的百度網盤下載
鏈接:https://pan.baidu.com/s/1HK2VER8xXmGZGirCC6x25Q
提取碼:jl76
(2)、部署到IIS
將下載的文件解壓
用 記 事 本 打 開 : 解 壓 目 錄 \library\3.3\jsapi\init.js 文 件 , 將 文 本 中“[HOSTNAME_AND_PATH_TO_JSAPI]”,用“<myserver>/arcgis_js_api/library/3.3/jsapi/”替換,其中myserver 可以是機器名、IP 等,在這里我用的是 localhost,即將“[HOSTNAME_AND_PATH_TO_JSAPI]”替換為”localhost/arcgis_js_api/library/3.3/jsapi/ “
用 記 事 本 打 開 :解 壓 目 錄 \library\3.3\jsapi\ js\dojo\dojo\dojo.js 文 件 , 將“[HOSTNAME_AND_PATH_TO_JSAPI]”替換為“localhost/arcgis_js_api/library/3.3/jsapi/”。
整個替換過程可以用記事本的查找替換功能,如下圖:
(3)、將修改后的文件連同解壓目錄內的所有文件拷貝到 Web 服務器根目錄,以 IIS 為例,拷貝為wwwroot 目錄下的 arcgis_js_api,最終的目錄結構如下圖:
說明:wwwroot 即為Web 服務器根目錄,位於c盤中,我的wwwroot目錄位於c盤中文件夾下
直接把解壓目錄中arcgis_js_api直接拷貝到wwwroot文件夾中即可
(4)、iis文檔結構
(4)、示例
打開vs2012 新建項目 c# asp.net空web應用程序,並且添加HTML頁面first.html
first.html頁面代碼如下:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>第一個地圖應用</title>
<link rel="stylesheet" type="text/css" href="http://localhost/arcgis_js_api/library/3.3/jsapi/js/dojo/dijit/themes/tundra/tundra.css"/>
<link rel="stylesheet" type="text/css" href="http://localhost/arcgis_js_api/library/3.3/jsapi/js/esri/css/esri.css" />
<script type="text/Javascript" src="http://localhost/arcgis_js_api/library/3.3/jsapi/init.js"></script>
<style type="text/css"> .MapClass { width:900px; height:600px; border:1px solid #000;
}
</style>
<script type="text/Javascript"> dojo.require("esri.map"); dojo.addOnLoad(function () { var MyMap = new esri.Map("MyMapDiv"); var MyTiledMapServiceLayer = new esri.layers.ArcGISTiledMapServiceLayer ("http://localhost/arcgis/rest/services/DZDT2012/MapServer"); MyMap.addLayer(MyTiledMapServiceLayer) } ) </script>
</head>
<body class="tundra">
<div id="MyMapDiv" class="MapClass"></div>
</body>
</html>
運行 visual studio效果如下:
(5)、代碼解釋
<script type="text/Javascript"> dojo.require("esri.map"); dojo.addOnLoad(function () { var MyMap = new esri.Map("MyMapDiv"); var MyTiledMapServiceLayer = new esri.layers.ArcGISTiledMapServiceLayer ("http://localhost/arcgis/rest/services/DZDT2012/MapServer");
MyMap.addLayer(MyTiledMapServiceLayer) } )
</script>
(1)dojo.require("esri.map");
ArcGIS API for Javascript 是基於 dojo 的,dojo 有一個特點就是模塊化,當然 ArcGIS API for Javascript也不例外,因為所用的地圖對象是在 esri.map 當中,所以需要通過 dojo.require("esri.map")引入。其實 Dojo.require 就是加載了 Javascript 文件,功能類似於 script 標簽的作用,該函數完成后,就可以使用不屬於 dojo.js 文件中的代碼。
(2)dojo.addOnLoad
這段腳本是這個應用程序的核心,dojo.addOnLoad 是 dojo 的一個事件,它的作用有點類似window.onload 事件,只不過 window.onload 事件是直到頁面中引用的所有的外部資源都加載后才觸發,這意味着,我們必須等待所有的圖片、對象、CSS 文件下載,如果頁面包很多或外部資源很大或網絡速度很慢,我們要等很長時間,而 dojo.addOnLoad 它在所有的模塊都可用時才觸發,無論你要使用什么包。 在 dojo.addOnLoad 事件中,往往寫的是一個初始化的代碼,如同在 windows.onload 事件中一樣,在這里初始化了一個 Map 和一個 ArcGISTiledMapServiceLayer 對象,並將 ArcGISTiledMapServiceLayer 對象添加到 Map 對象中,這樣地圖上就有了內容,正如我們看到的一樣。