概要

加载倾斜模型用到Geoscene 的两个api:IntegratedMeshLayer、SceneView,arcgis类同。

代码

<script>
import Map from '@geoscene/core/Map.js'
import SceneView from '@geoscene/core/views/SceneView.js'
import IntegratedMeshLayer from "@geoscene/core/layers/IntegratedMeshLayer"
import LayerList from '@geoscene/core/widgets/LayerList'
var MAP1;
var view;
var sceneLayer;
export default {
  name: "inclinedmodel",
  mounted() {
    this.initMap();
  },
  methods: {
    initMap() {
      var sceneLayer = new IntegratedMeshLayer({
        url:
          "https://*****/SceneServer", //替换你自己的倾斜模型服务
      });

      let MAP1 = new Map({
        layers: [sceneLayer]
      });
      var view = new SceneView({
        container: "viewDiv", // 关联的 HTML 容器 ID
        map: MAP1,
        camera: {
          position: {
            x: 0, // 经度
            y: 0, // 纬度
            z: 0, // 高度(米)
            spatialReference: { wkid: 3857 }
          },
          // heading: 0, // 方向(度)
          tilt: 45 // 倾斜角度(度)
        },
      });
      MAP1.add(sceneLayer);
      let layerList = new LayerList({
        view: view
      });
      view.ui.add(layerList, {
        position: "top-right"
      });

      // 可视区全部展示范围
      view.when(function () {
        view.extent = sceneLayer.fullExtent;
      });
    },
  },
  beforeUnmount() {  // 模型太占内存,记得销毁
    if (MAP1) {
      MAP1.remove(sceneLayer);
      MAP1.destroy();
      MAP1 = null;
    }
    if (view) {
      view.destroy();
      view = null;
    }
  }
}

</script>

技术细节

  • 代码里的camera里的position里x、y为经纬度坐标。当倾斜模型是城市坐标时,记得去查阅下你的服务里的x、y范围,你的x、y值不能超过该值,否则就会加载不出来。
  • 记得指定坐标,因为也可能导致模型无法加载

更多推荐