gis

arcgis 4.x 加载倾斜摄影,设置绝对高度

2019-08-14  本文已影响0人  gis杭州

项目中加载了小范围的房屋倾斜摄影,同时为了查看相应的房屋属性信息,添加了2.5维的房屋白膜信息,用于响应鼠标点击。遇到问题是白膜添加后有一定高度,与倾斜摄影数据不能完全重合。所以采用设置倾斜摄影数据绝对高度的方式解决该问题。
问题截图如下


漂浮在空中的2.5维白膜 最终设置高度后的效果

设置高度代码

integratedMeshLayer.elevationInfo={
            mode:"absolute-height",
            offset:10,
        }

完整示例代码:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <meta
      name="viewport"
      content="initial-scale=1,maximum-scale=1,user-scalable=no"
    />
    <title>IntegratedMeshLayer - 4.12</title>

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

    <style>
      html,
      body,
      #viewDiv {
        padding: 0;
        margin: 0;
        height: 100%;
        width: 100%;
      }
    </style>

    <script>
      require([
        "esri/Map",
        "esri/views/SceneView",
        "esri/layers/IntegratedMeshLayer",
        "esri/layers/SceneLayer"
      ], function(Map, SceneView, IntegratedMeshLayer,SceneLayer) {

        var integratedMeshLayer = new IntegratedMeshLayer({
          url: "http://online.deqing.gov.cn/integratedmeshlayer/wusicun3d-20190715-integratedmeshlayer/bfba6bb4-f61c-47ba-9d04-751399cd18ca/layers/0",
          id: '22222',
        });
        integratedMeshLayer.elevationInfo={
            mode:"absolute-height",
            offset:10,
        }

        var building = new SceneLayer({
                    url: "http://online.deqing.gov.cn/scenelayer/dq_wsc_bm02-20190801-scenelayer/bfba6bb4-f61c-47ba-9d04-751399cd18ca/layers/0",
                    opacity: .6
                  });

        var sceneLayersymbol = {
          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: [255, 247, 134]
              }
            }
          ]
        };
        building.renderer = {
          type: "simple", // autocasts as new SimpleRenderer()
          symbol: sceneLayersymbol
        };


        var map = new Map({
          basemap: "satellite",
          layers: [integratedMeshLayer,building],
          ground: "world-elevation"
        });
        var view = new SceneView({
          container: "viewDiv",
          map: map,
          camera: {
          position: {
            x: 119.92490106782304,
            y: 30.57309273625568,
            z: 231.56820025108755
          },
          heading: 354.6954944510733,
          tilt: 57.14524690696458
        }
        });
      });
    </script>
  </head>

  <body>
    <div id="viewDiv"></div>
  </body>
</html>

前人经验:
ArcGIS API for JavaScript 倾斜摄影测量三维模型自定义绝对高度

上一篇 下一篇

猜你喜欢

热点阅读