Skip to content

Commit 474ca98

Browse files
Merge pull request #32 from JPL-Devin/devin/1776711550-lithosphere-gradient-support
Add LithoSphere gradient layer support via lithosphere ^1.6.0
2 parents ebf2fb4 + 8b0ec9a commit 474ca98

3 files changed

Lines changed: 38 additions & 14 deletions

File tree

package-lock.json

Lines changed: 10 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@
127127
"http-proxy-middleware": "3.0.5",
128128
"isomorphic-ws": "5.0.0",
129129
"jquery": "^3.5.1",
130-
"lithosphere": "^1.5.5",
130+
"lithosphere": "^1.6.0",
131131
"mark.js": "^8.11.1",
132132
"materialize-css": "^1.0.0",
133133
"memorystore": "^1.6.2",

src/essence/Basics/Globe_/GlobeRenderer.js

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -451,11 +451,11 @@ class GlobeRenderer {
451451
*/
452452
addLayer(type, layerConfig) {
453453
if (type === 'gradient_polyline') {
454-
// Gradient polylines are only supported by the Cesium renderer
455454
if (this.rendererType === 'cesium') {
456455
return this._addCesiumGradientPolyline(layerConfig)
457456
}
458-
return null
457+
// LithoSphere 1.6.0+: map to 'gradient' layer type
458+
return this._addLithoSphereGradient(layerConfig)
459459
}
460460
if (this.rendererType === 'lithosphere') {
461461
return this.renderer.addLayer(type, layerConfig)
@@ -799,6 +799,25 @@ class GlobeRenderer {
799799
* @param {object} layerConfig - { name, geojson, gradientSettings, layerObj }
800800
* @returns {string} Layer name used as ID for removal
801801
*/
802+
_addLithoSphereGradient(layerConfig) {
803+
const layerName = `${layerConfig.name}_gradient`
804+
805+
// Remove existing gradient layer with that name if present
806+
this.renderer.removeLayer(layerName)
807+
808+
const lithoConfig = {
809+
name: layerName,
810+
on: true,
811+
opacity: 1,
812+
geojson: layerConfig.geojson,
813+
gradientSettings: layerConfig.gradientSettings,
814+
}
815+
816+
this.renderer.addLayer('gradient', lithoConfig)
817+
818+
return layerName
819+
}
820+
802821
_addCesiumGradientPolyline(layerConfig) {
803822
const { name, geojson, gradientSettings } = layerConfig
804823
const layerName = `${name}_gradient`
@@ -1484,8 +1503,6 @@ class GlobeRenderer {
14841503
*/
14851504
removeLayer(name) {
14861505
if (this.rendererType === 'lithosphere') {
1487-
// Gradient polylines are Cesium-only; skip for LithoSphere
1488-
if (this._layers && this._layers[name]?.type === 'gradient_polyline') return
14891506
return this.renderer.removeLayer(name)
14901507
} else {
14911508
const layerInfo = this._layers[name]
@@ -1771,6 +1788,12 @@ class GlobeRenderer {
17711788
}
17721789
}
17731790

1791+
if (bestDist === Infinity) {
1792+
this._gradientHoverDot.show = false
1793+
this._requestRender()
1794+
return
1795+
}
1796+
17741797
this._gradientHoverDot.position = Cesium.Cartesian3.fromDegrees(
17751798
bestLng, bestLat, bestElev
17761799
)

0 commit comments

Comments
 (0)