arcgis api for JavaScript _加載三維圖層(scene layer)


arcgis api for JavaScript _加載三維圖層(scene layer)

 

arcgis api for JavaScript  4.x 版本增加對三維的支持。

關於三維圖層(scene layer):https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-SceneLayer.html

把官方示例代碼下載下來,在可以聯網的環境中使用瀏覽器打開該文件即可,

官方示例:https://developers.arcgis.com/javascript/latest/sample-code/sandbox/index.html?sample=layers-scenelayer  

官方示例可以在線修改,點擊刷新查看修改效果。便於測試使用。

三維圖層 即  scene layer, 翻譯為場景圖層,在arcgis api for JavaScript 通過兩種方式加載, portal id 或者 圖層url

portal id 的方式

var sceneLayer = new SceneLayer({
	  portalItem: {
           id: "2e0761b9a4274b8db52c4bf34356911e"
          }, 
        popupEnabled: false
      });
 
        

圖層url的方式

var sceneLayer = new SceneLayer({
    url:"https://scene.arcgis.com/arcgis/rest/services/Hosted/Building_Hamburg/SceneServer/layers/0",
popupEnabled: false 
});


 

自己發布的 場景圖層這里使用了  場景圖層服務url 的方式,如下為發布的場景圖層,紅框內即場景圖層服務url

發布場景服務:http://enterprise.arcgis.com/zh-cn/server/latest/publish-services/windows/scene-services.htm

pro試用申請:https://www.esri.com/arcgis/trial

 

 

把下載下來的官方代碼  稍作修改,如下文所示:

修改①:

圖層服務所使用數據  所在位置與官方數據不同,因此代碼中需要修改 position到對應位置。

測試數據下載:鏈接:https://pan.baidu.com/s/1c3Kg7cs 密碼:13a0

另外一份測試數據:鏈接:https://pan.baidu.com/s/1nwfSDmx 密碼:vt46

修改②

另外由於跨越請求問題,還添加了  “esriConfig.request.corsEnabledServers.push("server1041.esrichina.com");等少量代碼

關於跨越請求問題,參考:http://www.cnblogs.com/mumu122GIS/p/8482445.html

修改③

修改為  自己的場景圖層服務url 

 

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no">
<title>Get started with SceneView - Create a 3D map</title>
<style>
  html, 
  body, 
  #viewDiv {
    padding: 0;
    margin: 0;
    height: 100%;
    width: 100%;
  }
</style>


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


<script>
//require(["esri/config"], function(esriConfig) {
//  esriConfig.defaults.io.corsEnabledServers.push("server1041.esrichina.com");
//});
require([
  "esri/Map",
  "esri/views/SceneView",
  "esri/layers/SceneLayer",
  "esri/config",
  "dojo/domReady!"
], function(Map, SceneView, SceneLayer,esriConfig){
  esriConfig.request.corsEnabledServers.push("server1041.esrichina.com");
  
  
  
  var map = new Map({
    basemap: "streets",
    ground: "world-elevation"
  });
  
  var view = new SceneView({
    container: "viewDiv", 
    map: map, 
	camera: {
          //position: [-74.0338, 40.6913, 707],
	  //position: [10, 53.5, 707],
          position: [-75.175, 39.95, 707],
          tilt: 50,
          heading: 10
        }
  });
  
    // Create SceneLayer and add to the map
      var sceneLayer = new SceneLayer({
	    //portalItem: {
        //  id: "2e0761b9a4274b8db52c4bf34356911e"
        //},
	//url: "https://scene.arcgis.com/arcgis/rest/services/Hosted/Building_Hamburg/SceneServer/layers/0",
	url:"http://server1041.esrichina.com/arcgisserver/rest/services/Hosted/Scene_JS_WSL1/SceneServer",
	   
        popupEnabled: false
      });

      map.add(sceneLayer);

      // Create MeshSymbol3D for symbolizing SceneLayer
   var symbol = {
        type: "mesh-3d", // autocasts as new MeshSymbol3D()
        symbolLayers: [{
          type: "fill", // autocasts as new FillSymbol3DLayer()
          // If the value of material is not assigned, the default color will be grey
          material: {
            color: [244, 247, 134]
          }
        }]
    };
      // Add the renderer to sceneLayer
    sceneLayer.renderer = {
        type: "simple", // autocasts as new SimpleRenderer()
        symbol: symbol
      };
  
  
  
  
});
</script>
</head>
<body>
  <div id="viewDiv"></div>
</body>
</html>

  

 

結果如下

將代碼復制粘貼到在線示例中,也可以進行調試:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM