ui/map/rendering/CustomLayer3D¶
Classes¶
abstract CustomLayer3D¶
Defined in: ui/map/rendering/CustomLayer3D.ts:25
Base class for Three.js custom layers in MapLibre GL
This class provides the foundation for rendering 3D content using Three.js within MapLibre GL maps. It handles the integration between Three.js and MapLibre's rendering pipeline.
Based on MapLibre example: https://maplibre.org/maplibre-gl-js/docs/examples/add-3d-model-threejs/
Extended by¶
Implements¶
CustomLayerInterface
Constructors¶
Constructor¶
Defined in: ui/map/rendering/CustomLayer3D.ts:39
Parameters¶
id¶
string
Returns¶
Properties¶
id¶
Defined in: ui/map/rendering/CustomLayer3D.ts:26
A unique layer id.
Implementation of¶
type¶
Defined in: ui/map/rendering/CustomLayer3D.ts:27
The layer's type. Must be "custom".
Implementation of¶
renderingMode¶
Defined in: ui/map/rendering/CustomLayer3D.ts:28
Either "2d" or "3d". Defaults to "2d".
Implementation of¶
camera¶
Defined in: ui/map/rendering/CustomLayer3D.ts:30
scene¶
Defined in: ui/map/rendering/CustomLayer3D.ts:31
renderer¶
Defined in: ui/map/rendering/CustomLayer3D.ts:32
map¶
Defined in: ui/map/rendering/CustomLayer3D.ts:33
directionalLight1¶
Defined in: ui/map/rendering/CustomLayer3D.ts:36
directionalLight2¶
Defined in: ui/map/rendering/CustomLayer3D.ts:37
Methods¶
onAdd()¶
Defined in: ui/map/rendering/CustomLayer3D.ts:48
Initialize Three.js scene (called by MapLibre when layer is added)
Parameters¶
map¶
Map$1
MapLibre map instance
gl¶
WebGLRenderingContext | WebGL2RenderingContext
WebGL rendering context
Returns¶
void
Implementation of¶
setupLighting()¶
Defined in: ui/map/rendering/CustomLayer3D.ts:116
Setup scene lighting Override this method to customize lighting for your scene
Returns¶
void
onSceneReady()¶
Defined in: ui/map/rendering/CustomLayer3D.ts:137
Called when scene is ready for subclass to add objects Override this to add your 3D objects to the scene
Returns¶
void
render()¶
Call Signature¶
Defined in: ui/map/rendering/CustomLayer3D.ts:144
Render the scene (called by MapLibre every frame)
Parameters¶
gl¶
WebGLRenderingContext | WebGL2RenderingContext
WebGL rendering context
matrix¶
number[]
Transformation matrix (deprecated, use args)
Returns¶
void
Implementation of¶
Call Signature¶
Defined in: ui/map/rendering/CustomLayer3D.ts:145
Render the scene (called by MapLibre every frame)
Parameters¶
gl¶
WebGLRenderingContext | WebGL2RenderingContext
WebGL rendering context
args¶
CustomRenderMethodInput
Returns¶
void
Implementation of¶
updateScene()¶
Defined in: ui/map/rendering/CustomLayer3D.ts:189
Update scene objects before rendering Override this to update your 3D objects each frame
Parameters¶
args?¶
Rendering arguments from MapLibre
Returns¶
void
lngLatToMercator()¶
Defined in: ui/map/rendering/CustomLayer3D.ts:198
Convert longitude/latitude to Mercator coordinates
Parameters¶
lng¶
number
Longitude in degrees
lat¶
number
Latitude in degrees
altitude?¶
number = 0
Altitude in meters
Returns¶
object
Mercator coordinates and scale factor
x¶
y¶
z¶
scale¶
createTransformMatrix()¶
Defined in: ui/map/rendering/CustomLayer3D.ts:228
Create a transformation matrix for positioning an object on the map
Parameters¶
lng¶
number
Longitude in degrees
lat¶
number
Latitude in degrees
altitude¶
number
Altitude in meters
heading?¶
number = 0
Heading in radians (0 = North, clockwise)
pitch?¶
number = 0
Pitch in radians (rotation around X axis)
roll?¶
number = 0
Roll in radians (rotation around Y axis)
scale?¶
number = 1
Additional scale factor
Returns¶
Matrix4
Three.js transformation matrix
isGlobeProjection()¶
Defined in: ui/map/rendering/CustomLayer3D.ts:272
Check if the current map projection is globe
Returns¶
boolean
True if globe projection is active
onRemove()?¶
Defined in: ui/map/rendering/CustomLayer3D.ts:286
Cleanup when layer is removed (called by MapLibre) Override to cleanup any resources
Parameters¶
_map¶
Map$1
_gl¶
WebGLRenderingContext | WebGL2RenderingContext
Returns¶
void
Implementation of¶
Interfaces¶
Render3DArgs¶
Defined in: ui/map/rendering/CustomLayer3D.ts:11
The slice of MapLibre's custom-layer render arguments our 3D layers consume. Wide enough to cover both the modern args object and the legacy matrix-array render call, narrow enough that subclasses don't depend on MapLibre's full ProjectionData internals.
Properties¶
defaultProjectionData¶
Defined in: ui/map/rendering/CustomLayer3D.ts:12