Skip to content

Commit 7e2391f

Browse files
committedMay 29, 2015
Merge pull request #2601 from AnalyticalGraphicsInc/fly-on-load
Fly to data on load
2 parents 8ed6774 + 3e4c6f4 commit 7e2391f

File tree

3 files changed

+35
-2
lines changed

3 files changed

+35
-2
lines changed
 

‎Apps/CesiumViewer/CesiumViewer.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ define([
9595
context.throwOnWebGLError = true;
9696
}
9797

98+
var view = endUserOptions.view;
9899
var source = endUserOptions.source;
99100
if (defined(source)) {
100101
var loadPromise;
@@ -120,6 +121,8 @@ define([
120121
var error = 'No entity with id "' + lookAt + '" exists in the provided data source.';
121122
showLoadError(source, error);
122123
}
124+
} else if (!defined(view)) {
125+
viewer.flyTo(dataSource);
123126
}
124127
}).otherwise(function(error) {
125128
showLoadError(source, error);
@@ -142,7 +145,6 @@ define([
142145
}
143146
}
144147

145-
var view = endUserOptions.view;
146148
if (defined(view)) {
147149
var splitQuery = view.split(/[ ,]+/);
148150
if (splitQuery.length > 1) {

‎Source/Widgets/Viewer/viewerDragDropMixin.js

+24-1
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ define([
3333
* @param {Object} [options] Object with the following properties:
3434
* @param {Element|String} [options.dropTarget=viewer.container] The DOM element which will serve as the drop target.
3535
* @param {Boolean} [options.clearOnDrop=true] When true, dropping files will clear all existing data sources first, when false, new data sources will be loaded after the existing ones.
36+
* @param {Boolean} [options.flyToOnDrop=true] When true, dropping files will fly to the data source once it is loaded.
3637
* @param {DefaultProxy} [options.proxy] The proxy to be used for KML network links.
3738
*
3839
* @exception {DeveloperError} Element with id <options.dropTarget> does not exist in the document.
@@ -66,12 +67,16 @@ define([
6667
if (viewer.hasOwnProperty('clearOnDrop')) {
6768
throw new DeveloperError('clearOnDrop is already defined by another mixin.');
6869
}
70+
if (viewer.hasOwnProperty('flyToOnDrop')) {
71+
throw new DeveloperError('flyToOnDrop is already defined by another mixin.');
72+
}
6973
//>>includeEnd('debug');
7074

7175
options = defaultValue(options, defaultValue.EMPTY_OBJECT);
7276

7377
//Local variables to be closed over by defineProperties.
7478
var dropEnabled = true;
79+
var flyToOnDrop = true;
7580
var dropError = new Event();
7681
var clearOnDrop = defaultValue(options.clearOnDrop, true);
7782
var dropTarget = defaultValue(options.dropTarget, viewer.container);
@@ -149,6 +154,20 @@ define([
149154
}
150155
},
151156

157+
/**
158+
* Gets or sets a value indicating if the camera should fly to the data source after it is loaded.
159+
* @memberof viewerDragDropMixin.prototype
160+
* @type {Boolean}
161+
*/
162+
flyToOnDrop : {
163+
get : function() {
164+
return flyToOnDrop;
165+
},
166+
set : function(value) {
167+
flyToOnDrop = value;
168+
}
169+
},
170+
152171
/**
153172
* Gets or sets the proxy to be used for KML.
154173
* @memberof viewerDragDropMixin.prototype
@@ -242,7 +261,11 @@ define([
242261
}
243262

244263
if (defined(loadPromise)) {
245-
viewer.dataSources.add(loadPromise).otherwise(function(error) {
264+
viewer.dataSources.add(loadPromise).then(function(dataSource) {
265+
if (viewer.flyToOnDrop) {
266+
viewer.flyTo(dataSource);
267+
}
268+
}).otherwise(function(error) {
246269
viewer.dropError.raiseEvent(viewer, fileName, error);
247270
});
248271
}

‎Specs/Widgets/Viewer/viewerDragDropMixinSpec.js

+8
Original file line numberDiff line numberDiff line change
@@ -440,6 +440,14 @@ defineSuite([
440440
}).toThrowDeveloperError();
441441
});
442442

443+
it('throws if flyToOnDrop property already added by another mixin.', function() {
444+
viewer = new Viewer(container);
445+
viewer.flyToOnDrop = true;
446+
expect(function() {
447+
viewer.extend(viewerDragDropMixin);
448+
}).toThrowDeveloperError();
449+
});
450+
443451
it('setting dropTarget to undefined throws exception', function() {
444452
viewer = new Viewer(container);
445453
viewer.extend(viewerDragDropMixin);

0 commit comments

Comments
 (0)