Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

#465 Disable Globe more thoroughly when off #466

Merged
merged 1 commit into from
Dec 12, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions src/essence/Ancillary/QueryURL.js
Original file line number Diff line number Diff line change
Expand Up @@ -284,9 +284,11 @@ var QueryURL = {
if (mapZoom == undefined) mapZoom = L_.Map_.map.getZoom()

var globeCenter = L_.Globe_.litho.getCenter()
if (globeLon == undefined) globeLon = globeCenter.lng
if (globeLat == undefined) globeLat = globeCenter.lat
if (globeZoom == undefined) globeZoom = L_.Globe_.litho.zoom
if (globeCenter) {
if (globeLon == undefined) globeLon = globeCenter.lng
if (globeLat == undefined) globeLat = globeCenter.lat
if (globeZoom == undefined) globeZoom = L_.Globe_.litho.zoom
}

var viewerImg = L_.Viewer_.getLastImageId()
var viewerLoc = L_.Viewer_.getLocation()
Expand Down
27 changes: 27 additions & 0 deletions src/essence/Basics/Globe_/Globe_.js
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,11 @@ let Globe_ = {
// CONSTRUCTOR
this.litho = new LithoSphere(containerId, lithoConfig)

if (!L_.hasGlobe) {
this.litho = this.getMockLitho(this.litho)
return
}

this.litho.addControl('mmgisLithoHome', this.litho.controls.home)
this.litho.addControl(
'mmgisLithoExaggerate',
Expand Down Expand Up @@ -199,6 +204,28 @@ let Globe_ = {
coordinates.hideElevation()
})
},
getMockLitho: function () {
return {
removeLayer: function () {},
addLayer: function () {},
toggleLayer: function () {},
hasLayer: function () {},
getCenter: function () {},
setCenter: function () {},
getCameras: function () {},
setLayerOpacity: function () {},
setLayerFilterEffect: function () {},
orderLayers: function () {},
invalidateSize: function () {},
setLayerSpecificOptions: function () {},
getElevationAtLngLat: function () {
return 0
},
projection: this.litho.projection,
_: {},
options: {},
}
},
reset: function () {},
setLink: function () {},
highlight: function () {},
Expand Down
22 changes: 12 additions & 10 deletions src/essence/Basics/Map_/Map_.js
Original file line number Diff line number Diff line change
Expand Up @@ -206,16 +206,18 @@ let Map_ = {
$('.map-autoset-zoom').text(Map_.map.getZoom())
})

this.map.on('move', (e) => {
const c = this.map.getCenter()
Globe_.controls.link.linkMove(c.lng, c.lat)
})
this.map.on('mousemove', (e) => {
Globe_.controls.link.linkMouseMove(e.latlng.lng, e.latlng.lat)
})
this.map.on('mouseout', (e) => {
Globe_.controls.link.linkMouseOut()
})
if (Globe_.controls.link) {
this.map.on('move', (e) => {
const c = this.map.getCenter()
Globe_.controls.link.linkMove(c.lng, c.lat)
})
this.map.on('mousemove', (e) => {
Globe_.controls.link.linkMouseMove(e.latlng.lng, e.latlng.lat)
})
this.map.on('mouseout', (e) => {
Globe_.controls.link.linkMouseOut()
})
}

