ArcGIS使用(一)創建ArcGIS應用

ArcGIS官方文檔:https://developers.arcgis.com/javascript/

 

第一章、認識和使用ArcGIS

1 ArcGIS for js 4.x

    使用的是4.15 版本,ArcGIS 每個版本之間有差別,3 和4 的差別有點大

    4 地圖可以2D或3D顯示,修改了繪圖邏輯,地圖和圖層不在處理邏輯,而是由view處理視圖專門用於可視化地圖或場景中的  數據。地圖包含要顯示的實際數據或圖層,而視圖則處理顯示的數據。

        4.x多了MapView,地圖在MapView中顯示:

var map = new Map({ basemap: "streets" }); 
var view = new MapView({ 
     container: "viewDiv",
     map: map, 
     center:[118.183013,39.638808], zoom: 6 });
map = new Map("map", { 
     center:[118.183013,39.638808],
     zoom: 13 , 
     minZoom: 4, 
     maxZoom: 11 });

所有map的相關操作都轉換到了view

   圖層操作方法有些改變:

3.x

map.addLayer(pointGraphicLayer, 20); map.removeLayer(pointGraphicLayer);

4.x

map.add(graphicsLayer) map.remove(graphicsLayer);

   有些類可以不用引入,直接使用:

var point = { type: "point", longitude: 118.183013, latitude: 39.638808 }; 
var simpleFillSymbol = { type: "simple-fill", 
                         color: [227, 139, 79, 0.8],
                         opacity 80% outline: { color: [255, 255, 0], width: 1 } 
                       };


var point = new Point(118.183013,39.638808); 
var simpleFillSymbol = new SimpleFillSymbol( 
            SimpleFillSymbol.STYLE_NONE,
            new SimpleLineSymbol(SimpleLineSymbol.STYLE_DASHDOT, 
                         new Color([148, 236, 60]),2), 
                         new Color([255, 255, 179, 0])); 
var polygon =new Polygon ( [118.183013, 39.638808],
                           [118.333013, 39.828808], 
                           [118.543013, 39.878808] );

    模塊和軟件包更新:

更改的軟件包名稱,例如esri/dijitnow esri/widgets/。

短,更清晰的模塊名稱,例如TileLayer代替ArcGISTiledMapServiceLayer。

一貫套管模塊名,所有模塊現在有一個大寫字母,含開始Map,Graphic和Query。

支持類已移至支持文件夾,以使API參考更加有條理,例如esri/layers/support和esri/tasks/support。

結構發生了esri/config變化。的屬性esriConfig.defaults現在位於中esriConfig。例如,要設置默認幾何服務

5.popupTemplate 新版本不再有infowwindow 了

2 創建應用

1.創建HTML頁面:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>ArcGIS JavaScript APP</title>
    <style>
      html, body, #viewDiv {
        padding: 0; margin: 0;height: 100%;width: 100%;
      }
    </style>
  </head>
  <body>
    <div id="viewDiv"></div>
  </body>
</html>

2.添加對CSS和API的引用

該<script>標籤加載從CDN通過ArcGIS API爲JavaScript。發行新版本的API後,請更新版本號以匹配新發行的版本

<link rel="stylesheet" href="https://js.arcgis.com/4.15/esri/themes/light/main.css">
<script src="https://js.arcgis.com/4.15/"></script>

3.加載模塊

esri/Map -加載特定於創建地圖的代碼
esri/views/MapView -加載允許以2D模式查看地圖的代碼

使用第二個<script>標籤從API加載特定的模塊。使用以下代碼段中的語法加載以下模塊

esri/Map -加載特定於創建地圖的代碼 esri/views/MapView -加載允許以2D模式查看地圖的代碼

require([ "esri/Map", "esri/views/MapView" ],
            function(Map, MapView) {});

全局require()函數(由dojo提供)用於加載模塊,Esri的JavaScript API構建在Dojo之上,以利用Dojo的模塊化代碼庫以及協調跨瀏覽器差異的能力。

4.創建地圖

使用新建一個地圖Map,該地圖是對從esri/Map模塊加載的Map類的引用。您可以basemap通過將一個對象傳遞給Map構造函數來指定地圖屬性

