Skip to content

Commit a908f1d

Browse files
committed
move attribution from constructor to requestImage
1 parent 8888fa5 commit a908f1d

File tree

1 file changed

+15
-3
lines changed

1 file changed

+15
-3
lines changed

packages/engine/Source/Scene/Google2DImageryProvider.js

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -124,8 +124,6 @@ function Google2DImageryProvider(options) {
124124
// This will be defined for ion resources
125125
this._tileCredits = resource.credits;
126126
this._attributionsByLevel = undefined;
127-
// Asynchronously request and populate _attributionsByLevel
128-
this.getViewportCredits();
129127
}
130128

131129
Object.defineProperties(Google2DImageryProvider.prototype, {
@@ -485,7 +483,21 @@ Google2DImageryProvider.prototype.requestImage = function (
485483
level,
486484
request,
487485
) {
488-
return this._imageryProvider.requestImage(x, y, level, request);
486+
const promise = this._imageryProvider.requestImage(x, y, level, request);
487+
488+
// If the requestImage call returns undefined, it couldn't be scheduled this frame. Make sure to return undefined so this can be handled upstream.
489+
if (!defined(promise)) {
490+
return undefined;
491+
}
492+
493+
// Asynchronously request and populate _attributionsByLevel if it hasn't been already. We do this here so that the promise can be properly awaited.
494+
if (promise && !defined(this._attributionsByLevel)) {
495+
return Promise.all([promise, this.getViewportCredits()]).then(
496+
(results) => results[0],
497+
);
498+
}
499+
500+
return promise;
489501
};
490502

491503
/**

0 commit comments

Comments
 (0)