ArcGIS API for JavaScript 學習筆記 (一) --第一個WebGIS應用程序


簡單介紹:

  開發環境是Visual Studio 2012,因為它為所有的.aspx文件、.htm文件以及外部的.js文件提供了IntelliSense(智能提示),相當於其他軟件的代碼自動補全功能,非常方便。接下來是我的第一個Javascript API 應用程序。ESRI在其arcgis online中提供了在線的ArcGIS API for JavaScript,在web應用中直接引用即可,無需下載安裝;當然也可以下載API,然后部署到自己的web服務器,在這里我使用在線的api。

  1. 打開vs2012新建一個空web應用程序,然后添加一個html,起名為First.html;然后在<head>部分增加引用ESRI提供的樣式表.(主要用於esri提供的小部件與 組件,例如地圖、信息框等)。此外需要引用Dojo提供的樣式表,主要有四中,現在只學習常用的兩種,如下:

<link rel="stylesheet" href="http://js.arcgis.com/3.9/js/esri/css/esri.css" />   
<link rel="stylesheet" href="http://js.arcgis.com/3.9/js/dojo/dijit/themes/tundra/tundra.css" />
<link rel="stylesheet" href="http://js.arcgis.com/3.9/js/dojo/dijit/themes/claro/claro.css" />

     (dojo后面我會接着學習,現在只能邊做邊學了。)

 ArcGIS API For javascript離線包 下載可以戳這里 http://xiaobaigis.com/GiSarticles/GiSArticle?ID=68

  2. 然后在<head>標簽中增加一個<script>標簽,在此標簽中引用API

<script src="http://js.arcgis.com/3.9/">

   3. 在<body>區域增加一個<div>元素,用於顯示地圖

<body class="tundra" >
      <div id="mapDiv"></div>
</body>                                將class屬性設置為tundra后,body將自動引用dojo提供的樣式

   4. 在<head>標簽部分,加入如下代碼,加載地圖模塊.

<script type="text/javascript">
        require(["esri/map", "esri/layers/ArcGISTiledMapServiceLayer","dojo/domReady!"], function (Map, ArcGISTiledMapServiceLayer) { });
</script>
//對上述代碼做一解釋

arcgis API for javascript 包含了許多資源,即地圖模塊,這些地圖模塊是按用途組織的,例如
esri/map用於地圖,幾何對象,圖形與符號;
esri/tasks/locator 用於地理編碼等等,后面我會學習更多的地圖模塊。
要想使用這些資源,需要先調用Dojo提供的全局require函數。require函數包括兩個參數,第一個是依賴項,第二個參數是一個回調函數,第一個參數又包括兩類,一類是真正的依賴項,另一類是插件。

所以上述代碼中
["esri/map", "esri/layers/ArcGISTiledMapServiceLayer","dojo/domReady!"]是第一個參數,前兩項為真正的依賴項地圖模塊,最后是插件(帶有!號);
回調函數中的參數依次是require函數的第一個參數指定的依賴類別名如:Map,ArcGISTiledMapServiceLayer) { }

我的通俗理解加載地圖模塊就相當於c#當中的命名空間一般,只有加入命名空間,才可以使用esri/map中的類的屬性方法。

 

   5.  初始化地圖以及在地圖中加入內容,在require函數指定的回調函數中加入如下代碼:

// 以下是創建地圖與加入底圖的代碼
           
            var map = new Map("mapDiv");
            var agoServiceURL = "http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_World_2D/MapServer";
            var agoLayer = new ArcGISTiledMapServiceLayer(agoServiceURL, { displayLevels: [0, 1, 2, 3, 4, 5,6,7] });
            map.addLayer(agoLayer);

//  第一行使用Map類來創建一個新的地圖。第二行指定了一個地圖服務的URL,第三行通過URL創建一個切片圖層,第四行將切片圖層加入地圖。

   6.所有代碼如下:

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4     <meta  charset="utf-8" />
 5     <title>第一個JavaScript API應用</title>
 6     <link rel="stylesheet" href="http://js.arcgis.com/3.9/js/esri/css/esri.css" />
 7     <style type="text/css">
 8         html, body, #mapDiv {
 9             padding: 0;
10             margin: 0;
11             height: 100%;
12         }
13     </style>
14     <script type="text/javascript" src="http://js.arcgis.com/3.9/">  
15     </script>
16     <script type="text/javascript">
17         require(["esri/map", "esri/layers/ArcGISTiledMapServiceLayer", "dojo/domReady!"], function (Map, ArcGISTiledMapServiceLayer) {
18         // 以下是創建地圖與加入底圖的代碼
19         var map = new Map("mapDiv");
20         var agoServiceURL = "http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_World_2D/MapServer";
21         var agoLayer = new ArcGISTiledMapServiceLayer(agoServiceURL, { displayLevels: [0, 1, 2, 3, 4, 5,6,7] });
22         map.addLayer(agoLayer);    
23         });
24     </script>
25 </head>
26 <body class="tundra" >
27         <div id="mapDiv"></div>
28 </body>
29 </html>
View Code

   7.運行結果

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM