【前言】javascript
有好些網友問我怎麼使用Server發佈的地圖服務了,其實很是的簡單。css
我在這裏先聲明:不提供Server軟件,須要的請自行使用互聯網搜索資源;html
不闡述Server如何發佈各各類服務,可是我會給出官方的文檔(點我),發佈服務其實各類老教程都不少了。前端
【軟件準備】java
·Windows 64位以上的系統,XP能夠歇菜了,Server是64位原生軟件;//Linux發行版也能夠,能用Server就行編程
·ArcGIS for Server 10.x版本windows
·ArcGIS for Desktop(用於發佈服務)瀏覽器
若是有本身的服務器,能夠在服務器端安裝ArcServer,可是ArcServer對服務器的性能、帶寬和存儲有要求,請自行參考官方文檔。服務器
固然也能夠在本地安裝Server,用本機構建B/S架構。網絡
ArcGIS桌面軟件用於發佈服務,數據本身準備。
一枚瀏覽器,推薦WebKit內核的Chrome、火狐等。
一個能寫Web前端的編輯器,本人使用VSCode.
其中後兩個必須,前三個非必需,只要獲得下文提到的REST URL就能夠進行AJS編程。
好,上課。
話說有一陣子沒寫博客了,忙啊,看學校,複習,各類亂七八糟的事情,AJS的筆記也沒跟上,卡在一個空間查詢的例子上了。
通常安裝好ArcGIS for Server後,進入管理頁面就有一個示例服務:
點擊紫色框框的a標籤,進入這個服務的具體信息的功能頁
找到REST URL,複製下來。
如今使用AJS 4.3來構建一個最基本的SceneView網頁,代碼以下:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no"> <title>FeatureLayer - 4.3</title> <link rel="stylesheet" href="https://js.arcgis.com/4.3/esri/css/main.css"> <script src="https://js.arcgis.com/4.3/"></script> <style> html, body, #viewDiv { padding: 0; margin: 0; height: 100%; width: 100%; } </style> <script> require([ "esri/Map", "esri/views/SceneView", "esri/layers/FeatureLayer", "dojo/domReady!" ], function( Map, SceneView, FeatureLayer ) { var map = new Map({ basemap: "hybrid" }); var view = new SceneView({ container: "viewDiv", map: map, }); var featureLayer = new FeatureLayer({ url: "https://localhost:6443/arcgis/rest/services/SampleWorldCities/MapServer" }); map.add(featureLayer); }); </script> </head> <body> <div id="viewDiv"></div> </body> </html>
其中最關鍵的就是:
var featureLayer = new FeatureLayer({ url:"https://localhost:6443/arcgis/rest/services/SampleWorldCities/MapServer" });
url就是剛剛複製下來的REST URL,REST URL的構成大概是
「https://IP地址:端口/用戶信息(用戶羣組、用戶名等)/rest/services/服務名稱/服務類型/子項」
或者
「https://域名/後面相同」
運行起來就是:
請注意,直接複製個人的代碼是不能跑出來這個效果的,請使用能用的REST URL,AJS 4.X的示例代碼中有一些例子的URL能夠測試,請自行查找。
那麼怎麼知道哪些服務對應哪些AJS 類呢?
在Layer中,官方展現頁面以下:
我直接列出一些經常使用的好了:
問題來了,除了MapServer、FeatureServer等服務,還有NAServer不少,哪裏能用上呢?
AJS能用上的服務有限,Server自己並不僅是單獨針對AJS使用的。
在AJS的網絡分析示例中,就可使用NAServer:
var routeTask = new RouteTask({ url: "https://route.arcgis.com/arcgis/rest/services/World/Route/NAServer/Route_World" });
還有不少服務能在AJS的例子中找到,因爲AJS的筆記還沒寫完,我往後發現一個就更新一個。
routeTask類的url可使用NAServer;發佈網絡分析服務能夠查看這裏:點我
相關網絡分析服務見這裏:點我
QueryTask的url可使用MapServer、FeatureServer
FindTask可使用MapServer實例化。
IdentifyTask可使用MapServer實例化。
Geoprocessor可使用GPServer實例化,能夠根據子項進行不一樣的分析。在AJS的例子中,使用了可視域分析和熱力圖分析,GPServer(地理處理服務)的不一樣子項而已。
關於GPServer的發佈與使用,能夠查看Server的幫助文檔:點我
其實就是ArcMap的各類處理。
點雲圖層能夠爲其url屬性賦一個SceneServer的URL來實例化。
使用NAServer。
使用GeometryServer;如
var geoSer = new GeometryService({url:"https://sampleserver6.arcgisonline.com/arcgis/rest/services/Utilities/Geometry/GeometryServer"});
使用GeocodeServer(地理編碼服務)。
如:
var locator = new Locator({url:"http://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer"});
使用NAServer。(疑似)
疑似爲MapServer,與IdentifyTask相似。