Skip to content

Commit 79f4262

Browse files
chrisgervangclaude
andcommitted
feat(basemap-browser): add billboard toggle for testing globe occlusion
Adds a billboard dimension to basemap-browser example to test IconLayer and TextLayer behavior with billboard: true vs false on globe projection. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 29b7fde commit 79f4262

File tree

5 files changed

+28
-2
lines changed

5 files changed

+28
-2
lines changed

examples/basemap-browser/src/config/build-config.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@ export function buildConfig(
2424
dimensions: Dimensions,
2525
onViewStateChange?: ViewStateChangeCallback
2626
): Config {
27-
const {basemap, framework, interleaved, batched, globe, multiView, stressTest} = dimensions;
27+
const {basemap, framework, interleaved, batched, globe, multiView, billboard, stressTest} =
28+
dimensions;
2829

2930
// Validate dimensions (warnings only)
3031
const validation = validateDimensions(dimensions);
@@ -38,6 +39,7 @@ export function buildConfig(
3839
interleaved,
3940
globe,
4041
multiView,
42+
billboard,
4143
stressTest
4244
});
4345

@@ -56,6 +58,7 @@ export function buildConfig(
5658
batched,
5759
globe,
5860
multiView,
61+
billboard,
5962
stressTest,
6063

6164
// Computed configuration

examples/basemap-browser/src/config/dimensions.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ export const DEFAULT_DIMENSIONS: Dimensions = {
1414
batched: true,
1515
globe: false,
1616
multiView: false,
17+
billboard: true,
1718
stressTest: 'none'
1819
};
1920

examples/basemap-browser/src/config/layers.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ type LayerBuildOptions = {
2727
interleaved: boolean;
2828
globe: boolean;
2929
multiView: boolean;
30+
billboard: boolean;
3031
stressTest: StressTest;
3132
};
3233

@@ -35,7 +36,7 @@ type LayerBuildOptions = {
3536
* Single source of truth for layer configuration.
3637
*/
3738
export function buildLayers(options: LayerBuildOptions): Layer[] {
38-
const {basemap, interleaved, globe, multiView, stressTest} = options;
39+
const {basemap, interleaved, multiView, billboard, stressTest} = options;
3940

4041
const interleavedProps = getInterleavedProps(basemap, interleaved);
4142

@@ -82,6 +83,7 @@ export function buildLayers(options: LayerBuildOptions): Layer[] {
8283
getPosition: (d: any) => d.coordinates,
8384
getSize: 40,
8485
getColor: [0, 140, 255],
86+
billboard,
8587
pickable: true,
8688
...interleavedProps
8789
}),
@@ -96,6 +98,7 @@ export function buildLayers(options: LayerBuildOptions): Layer[] {
9698
getTextAnchor: 'middle',
9799
getAlignmentBaseline: 'top',
98100
getPixelOffset: [0, 20],
101+
billboard,
99102
background: true,
100103
getBackgroundColor: [0, 0, 0, 180],
101104
backgroundPadding: [4, 2],

examples/basemap-browser/src/control-panel.tsx

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,10 @@ function getDimensionsFromUrl(): Partial<Dimensions> {
5656
result.multiView = params.get('multiView') === 'true';
5757
}
5858

59+
if (params.has('billboard')) {
60+
result.billboard = params.get('billboard') !== 'false';
61+
}
62+
5963
const stressTest = params.get('stressTest');
6064
if (
6165
stressTest === 'none' ||
@@ -80,6 +84,7 @@ function setUrlFromDimensions(dimensions: Dimensions) {
8084
params.set('batched', String(dimensions.batched));
8185
params.set('globe', String(dimensions.globe));
8286
params.set('multiView', String(dimensions.multiView));
87+
params.set('billboard', String(dimensions.billboard));
8388
params.set('stressTest', dimensions.stressTest);
8489
const newUrl = `${window.location.pathname}?${params.toString()}`;
8590
window.history.replaceState({}, '', newUrl);
@@ -262,6 +267,18 @@ export default function ControlPanel({onConfigChange}: ControlPanelProps) {
262267
</label>
263268
</div>
264269

270+
{/* Billboard Toggle */}
271+
<div className="section">
272+
<label>
273+
<input
274+
type="checkbox"
275+
checked={dimensions.billboard}
276+
onChange={() => updateDimension('billboard', !dimensions.billboard)}
277+
/>
278+
Billboard (Icons/Text)
279+
</label>
280+
</div>
281+
265282
{/* Stress Test Selection */}
266283
<div className="section">
267284
<div className="label">Stress Test:</div>

examples/basemap-browser/src/types.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ export type Dimensions = {
3939
batched: boolean;
4040
globe: boolean;
4141
multiView: boolean;
42+
billboard: boolean;
4243
stressTest: StressTest;
4344
};
4445

@@ -68,6 +69,7 @@ export type Config = {
6869
batched: boolean;
6970
globe: boolean;
7071
multiView: boolean;
72+
billboard: boolean;
7173
stressTest: StressTest;
7274

7375
// Computed configuration

0 commit comments

Comments
 (0)