ArcGIS API for JavaScript 4.3 與ArcGIS Server聯動使用【地圖服務】

【前言】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>
AJS使用本地【地圖服務】

其中最關鍵的就是:

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的筆記還沒寫完,我往後發現一個就更新一個。

Server的各類服務在AJS4.x中的具體運用

RouteTask(路徑分析)

routeTask類的url可使用NAServer;發佈網絡分析服務能夠查看這裏:點我

相關網絡分析服務見這裏:點我

QueryTask(查詢)

QueryTask的url可使用MapServer、FeatureServer

FindTask(查找)

FindTask可使用MapServer實例化。

IdentifyTask(識別)

IdentifyTask可使用MapServer實例化。

Geoprocessor(GP)

Geoprocessor可使用GPServer實例化,能夠根據子項進行不一樣的分析。在AJS的例子中,使用了可視域分析和熱力圖分析,GPServer(地理處理服務)的不一樣子項而已。

關於GPServer的發佈與使用,能夠查看Server的幫助文檔:點我

其實就是ArcMap的各類處理。

PointCloudLayer(點雲圖層)

點雲圖層能夠爲其url屬性賦一個SceneServer的URL來實例化。

ClosestFacilityTask(最近設施)

使用NAServer。

GeometryService(幾何服務)

使用GeometryServer;如

var geoSer = new GeometryService({url:"https://sampleserver6.arcgisonline.com/arcgis/rest/services/Utilities/Geometry/GeometryServer"});

Locator(定位)

使用GeocodeServer(地理編碼服務)。

如:

var locator = new Locator({url:"http://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer"});

ServiceAreaTask(服務區)

使用NAServer。(疑似)

ImageServiceIdentifyTask(影像服務識別)

疑似爲MapServer,與IdentifyTask相似。

相關文章
相關標籤/搜索