require(["esri/Map", "esri/views/MapView"], function(Map, MapView) {
  var map = new Map({
    basemap: "streets"
  });
});

 其他底圖的選項有:satellite,hybrid,topo,gray,dark-gray,oceans,osm,national-geographic。

5 創建2D地圖還是3D場景

在中<head>,添加<script>標籤和AMD require語句以加載MapMapViewSceneView模塊。創建一個新的Map並將basemap屬性設置爲topo-vector。如果要創建3D場景,請將該ground屬性設置爲world-elevation顯示高程變化。最後,按照以下步驟之一創建適當的視圖:

2D地圖:

  <script>
  require([
      "esri/Map",
      "esri/views/MapView"
    ], function(Map, MapView) {
    var map = new Map({
      basemap: "topo-vector"
    });
    var view = new MapView({
      container: "viewDiv",
      map: map,
      center: [-118.80500, 34.02700], // longitude, latitude
      zoom: 13
    });
  });
  </script>

3D場景:

  <script>
  require([
      "esri/Map",
      "esri/views/SceneView"
    ], function(Map, SceneView) {
    var map = new Map({
      basemap: "topo-vector",
      ground: "world-elevation"  
    });
    var view = new SceneView({
      container: "viewDiv",
      map: map,
      camera: {
        position: {  
          x: -118.80800,
          y: 33.96100,
          z: 25000 
        },
        tilt: 65  
      }
    });
  });
  </script>

 

3 底圖

   在應用程序中使用的各種各樣的底圖。其中許多可以直接用字符串常量引用。

   底圖屬性light-gray-vector,dark-gray-vector,satellite,streets-relief-vector,和streets-navigation-vector

var map = new Map({basemap: "streets-navigation-vector"});

底圖的選項有:streets,satellite,hybrid,topo,gray,dark-gray,oceans,osm,national-geographic。

構建應用程序以交互方式選擇和顯示ArcGIS Online 底圖:

要構建可以在底圖之間切換的應用程序,可以使用BasemapToggle或BasemapGallery窗口小部件。

該BasemapToggle小部件允許您在定義的兩個底圖之間切換,

而BasemapGallery小部件允許您從屬於ArcGIS Online組的多個底圖中進行選擇。您可以使用Esri託管的一組底圖,也可以使用專門爲應用程序組成的一組底圖

示例1:切換底圖:

啓用兩個底圖之間的選擇的最簡單方法之一是使用BasemapToggle小部件。在此步驟中,您將配置窗口小部件以在“地形”底圖和“衛星”底圖之間切換。

//require語句中,添加對BasemapToggle和BasemapGallery模塊的引用
require([
      "esri/Map",
      "esri/views/MapView",
      "esri/widgets/BasemapToggle",
      "esri/widgets/BasemapGallery"
    ], function(Map, MapView, BasemapToggle, BasemapGallery) {

在main中的代碼結尾處function,創建一個BasemapToggle小部件將view和nextBasemap屬性設置爲satellite

var basemapToggle = new BasemapToggle({
        view: view,
        nextBasemap: "satellite"
      });
//  然後將小部件添加到視圖的,將其添加到視圖的右下角DefaultUI。
  view.ui.add(basemapToggle, "bottom-right");

示例2:從ArcGIS Online 組中選擇底圖:

選擇底圖的另一種方法是使用BasemapGallery小部件。在此步驟中,您將使用小部件從ArcGIS Online組中加載底圖,以便用戶可以選擇和顯示底圖。

在main中function,創建一個BasemapGallery小部件並將其配置爲從中加載底圖ArcGIS Online。將設置view爲活動視圖,並將設置source爲ArcGIS Online門戶。將設置url爲https://wwww.arcgis.com並將其設置useVectorBasemaps爲,true以便從矢量圖塊組中加載底圖。如果將此值設置爲該值,false將加載柵格圖塊底圖組

var basemapGallery = new BasemapGallery({
        view: view,
        source: {
          portal: {
            url: "https://www.arcgis.com",
            useVectorBasemaps: true  
          }
        }
});
通過將小部件添加到視圖的,將其添加到視圖的右上角DefaultUI
view.ui.add(basemapGallery, "top-right");

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章