resium
Version:
React components for Cesium
68 lines (57 loc) • 1.68 kB
text/typescript
import { Billboard as CesiumBillboard, BillboardCollection } from "cesium";
import { createCesiumComponent, EventProps, PickCesiumProps } from "../core";
/*
@summary
`Billboard` is a billboard primitive in the `BillboardCollection`.
Primitive is a low layer API for geographical visualization.
[Entity](/components/entity) is more recommended unless performance issues.
*/
/*
@scope
Only inside [BillboardCollection](/components/BillboardCollection) components.
A billboard object will be attached to the parent BillboardCollection.
*/
export type BillboardCesiumProps = PickCesiumProps<CesiumBillboard, typeof cesiumProps>;
export type BillboardOtherProps = EventProps<{
collection: BillboardCollection;
id: string | undefined;
primitive: CesiumBillboard;
}>;
export type BillboardProps = BillboardCesiumProps & BillboardOtherProps;
const cesiumProps = [
"alignedAxis",
"color",
"disableDepthTestDistance",
"distanceDisplayCondition",
"eyeOffset",
"height",
"heightReference",
"horizontalOrigin",
"id",
"image",
"pixelOffset",
"pixelOffsetScaleByDistance",
"position",
"rotation",
"scale",
"scaleByDistance",
"show",
"sizeInMeters",
"translucencyByDistance",
"verticalOrigin",
"width",
] as const;
const Billboard = createCesiumComponent<CesiumBillboard, BillboardProps>({
name: "Billboard",
create(context, props) {
return context.billboardCollection?.add(props);
},
destroy(element, context) {
if (context.billboardCollection && !context.billboardCollection.isDestroyed()) {
context.billboardCollection.remove(element);
}
},
cesiumProps,
useCommonEvent: true,
});
export default Billboard;