1. 程式人生 > >[ArcGIS API for JavaScript 4.8] Sample Code-Get Started-widgets簡介

[ArcGIS API for JavaScript 4.8] Sample Code-Get Started-widgets簡介

idg com mapview list star evel 好的 gin views

【官方文檔:https://developers.arcgis.com/javascript/latest/sample-code/intro-widgets/index.html】


一、Intro to widgets using BasemapToggle

widgets(控件)是ArcGIS API for JavaScript的重要內容,widgets是指BasemapToggle(底圖切換)、Bookmarks(書簽)、Compass(指北針)、Layerlist(圖層列表)、Legend(圖例)等可以在地圖上添加的按鈕或功能鍵。更多widgets的信息,請查看API Reference:https://developers.arcgis.com/javascript/latest/api-reference/index.html。

widgets可以看作是被寫好的、具有特定功能的一段JavaScript代碼,封裝在類(class)中。JS API提供了很多即拿即用(ready-to-use)的widgets。

一些widgets是默認添加在MapView或SceneView中的,如MapView中的Zoom(縮放)按鈕、SceneView中的Compass(指北針)按鈕。這些默認添加的按鈕也是可以去掉的。在特定場景下,如果不需要這些功能,則可以去除。

總的來說,使用widgets有兩步。一是創建並實例化widget;二是設置widget的相關屬性。

這個例子介紹的是BasemapToggle widget,用於在同一個MapView中切換底圖。這種方法在SceneView中也是適用的。

1.代碼骨架

 1 <!doctype html>
 2 <html>
 3     <head>
 4         <meta charset="utf-8">
 5         <meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no">
 6         <title>Intro to widgets</title>
 7         
 8         <!-- JS API的引入 
--> 9 <link rel="stylesheet" href="https://js.arcgis.com/4.8/esri/css/main.css"> 10 <script src="https://js.arcgis.com/4.8/"></script> 11 12 <!-- 樣式的設置 --> 13 <style> 14 html,body,#viewDiv{ 15 padding:0; 16 margin:0; 17 height:100%; 18 width:100%; 19 } 20 </style> 21 22 <script> 23 24 </script> 25 </head> 26 27 <body> 28 <div id="viewDiv"></div> 29 </body> 30 </html>

其中,包括JS API的引入、style樣式的設置等等。

2.實例化Map和MapView

 1 <script>
 2     require([
 3         "esri/Map",
 4         "esri/views/MapView",
 5         "esri/widgets/BasemapToggle",  //加載BasemapToggle widget模塊
 6         "dojo/domReady!"
 7         ],function(Map,MapView,BasemapToggle){
 8             //實例化Map
 9             var map=new Map({
10                 basemap:"topo"
11             });
12                     
13             //實例化MapView
14             var view=new MapView({
15                 container:"viewDiv",
16                 map:map,
17                 center:[117,34],
18                 zoom:3
19             });
20 });
21 </script>

這裏實例化了Map和MapView對象,並設置了相關屬性。關於Map和MapView的更多信息,請查看:https://www.cnblogs.com/wangmengdx/p/9385033.html。

3.實例化BasemapToggle widget並設置相關屬性

1 //創建BasemapToggle widget並設置相關屬性
2var toggle=new BasemapToggle({
3     view:view,  //設置當前底圖為view當前承載的那個底圖("topo")
4     nextBasemap:"hybrid"  //切換至"hybird"底圖
5 });

view屬性可以是MapView或者SceneView。它使得BasemapToggle widget連接至初始底圖,即使用BasemapToggle widget切換之前的底圖。

nextBasemap屬性設置切換之後的底圖。這裏可以是Esri提供的底圖,或者是自己Server發布的服務。

4.在view中設置widget的位置

1 //添加widget到view中的指定位置
2 view.ui.add(toggle,"top-right");

使用View的ui屬性,可以設置widget在view中顯示的位置。

5.最終代碼及運行效果

 1 <!doctype html>
 2 <html>
 3     <head>
 4         <meta charset="utf-8">
 5         <meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no">
 6         <title>Intro to widgets</title>
 7         
 8         <!-- JS API的引入 -->
 9         <link rel="stylesheet" href="https://js.arcgis.com/4.8/esri/css/main.css">
10         <script src="https://js.arcgis.com/4.8/"></script>
11         
12         <!-- 樣式的設置 -->
13         <style>
14             html,body,#viewDiv{
15                 padding:0;
16                 margin:0;
17                 height:100%;
18                 width:100%;
19             }
20         </style>
21             
22         <script>
23             require([
24                 "esri/Map",
25                 "esri/views/MapView",
26                 "esri/widgets/BasemapToggle",  //加載BasemapToggle widget模塊
27                 "dojo/domReady!"
28                 ],function(Map,MapView,BasemapToggle){
29                     //實例化Map
30                     var map=new Map({
31                         basemap:"topo"
32                     });
33                     
34                     //實例化MapView
35                     var view=new MapView({
36                         container:"viewDiv",
37                         map:map,
38                         center:[117,34],
39                         zoom:3
40                     });
41                     
42                     //創建BasemapToggle widget並設置相關屬性
43                     var toggle=new BasemapToggle({
44                         view:view,  //設置當前底圖為view當前承載的那個底圖("topo")
45                         nextBasemap:"hybrid"  //切換至"hybird"底圖
46                     });
47                     
48                     //添加widget到view中的指定位置
49                     view.ui.add(toggle,"top-right");
50             });
51         </script>
52     </head>
53     
54     <body>
55         <div id="viewDiv"></div>
56     </body>
57 </html>

技術分享圖片

技術分享圖片

[ArcGIS API for JavaScript 4.8] Sample Code-Get Started-widgets簡介