Boundary
This vignette demonstrates an optional downstream bridge from
XGeoRTR into ggWebGL.
The ownership split stays fixed:
-
XGeoRTRownsxgeo_state, embeddings, and explainable-geometry semantics - the bridge example resolves that backend state into renderer-ready payloads
-
ggWebGLowns widget construction, shaders, panel layout, hover, pan, and zoom
No XGeoRTR code is modified here. The bridge lives
entirely inside the ggWebGL example layer.
The representative and multiscale scenes show how optional
XGeoRTR-style renderer inputs can combine coloured explanation-state
points with sparse contribution-direction arrows. Those arrows are true
ggwebgl_layer_vectors() primitives rather than line
segments plus decorative anchors, so the vignette exercises the same
renderer-owned vector path that downstream packages can target.
Optional Dependency
XGeoRTR is an optional development ecosystem package for
ggWebGL, not a CRAN dependency. Live bridge widgets are
disabled during standard vignette builds and can be enabled in
development by setting GGWEBGL_BUILD_OPTIONAL_BRIDGES=true
before rendering this article. When the bridge is disabled or
XGeoRTR is unavailable, the package still builds and this
vignette degrades to documentation-only mode.
if (!build_optional_bridges) {
cat("Optional XGeoRTR live bridge widgets are disabled for this vignette build.\n")
} else if (!bridge_available) {
cat("XGeoRTR is unavailable, so the live bridge widgets are skipped in this vignette.\n")
} else {
cat("XGeoRTR bridge widgets are available.\n")
}
#> Optional XGeoRTR live bridge widgets are disabled for this vignette build.Representative Scene
This scene demonstrates class-coloured explanation points with sparse vector arrows summarising local contribution direction.
if (!bridge_available) {
cat("Representative widget skipped.\n")
} else {
bridge_widgets$representative
}
#> Representative widget skipped.Multiscale Scene
This two-panel view keeps the same vector grammar while contrasting the global embedding with a local explanation panel whose viewport is the exact data-coordinate zoom of the rectangle marked in the global panel.
if (!bridge_available) {
cat("Multiscale widget skipped.\n")
} else {
bridge_widgets$multiscale
}
#> Multiscale widget skipped.Attribution Scene
if (!bridge_available) {
cat("Attribution widget skipped.\n")
} else {
bridge_widgets$attribution
}
#> Attribution widget skipped.Structure Scene
if (!bridge_available) {
cat("Structure widget skipped.\n")
} else {
bridge_widgets$structure
}
#> Structure widget skipped.Regeneration
The example source for these widgets lives at:
source(system.file("examples", "htmlwidget", "xgeortr-bridge-gallery.R", package = "ggWebGL"))