arcgisforjs ajoute un modèle glb et efface le widget

Il existe des cas connexes sur le site officiel, mais ceux sur le site officiel nécessitent que l'utilisateur clique manuellement sur la carte pour l'ajouter (actuellement, je vois ce type). Mon exigence est que la carte soit automatiquement ajoutée à la carte dès son chargement, sans que l'utilisateur ait à cliquer à nouveau manuellement. Accédez directement au code.

methods: {

    loadGlbModel() {
      loadModules([
        "esri/symbols/PointSymbol3D",
        "esri/symbols/ObjectSymbol3DLayer",
        "esri/widgets/Expand",
        "esri/Graphic",
        "esri/layers/GraphicsLayer",
      ]).then(
        ([
          PointSymbol3D,
          ObjectSymbol3DLayer,
          Expand,
          Graphic,
          GraphicsLayer,
        ]) => {

          // 添加模型
          this.$graphicsLayer = new GraphicsLayer();
          this.$map.add(this.$graphicsLayer);

          const modelSymbol = new PointSymbol3D({
            symbolLayers: [
              new ObjectSymbol3DLayer({
                resource: {
                  href: "xxx.glb",    // 你的glb模型的url
                },
              }),
            ],
          });

          const modelGraphic = new Graphic({
            geometry: {
              type: "point",
              // 指定加载的经纬度和高度
              longitude: 108.959419,
              latitude: 34.219819,
              // 高度可以先设置高一点,以免模型嵌入地下
              z: 450,
              spatialReference: this.$view.spatialReference,
            },
            symbol: modelSymbol,
          });

          this.$graphicsLayer.add(modelGraphic);
          // 移动视角到加载处,以免模型太小看不见
          this.$view.goTo({
            zoom: 20,
            center: [108.959419, 34.219819],
          });
        }
      );
    }
  },

$xxx dans le code est ma fonction pour empêcher vue d'échapper à la surveillance. Pour plus de détails, veuillez vous référer à mon autre article sur le césium ( Vue2 résout l'animation du césium freeze_cesium charge un grand nombre de blogentity_XFIRR-blog CSDN ).

Pour effacer les widgets, j'utilise la légende comme exemple.

this.$view.ui.empty("top-right"); 
// 方式一:清除之后可能显示一个无图例的小部件在右上角

this.$view.ui.remove(this.$heatMapLegend,"bottom-right");  
// 方式二: 清楚后将整个heatMapLegend全部清除,不会留有无图例的小部件。可以根据需求自行选择

Supongo que te gusta

Origin blog.csdn.net/XFIRR/article/details/132301772
Recomendado
Clasificación