docs/roadmap.md
Interested in what is coming down the road? We are trying to make the deck.gl roadmap as public as possible.
We are currently using the following ways to share information about the direction of deck.gl.
The @deck.gl/experimental-layers is available as of deck.gl v5.2 and contains early versions of future layers.
There are a number of interesting layers in this module, however there are caveats:
@deck.gl/experimental-layers module in your package.json.These are some of the big priorities for our next release:
experimental namespace, and for additional details check the RFC.These are some of things we tackled in our most recent release
experimental namespace. For additional details check the RFCs.TBA - This is a planned feature for a future release
Restrict Event Handling to match Viewport Size - Controllers need to be able to be restricted to a certain area (in terms of event handling). Some controllers are completely general (just general drag up/down):
Controllers will also benefit from be able to feed multiple viewports of different types. There are limits to this of course, in particular it would be nice if for instance a geospatially neabled FirstPerson controller can feed both a FirstPersonViewport and a WebMercatorViewport. Various different viewports must be created from one set of parameters.
Contrast this to deck.gl v4.1, where the idea was that each the of Viewport was associated with a specific controller (WebMercatorViewport has a MapController, etc).
Multi-viewport support was added during deck.gl 5.0 development. The APIs are still not considered stable so the related classes are exported as part of the "experimental" namespace, and in most cases.
deck.gl now allows you to divide your screen into multiple viewports and render your layers from different perspectives, using the experimental _viewports property. It is e.g. possible to render a top-down map view next to a first person view for dramatic new perspectives on your data. E.g. an app can allow your users to "walk around" in the city onto which its data is overlaid.
Multi viewport support can be used to integrate with the WebVR API and create dual WebVR compatible viewports that render a first person view of your data for left and right eye respectively which will display as stereoscopic 3D in supporting hardware.
In addition, a new viewId React property can be added to DeckGL's children. This will synchronize the position of the react component with the corresponding deck.gl viewport, which makes it trivial to precisely position e.g. multiple "base maps" and other background or foreground HTML components in multi-viewport layouts. The viewportId prop also automatically hides the react children when a viewport with the corresponding id is not present or when viewport parameters can not be supported by the underlying map component.
TBA
All Viewport classes are now geospatially enabled: they now take an optional longitude/latitude reference point. In this mode, positions will be treated as meter offsets from that reference point per 'meter-offsets' conventions.
This means that you can now use a FirstPersonViewport (the successor to the PerspectiveViewport with layers encoded in 'lnglat' and 'meter-offsets') and place a camera anywhere in the scene (in contrast to the WebMercatorViewport which only allows you to look "down" on a position on the map).
Viewports even accept a modelMatrix to allow viewport/camera positions to be specified in exactly the same coordinates as METER_OFFSET layers, making it possible to place a camera at the exact location any of your existing data points without having to think or do any math.