Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
this.eventHelper.add(this.terria.afterWidgetChanged, function () {
if (defined(this._removeSubscription)) {
this._removeSubscription()
this._removeSubscription = undefined
}
}, this)
// this.terria.beforeWidgetChanged.addEventListener(function () {
// Register custom Knockout.js bindings. If you're not using the TerriaJS user interface, you can remove this.
registerKnockoutBindings()
if (!defined(this.terria.options.enableDistanceLegend) || this.terria.options.enableDistanceLegend) {
this.distanceLegendDiv = document.createElement('div')
container.appendChild(this.distanceLegendDiv)
this.distanceLegendDiv.setAttribute('id', 'distanceLegendDiv')
this.distanceLegendViewModel = DistanceLegendViewModel.create({
container: this.distanceLegendDiv,
terria: this.terria,
mapElement: container,
enableDistanceLegend: true
})
}
if ((!defined(this.terria.options.enableZoomControls) || this.terria.options.enableZoomControls) && (!defined(this.terria.options.enableCompass) || this.terria.options.enableCompass)) {
this.navigationDiv = document.createElement('div')
this.navigationDiv.setAttribute('id', 'navigationDiv')
container.appendChild(this.navigationDiv)
// Create the navigation controls.
this.navigationViewModel = NavigationViewModel.create({
container: this.navigationDiv,
terria: this.terria,
enableZoomControls: true,
enableCompass: true
})
} else if ((defined(this.terria.options.enableZoomControls) && !this.terria.options.enableZoomControls) && (!defined(this.terria.options.enableCompass) || this.terria.options.enableCompass)) {
this.navigationDiv = document.createElement('div')
this.navigationDiv.setAttribute('id', 'navigationDiv')
container.appendChild(this.navigationDiv)
// Create the navigation controls.
this.navigationViewModel = NavigationViewModel.create({
var NavigationViewModel = function (options) {
this.terria = options.terria
this.eventHelper = new EventHelper()
this.enableZoomControls = (defined(options.enableZoomControls)) ? options.enableZoomControls : true
this.enableCompass = (defined(options.enableCompass)) ? options.enableCompass : true
this.navigationLocked = false
// if (this.showZoomControls)
// {
this.controls = options.controls
if (!defined(this.controls)) {
this.controls = [
new ZoomNavigationControl(this.terria, true),
new ResetViewNavigationControl(this.terria),
new ZoomNavigationControl(this.terria, false)
]
}
// }
this.svgCompassOuterRing = svgCompassOuterRing
this.svgCompassGyro = svgCompassGyro
function initialize(viewerCesiumWidget, options) {
if (!defined(viewerCesiumWidget)) {
throw new DeveloperError('CesiumWidget or Viewer is required.')
}
// options = defaultValue(options, defaultValue.EMPTY_OBJECT);
var cesiumWidget = defined(viewerCesiumWidget.cesiumWidget) ? viewerCesiumWidget.cesiumWidget : viewerCesiumWidget
var container = document.createElement('div')
container.className = 'cesium-widget-cesiumNavigationContainer'
cesiumWidget.container.appendChild(container)
this.terria = viewerCesiumWidget
this.terria.options = (defined(options)) ? options : {}
this.terria.afterWidgetChanged = new CesiumEvent()
this.terria.beforeWidgetChanged = new CesiumEvent()
this.container = container
if (!sscc.enableTilt || !sscc.enableRotate) {
return
}
break
case SceneMode.SCENE2D:
if (!sscc.enableTranslate) {
return
}
break
}
// Remove existing event handlers, if any.
document.removeEventListener('mousemove', viewModel.orbitMouseMoveFunction, false)
document.removeEventListener('mouseup', viewModel.orbitMouseUpFunction, false)
if (defined(viewModel.orbitTickFunction)) {
viewModel.terria.clock.onTick.removeEventListener(viewModel.orbitTickFunction)
}
viewModel.orbitMouseMoveFunction = undefined
viewModel.orbitMouseUpFunction = undefined
viewModel.orbitTickFunction = undefined
viewModel.isOrbiting = true
viewModel.orbitLastTimestamp = getTimestamp()
var camera = scene.camera
if (defined(viewModel.terria.trackedEntity)) {
// when tracking an entity simply use that reference frame
viewModel.orbitFrame = undefined
viewModel.orbitIsLook = false
viewModel.rotateIsLook = true
} else {
viewModel.rotateFrame = Transforms.eastNorthUpToFixedFrame(viewCenter, scene.globe.ellipsoid, newTransformScratch)
viewModel.rotateIsLook = false
}
}
var oldTransform
if (defined(viewModel.rotateFrame)) {
oldTransform = Matrix4.clone(camera.transform, oldTransformScratch)
camera.lookAtTransform(viewModel.rotateFrame)
}
viewModel.rotateInitialCameraAngle = -camera.heading
if (defined(viewModel.rotateFrame)) {
camera.lookAtTransform(oldTransform)
}
viewModel.rotateMouseMoveFunction = function (e) {
var compassRectangle = compassElement.getBoundingClientRect()
var center = new Cartesian2((compassRectangle.right - compassRectangle.left) / 2.0, (compassRectangle.bottom - compassRectangle.top) / 2.0)
var clickLocation = new Cartesian2(e.clientX - compassRectangle.left, e.clientY - compassRectangle.top)
var vector = Cartesian2.subtract(clickLocation, center, vectorScratch)
var angle = Math.atan2(-vector.y, vector.x)
var angleDifference = angle - viewModel.rotateInitialCursorAngle
var newCameraAngle = CesiumMath.zeroToTwoPi(viewModel.rotateInitialCameraAngle - angleDifference)
var camera = viewModel.terria.scene.camera
var oldTransform
_.prototype.getGeometry = function() {
if (!(Cesium.defined(this.center) && Cesium.defined(this.radius))) {
return
}
return new Cesium.CircleGeometry({
center: this.center,
radius: this.radius,
height: this.height,
vertexFormat: Cesium.EllipsoidSurfaceAppearance.VERTEX_FORMAT,
stRotation: this.textureRotationAngle,
ellipsoid: this.ellipsoid,
granularity: this.granularity,
})
}
function _(options) {
if (
!(
Cesium.defined(options.center) &&
Cesium.defined(options.semiMajorAxis) &&
Cesium.defined(options.semiMinorAxis)
)
) {
throw new Cesium.DeveloperError(
'Center and semi major and semi minor axis are required'
)
}
options = copyOptions(options, defaultEllipseOptions)
this.initialiseOptions(options)
}
var DistanceLegendViewModel = function (options) {
if (!defined(options) || !defined(options.terria)) {
throw new DeveloperError('options.terria is required.')
}
this.terria = options.terria
this._removeSubscription = undefined
this._lastLegendUpdate = undefined
this.eventHelper = new EventHelper()
this.distanceLabel = undefined
this.barWidth = undefined
this.enableDistanceLegend = (defined(options.enableDistanceLegend)) ? options.enableDistanceLegend : true
Knockout.track(this, ['distanceLabel', 'barWidth'])
this.eventHelper.add(this.terria.afterWidgetChanged, function () {