Skip to content

Commit

Permalink
Move GoogleTilesRenderer into core (#361)
Browse files Browse the repository at this point in the history
* Add google tiles renderer to core

* Update demos

* README update
  • Loading branch information
gkjohnson committed Jun 13, 2023
1 parent d016fff commit cb7a702
Show file tree
Hide file tree
Showing 8 changed files with 63 additions and 8 deletions.
30 changes: 30 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -677,6 +677,36 @@ schedulingCallback = requestAnimationFrame : ( cb : Function ) => void

A function used for scheduling when to run jobs next so more work doesn't happen in a single frame than there is time for -- defaults to the next frame. This should be overriden in scenarios where requestAnimationFrame is not reliable, such as when running in WebXR. See the VR demo for one example on how to handle this with WebXR.

## GoogleTilesRenderer

_extends [TilesRenderer](#TilesRenderer)_

Variant of the TilesRenderer designed to easily support [Google's Photorealistic 3D Tiles API](https://cloud.google.com/blog/products/maps-platform/create-immersive-3d-map-experiences-photorealistic-3d-tiles). Handles adding api key to all requests, reading tile credits, and initializes tile set traversal options to reasonable defaults for the globe.

### constructor

```js
constructor( apiKey: String )
```

Takes the Google Photorealistic Tiles API Key.

### .getCreditsString

```js
getCreditsString(): String;
```

Returns a string of unique credits for all the tiles currently displayed.

### .setLatLonToYUp

```js
setLatLonToYUp( lat: Number, lon: Number ): void;
```

Rotates and positions the local transformation of the tile group object so the surface of the globe ellipsoid at the specified latitude and longitude faces Y+.

## LRUCache

Utility class for the TilesRenderer to keep track of currently used items so rendered items will not be unloaded.
Expand Down
3 changes: 1 addition & 2 deletions example/googleMapsAerial.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { GeoUtils, WGS84_ELLIPSOID } from '../src/index.js';
import { DebugGoogleTilesRenderer as GoogleTilesRenderer } from './src/GoogleTilesRenderer.js';
import { GeoUtils, WGS84_ELLIPSOID, GoogleTilesRenderer } from '../src/index.js';
import {
Scene,
WebGLRenderer,
Expand Down
3 changes: 1 addition & 2 deletions example/googleMapsExample.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { GeoUtils, WGS84_ELLIPSOID, WGS84_RADIUS } from '../src/index.js';
import { DebugGoogleTilesRenderer as GoogleTilesRenderer } from './src/GoogleTilesRenderer.js';
import { GeoUtils, WGS84_ELLIPSOID, WGS84_RADIUS, DebugGoogleTilesRenderer as GoogleTilesRenderer } from '../src/index.js';
import {
Scene,
WebGLRenderer,
Expand Down
1 change: 1 addition & 0 deletions src/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ export { Ellipsoid } from './three/math/Ellipsoid';
export { EllipsoidRegion } from './three/math/EllipsoidRegion';
export * as GeoUtils from './three/math/GeoUtils';
export * from './three/math/GeoConstants';
export * from './three/renderers/GoogleTilesRenderer';

export { TilesRendererBase } from './base/TilesRendererBase';
export { Tile } from './base/Tile';
Expand Down
1 change: 1 addition & 0 deletions src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ export { Ellipsoid } from './three/math/Ellipsoid.js';
export { EllipsoidRegion } from './three/math/EllipsoidRegion.js';
export * as GeoUtils from './three/math/GeoUtils.js';
export * from './three/math/GeoConstants.js';
export * from './three/renderers/GoogleTilesRenderer.js';

export { TilesRendererBase } from './base/TilesRendererBase.js';
export { LoaderBase } from './base/LoaderBase.js';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
export class MapsTilesCredits {
export class GoogleMapsTilesCredits {

constructor() {

Expand Down
23 changes: 23 additions & 0 deletions src/three/renderers/GoogleTilesRenderer.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import { TilesRenderer } from '../TilesRenderer';
import { DebugTilesRenderer } from '../DebugTilesRenderer';
import { Ellipsoid } from '../math/Ellipsoid';

export class GoogleTilesRenderer extends TilesRenderer {

ellipsoid: Ellipsoid;

constructor( apiKey: String );
getCreditsString(): String;
setLatLonToYUp( lat: Number, lon: Number ): void;

}

export class DebugGoogleTilesRenderer extends DebugTilesRenderer {

ellipsoid: Ellipsoid;

constructor( apiKey: String );
getCreditsString(): String;
setLatLonToYUp( lat: Number, lon: Number ): void;

}
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import { Matrix4 } from 'three';
import { TilesRenderer, DebugTilesRenderer, WGS84_ELLIPSOID } from '../../src/index.js';
import { MapsTilesCredits } from './MapsTilesCredits.js';
import { TilesRenderer } from '../TilesRenderer.js';
import { DebugTilesRenderer } from '../DebugTilesRenderer.js';
import { WGS84_ELLIPSOID } from '../math/GeoConstants.js';
import { GoogleMapsTilesCredits } from './GoogleMapsTilesCredits.js';

const API_ORIGIN = 'https://tile.googleapis.com';
const TILE_URL = `${ API_ORIGIN }/v1/3dtiles/root.json`;
Expand All @@ -17,7 +19,7 @@ const GoogleTilesRendererMixin = base => class extends base {

super( new URL( `${ baseUrl }?key=${ apiKey }` ).toString() );

this._credits = new MapsTilesCredits();
this._credits = new GoogleMapsTilesCredits();

this.fetchOptions.mode = 'cors';
this.parseQueue.maxJobs = 7;
Expand Down

0 comments on commit cb7a702

Please sign in to comment.