94 lines
2.8 KiB
JavaScript
94 lines
2.8 KiB
JavaScript
|
|
/**
|
||
|
|
* Created by Larcius on 18.02.16.
|
||
|
|
*/
|
||
|
|
/*global define*/
|
||
|
|
define([
|
||
|
|
'Cesium/Core/defined',
|
||
|
|
'Cesium/Core/DeveloperError',
|
||
|
|
'CesiumNavigation',
|
||
|
|
'require-less/less!Styles/cesium-navigation'
|
||
|
|
], function(
|
||
|
|
defined,
|
||
|
|
DeveloperError,
|
||
|
|
CesiumNavigation) {
|
||
|
|
'use strict';
|
||
|
|
|
||
|
|
/**
|
||
|
|
* A mixin which adds the Compass/Navigation widget to the Viewer widget.
|
||
|
|
* Rather than being called directly, this function is normally passed as
|
||
|
|
* a parameter to {@link Viewer#extend}, as shown in the example below.
|
||
|
|
* @exports viewerCesiumNavigationMixin
|
||
|
|
*
|
||
|
|
* @param {Viewer} viewer The viewer instance.
|
||
|
|
* @param {{}} options The options.
|
||
|
|
*
|
||
|
|
* @exception {DeveloperError} viewer is required.
|
||
|
|
*
|
||
|
|
* @demo {@link http://localhost:8080/index.html|run local server with examples}
|
||
|
|
*
|
||
|
|
* @example
|
||
|
|
* var viewer = new Cesium.Viewer('cesiumContainer');
|
||
|
|
* viewer.extend(viewerCesiumNavigationMixin);
|
||
|
|
*/
|
||
|
|
function viewerCesiumNavigationMixin(viewer, options) {
|
||
|
|
if (!defined(viewer)) {
|
||
|
|
throw new DeveloperError('viewer is required.');
|
||
|
|
}
|
||
|
|
|
||
|
|
var cesiumNavigation = init(viewer, options);
|
||
|
|
|
||
|
|
cesiumNavigation.addOnDestroyListener((function (viewer) {
|
||
|
|
return function () {
|
||
|
|
delete viewer.cesiumNavigation;
|
||
|
|
};
|
||
|
|
})(viewer));
|
||
|
|
|
||
|
|
Object.defineProperties(viewer, {
|
||
|
|
cesiumNavigation: {
|
||
|
|
configurable: true,
|
||
|
|
get: function () {
|
||
|
|
return viewer.cesiumWidget.cesiumNavigation;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
*
|
||
|
|
* @param {CesiumWidget} cesiumWidget The cesium widget instance.
|
||
|
|
* @param {{}} options The options.
|
||
|
|
*/
|
||
|
|
viewerCesiumNavigationMixin.mixinWidget = function (cesiumWidget, options) {
|
||
|
|
return init.apply(undefined, arguments);
|
||
|
|
};
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @param {Viewer|CesiumWidget} viewerCesiumWidget The Viewer or CesiumWidget instance
|
||
|
|
* @param {{}} options the options
|
||
|
|
*/
|
||
|
|
var init = function (viewerCesiumWidget, options) {
|
||
|
|
var cesiumNavigation = new CesiumNavigation(viewerCesiumWidget, options);
|
||
|
|
|
||
|
|
var cesiumWidget = defined(viewerCesiumWidget.cesiumWidget) ? viewerCesiumWidget.cesiumWidget : viewerCesiumWidget;
|
||
|
|
|
||
|
|
Object.defineProperties(cesiumWidget, {
|
||
|
|
cesiumNavigation: {
|
||
|
|
configurable: true,
|
||
|
|
get: function () {
|
||
|
|
return cesiumNavigation;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
cesiumNavigation.addOnDestroyListener((function (cesiumWidget) {
|
||
|
|
return function () {
|
||
|
|
delete cesiumWidget.cesiumNavigation;
|
||
|
|
};
|
||
|
|
})(cesiumWidget));
|
||
|
|
|
||
|
|
return cesiumNavigation;
|
||
|
|
};
|
||
|
|
|
||
|
|
return viewerCesiumNavigationMixin;
|
||
|
|
});
|