Как добавить контур для GeometryInstance или PolygonGeometry в Cesiumjs - PullRequest
0 голосов
/ 14 ноября 2018

Мне нужно нарисовать контур для многоугольника, нарисованного с помощью следующего кода:

         scene.primitives.add( new Cesium.ClassificationPrimitive({
            geometryInstances : new Cesium.GeometryInstance({
                geometry : new Cesium.PolygonGeometry({
                    polygonHierarchy : new Cesium.PolygonHierarchy(
                        Cesium.Cartesian3.fromDegreesArray(coords)
                    ),
                    height : height
                }),
                attributes : {
                    color: color,
                },
                id : id,
                description : "Highlight Object",
            })
        }));

Есть ли способ нарисовать контур для многоугольника?Я знаю, что это может быть добавлено с сущностями, но необходимо использовать примитивы.Любая помощь очень ценится.

1 Ответ

0 голосов
/ 18 декабря 2018

Вы можете использовать PolylineCollection в качестве отдельного примитива для структуры.

Я создал демонстрацию в Sandcastle , показывающую этот вариант использования:

var viewer = new Cesium.Viewer('cesiumContainer');

var coords = [
    -72.0, 40.0,
    -70.0, 35.0,
    -75.0, 30.0,
    -70.0, 30.0,
    -68.0, 40.0
];

var cartesian = Cesium.Cartesian3.fromDegreesArray(coords);

var color = Cesium.Color.DARKRED;
var outlineColor = Cesium.Color.GOLD;

var polygonPrimitive = new Cesium.Primitive({
    geometryInstances: new Cesium.GeometryInstance({
        id: 'polygon',
        geometry: Cesium.PolygonGeometry.createGeometry(
            new Cesium.PolygonGeometry({
                polygonHierarchy: new Cesium.PolygonHierarchy(cartesian)
            })
        )
    }),
    appearance: new Cesium.MaterialAppearance({
        material: new Cesium.Material.fromType('Color', {
            color: color
        })
    }),
    asynchronous: false
});

var polylinePrimitive = new Cesium.PolylineCollection();
polylinePrimitive.add({
    positions: cartesian,
    width: 3.0,
    loop: true,
    material: new Cesium.Material.fromType('Color', {
        color: outlineColor
    })
});

var primitives = viewer.scene.primitives;
primitives.add(polygonPrimitive);
primitives.add(polylinePrimitive);
...