// Clear the selected feature if clicking on the map where there are no features
Map_.map.addEventListener('click', clearOnMapClick)
Expand Down
4 changes: 2 additions & 2 deletions src/essence/Basics/UserInterface_/BottomBar.js
Original file line number Diff line number Diff line change
Expand Up @@ -515,7 +515,7 @@ let BottomBar = {
`</li>`,
`</ul>`,
`</div>`,
(L_.Globe_ ?
(L_.Globe_ && L_.hasGlobe ?
[`<div class='mainSettingsModalSection' id='mainSettingsModalSection3DGlobe'>`,
`<div class='mainSettingsModalSectionTitle'>3D Globe</div>`,
`<ul class='mainSettingsModalSectionOptions'>`,
Expand Down Expand Up @@ -555,7 +555,7 @@ let BottomBar = {
$(
'#mainSettingsModalSection3DGlobe #globeSetRadiusOfTiles'
).on('input', function () {
if (L_.Globe_) {
if (L_.Globe_ && L_.hasGlobe) {
L_.Globe_.litho.options.radiusOfTiles = parseInt(
$(this).val()
)
Expand Down
52 changes: 31 additions & 21 deletions src/essence/Tools/Identifier/IdentifierTool.js
Original file line number Diff line number Diff line change
Expand Up @@ -113,11 +113,12 @@ var IdentifierTool = {
}, 5)
},
idPixelGlobe: function (e) {
IdentifierTool.idPixel(e, [
Globe_.litho.mouse.lng,
Globe_.litho.mouse.lat,
Globe_.litho.zoom,
])
if (Globe_.litho.mouse)
IdentifierTool.idPixel(e, [
Globe_.litho.mouse.lng,
Globe_.litho.mouse.lat,
Globe_.litho.zoom,
])
},
idValueMap: function (e) {
IdentifierTool.idPixel(
Expand All @@ -127,11 +128,16 @@ var IdentifierTool = {
)
},
idValueGlobe: function (e) {
IdentifierTool.idPixel(
e,
[Globe_.litho.mouse.lng, Globe_.litho.mouse.lat, Globe_.litho.zoom],
true
)
if (Globe_.litho.mouse)
IdentifierTool.idPixel(
e,
[
Globe_.litho.mouse.lng,
Globe_.litho.mouse.lat,
Globe_.litho.zoom,
],
true
)
},
//lnglatzoom is [lng,lat,zoom]
//if trueValue is true, query the data layer for the value, else us the legend if possible
Expand Down Expand Up @@ -418,26 +424,30 @@ function interfaceWithMMWebGIS() {
d3.select('#map').style('cursor', 'crosshair')

Map_.map.on('mousemove', IdentifierTool.idPixelMap)
Globe_.litho
.getContainer()
.addEventListener('mousemove', IdentifierTool.idPixelGlobe, false)
//Globe_.shouldRaycastSprites = false
if (L_.hasGlobe) {
Globe_.litho
.getContainer()
.addEventListener('mousemove', IdentifierTool.idPixelGlobe, false)
//Globe_.shouldRaycastSprites = false

Globe_.litho.getContainer().style.cursor = 'crosshair'
}

Globe_.litho.getContainer().style.cursor = 'crosshair'
//Share everything. Don't take things that aren't yours.
// Put things back where you found them.
function separateFromMMWebGIS() {
CursorInfo.hide()

d3.select('#map').style('cursor', previousCursor)

//Globe_.shouldRaycastSprites = true
Globe_.litho.getContainer().style.cursor = 'default'

Map_.map.off('mousemove', IdentifierTool.idPixelMap)
Globe_.litho
.getContainer()
.removeEventListener('mousemove', IdentifierTool.idPixelGlobe)
//Globe_.shouldRaycastSprites = true
if (L_.hasGlobe) {
Globe_.litho.getContainer().style.cursor = 'default'
Globe_.litho
.getContainer()
.removeEventListener('mousemove', IdentifierTool.idPixelGlobe)
}
}
}

Expand Down
110 changes: 66 additions & 44 deletions src/essence/Tools/Measure/MeasureTool.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import calls from '../../../pre/calls'

import metricsGraphics from '../../../external/MetricsGraphics/metricsgraphics.min'

import {render, unmountComponentAtNode } from 'react-dom'
import { render, unmountComponentAtNode } from 'react-dom'
import React, { useState, useEffect, useRef } from 'react'

import { Chart } from 'chart.js'
Expand Down Expand Up @@ -64,15 +64,25 @@ const Measure = () => {
.on('mousemove', MeasureTool.moveMap)
.on('mouseout', MeasureTool.mouseOutMap)

const globeCont = Globe_.litho.getContainer()
globeCont.addEventListener(
'mousedown',
MeasureTool.mouseDownGlobe,
false
)
globeCont.addEventListener('mouseup', MeasureTool.clickGlobe, false)
globeCont.addEventListener('mousemove', MeasureTool.moveGlobe, false)
globeCont.addEventListener('mouseout', MeasureTool.mouseOutMap, false)
if (L_.hasGlobe) {
const globeCont = Globe_.litho.getContainer()
globeCont.addEventListener(
'mousedown',
MeasureTool.mouseDownGlobe,
false
)
globeCont.addEventListener('mouseup', MeasureTool.clickGlobe, false)
globeCont.addEventListener(
'mousemove',
MeasureTool.moveGlobe,
false
)
globeCont.addEventListener(
'mouseout',
MeasureTool.mouseOutMap,
false
)
}

Viewer_.imageViewerMap.addHandler(
'canvas-click',
Expand Down Expand Up @@ -632,19 +642,29 @@ let MeasureTool = {
.off('mousemove', MeasureTool.moveMap)
.off('mouseout', MeasureTool.mouseOutMap)

const globeCont = Globe_.litho.getContainer()
globeCont.removeEventListener(
'mousedown',
MeasureTool.mouseDownGlobe,
false
)
globeCont.removeEventListener('mouseup', MeasureTool.clickGlobe, false)
globeCont.removeEventListener('mousemove', MeasureTool.moveGlobe, false)
globeCont.removeEventListener(
'mouseout',
MeasureTool.mouseOutMap,
false
)
if (L_.hasGlobe) {
const globeCont = Globe_.litho.getContainer()
globeCont.removeEventListener(
'mousedown',
MeasureTool.mouseDownGlobe,
false
)
globeCont.removeEventListener(
'mouseup',
MeasureTool.clickGlobe,
false
)
globeCont.removeEventListener(
'mousemove',
MeasureTool.moveGlobe,
false
)
globeCont.removeEventListener(
'mouseout',
MeasureTool.mouseOutMap,
false
)
}

Viewer_.imageViewerMap.removeHandler(
'canvas-click',
Expand Down Expand Up @@ -1539,28 +1559,30 @@ function makeGlobePolyline(polylinePoints) {
},
})
}

const globeBCR = Globe_.litho.getContainer()?.getBoundingClientRect() || {}
if (globeBCR.width > 0)
Globe_.litho.addLayer('clamped', {
name: '_measurePolyline',
id: '_measurePolyline',
on: true,
order: 10,
opacity: 1,
minZoom: 0,
maxZoom: 30,
style: {
default: {
weight: 3,
color: 'prop=color',
if (L_.hasGlobe) {
const globeBCR =
Globe_.litho.getContainer()?.getBoundingClientRect() || {}
if (globeBCR.width > 0)
Globe_.litho.addLayer('clamped', {
name: '_measurePolyline',
id: '_measurePolyline',
on: true,
order: 10,
opacity: 1,
minZoom: 0,
maxZoom: 30,
style: {
default: {
weight: 3,
color: 'prop=color',
},
},
},
geojson: {
type: 'FeatureCollection',
features: features,
},
})
geojson: {
type: 'FeatureCollection',
features: features,
},
})
}
}

MeasureTool.init()
Expand Down