Это возможно, выдавливая геометрии и помещая их на определенную высоту, используя свойство elevationInfo
на слое. В приведенном ниже примере предполагается, что у вас есть слой (например, FeatureLayer или GeoJSONLayer ) с геометрией многоугольника.
Для выдавливания скажите слою для рендеринга многоугольников с помощью ExtrudeSymbol3DLayer
. В приведенном ниже фрагменте кода все полигоны будут иметь высоту 5 метров.
layer.renderer = {
type: "simple",
symbol: {
type: "polygon-3d",
symbolLayers: [
{
type: "extrude",
size: 5, // height in meters
material: {
color: "red"
}
}
]
}
}
После этого вы можете заставить свои вытянутые полигоны летать, разместив их на определенной высоте relative-to-ground
. В приведенном ниже примере будут отображаться все полигоны на высоте 10 метров над землей.
layer.elevationInfo = {
mode: "relative-to-ground",
offset: 10,
unit: "meters"
}
Полигоны еще не будут выглядеть сложенными, поскольку все они имеют одинаковый цвет, высоту и высоту над землей. В основном мы хотим иметь разные значения в приведенных выше фрагментах кода для каждого из полигонов.
В следующем примере кода это достигается путем добавления
Все они зависят от атрибутов объекта многоугольника и поэтому могут быть настроены путем изменения значений атрибутов.
// Make elevation offset depend on the attribute "elevation"
layer.elevationInfo = {
mode: "relative-to-ground",
featureExpressionInfo: {
expression: "$feature.elevation"
},
unit: "meters"
};
layer.renderer = {
type: "unique-value",
visualVariables: [
// Make the extrusion height depend on the attribute "height"
{
type: "size",
valueExpression: "$feature.height",
valueUnit: "meters"
}
],
// Make the color depend on the attribute "usage"
field: "usage",
uniqueValueInfos: [
{
value: "office",
symbol: {
type: "polygon-3d",
symbolLayers: [
{
type: "extrude",
material: {
color: "#D06152"
}
}
]
}
},
... // Add unique value info for each usage
]
};
Вот рабочий пример, показывающий несколько вытянутых многоугольников в Центральный парк, Нью-Йорк. https://codepen.io/arnofiva/pen/4071d4e79a3cb921f42d6a9e83f5b418?editors=1010