Arcgis API for js 本地部署
本篇文章介紹如何將ArcGIS API for JavaScript 4.10下載並部署到IIS上
下載ArcgisAPI for JavaScript 4.10
首先開啟網址:https://developers.arcgis.com/javascript/
將這兩個檔案都解壓到桌面,至此下載工作就完成了
部署ArcgisAPI for JavaScript 4.10
第一步:開啟IIS服務
控制面板---程式---啟用或關閉Windows功能,然後按下圖進行操作
過了幾分鐘後,會提示IIS服務已經啟動,這時候C盤會出現一個名為inetpub的資料夾,這個資料夾很重要。
將解壓好的arcgis_js_v410_sdk資料夾(在桌面)複製貼上到inetpub資料夾下的wwwroot資料夾下,如下圖:
接下來,桌面上應該還有一個arcgis_js_v410_api的資料夾,按下圖操作,找到library資料夾
開啟兩個檔案一個是init.js,另一個是dojo.js,兩個檔案的位置如下圖所示。作者使用VS2017開啟這兩個檔案
第一步:Ctrl+F組合鍵查詢[HOSTNAME_AND_PATH_TO_JSAPI],並替換為 localhost/arcgis_js_v410_sdk/arcgis_js_api/library/4.10
第二步:將https:// 換成 http://
對上述兩個檔案執行相同的操作
第一次修改檔案的時候,後面的dojo距離前面有空格,所以除錯一直出錯,大家注意一下。引號裡面不應該出現空格。
原則上來說,如果沒有操作失誤,部署工作就也完成啦。接下來就要檢驗一下是否部署成功啦。
測試部署是否成功
在空白網址中輸入:http://localhost/arcgis_js_v410_sdk/arcgis_js_api/library/4.10/init.js
如果能讀取檔案則成功,如下圖
下面開啟一個地圖,使用部署在本機的檔案,看看能否正確開啟
上面紅色框括起來的是新的引用,引用在本地(localhost)部署的檔案。
下面紅色框括起來的是舊的引用,引用在arcgis官網上部署的檔案。
作者第一次操作的時候出現了一個問題:
對於原引用<script src="https://js.arcgis.com/4.10/"></script>,作者以為是一個空的資料夾因此轉換成新的引用就變成了<script src="http://localhost/arcgis_js_v410_sdk/arcgis_js_api/library/4.10/"></script>
少了後面的dojo/dojo.js。
實際上,在vs中,按住ctrl鍵再點選原引用,會出現如下圖所示的介面,因此引用的是dojo/dojo.js這個檔案。因此應該是<script src="http://localhost/arcgis_js_v410_sdk/arcgis_js_api/library/4.10/dojo/dojo.js"></script>
最後,如果地圖成功顯示,則部署成功~
最後地圖程式碼:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no"> <title>Intro to MapView - Create a 2D map - 4.10</title> <style> html, body, #viewDiv { padding: 0; margin: 0; height: 100%; width: 100%; } </style> <link rel="stylesheet" href="http://localhost/arcgis_js_v410_sdk/arcgis_js_api/library/4.10/esri/css/main.css"> <script src="http://localhost/arcgis_js_v410_sdk/arcgis_js_api/library/4.10/dojo/dojo.js"></script> <!--<link rel="stylesheet" href="https://js.arcgis.com/4.10/esri/css/main.css"> <script src="https://js.arcgis.com/4.10/"></script>--> <script> require([ "esri/Map", "esri/views/MapView" ], function (Map, MapView) { var map = new Map({ basemap: "streets" }); var view = new MapView({ container: "viewDiv", map: map, zoom: 4, center: [15, 65] // longitude, latitude }); }); </script> </head> <body> <div id="viewDiv"></div> </body> </html>