使用逼真的 WebStyleSymbol 可视化要素

尝试一下在线预览

为了快速应用 web 样式,可以使用 WebStyleSymbol 来呈现要素。该符号可以在渲染器中设置,也可以直接在图形上设置:

           
1
2
3
4
5
6
7
8
9
10
11
const renderer = {
  type: "simple", // autocasts as new SimpleRenderer()
  symbol: {
    type: "web-style", // autocasts as new WebStyleSymbol()
    name: "Light_On_Post_-_Light_on",
    portal: {
      url: "https://www.geoscene.cn"
    },
    styleName: "EsriRealisticStreetSceneStyle"
  }
};

webstylessymbol 的大小、旋转或颜色不能直接修改。然而,使用它的 fetchSymbol() 方法,可以检索和修改它的PointSymbol3D  表示。

            
1
2
3
4
5
6
7
8
9
10
11
12
webStyleSymbol.fetchSymbol().then((pointSymbol3D) => {
  // clone the retrieved symbol, as properties on it are immutable
  const newSymbol = pointSymbol3D.clone();
  // the first symbolLayer contains the properties that can be modified
  const symbolLayer = newSymbol.symbolLayers.getItemAt(0);
  // change for example the height of the object
  symbolLayer.height *= scale;
  // do something with newSymbol, like setting it on a layer renderer
  const newRenderer = layer.renderer.clone();
  newRenderer.symbol = newSymbol;
  layer.renderer = newRenderer;
});

修改 WebStyleSymbols 的另一种方法是在带有  visualVariables  的渲染器中使用它们。 此示例创建费城洛根广场的城市场景。 WebStyleSymbols  用于表示路灯、长凳、汽车和植被。 使用 visualVariables ,我们将这些要素缩放到它们的真实世界大小。

                                         
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
const streetFurnitureRenderer = {
  type: "unique-value", // autocasts as new UniqueValueRenderer()
  field: "CATEGORY",
  uniqueValueInfos: [
    {
      value: "Overhanging street",
      symbol: {
        type: "web-style", // autocasts as new WebStyleSymbol()
        name: "Overhanging_Street_-_Light_on",
        styleName: "EsriRealisticStreetSceneStyle"
      }
    },
    {
      value: "Trash bin",
      symbol: {
        type: "web-style", // autocasts as new WebStyleSymbol()
        name: "Trash_bin_1",
        styleName: "EsriRealisticStreetSceneStyle"
      }
    },
    {
      value: "Park bench 1",
      symbol: {
        type: "web-style", // autocasts as new WebStyleSymbol()
        name: "Park_bench_1",
        styleName: "EsriRealisticStreetSceneStyle"
      }
    }
  ],
  visualVariables: [
    {
      type: "rotation",
      field: "ROTATION"
    },
    {
      type: "size",
      field: "SIZE",
      axis: "height"
    }
  ]
};

请参阅 使用 3D 符号可视化点 指南以查看可在 WebStyleSymbol  类中使用的所有 3D 符号和样式的完整列表。 您还可以使用 Symbol Playground  尝试任何风格。

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.