From dd99f6a2ed246029313ec51c99f2acb8f4c54756 Mon Sep 17 00:00:00 2001 From: William French Date: Fri, 6 Mar 2026 09:41:38 -0800 Subject: [PATCH 01/11] feat: Migrates the deckgl-points sample. --- samples/deckgl-points/README.md | 41 ++++++++++++++++ samples/deckgl-points/index.html | 68 +++++++++++++++++++++++++++ samples/deckgl-points/index.ts | 73 +++++++++++++++++++++++++++++ samples/deckgl-points/package.json | 14 ++++++ samples/deckgl-points/style.css | 36 ++++++++++++++ samples/deckgl-points/tsconfig.json | 17 +++++++ 6 files changed, 249 insertions(+) create mode 100644 samples/deckgl-points/README.md create mode 100644 samples/deckgl-points/index.html create mode 100644 samples/deckgl-points/index.ts create mode 100644 samples/deckgl-points/package.json create mode 100644 samples/deckgl-points/style.css create mode 100644 samples/deckgl-points/tsconfig.json diff --git a/samples/deckgl-points/README.md b/samples/deckgl-points/README.md new file mode 100644 index 000000000..9c5043695 --- /dev/null +++ b/samples/deckgl-points/README.md @@ -0,0 +1,41 @@ +# Google Maps JavaScript Sample + +## deckgl-points + +This example visualizes recent earthquakes using the deck.gl GeoJsonLayer and a ScatterPlot of earthquakes. + +## Setup + +### Before starting run: + +`npm i` + +### Run an example on a local web server + +`cd samples/deckgl-points` +`npm start` + +### Build an individual example + +`cd samples/deckgl-points` +`npm run build` + +From 'samples': + +`npm run build --workspace=deckgl-points/` + +### Build all of the examples. + +From 'samples': + +`npm run build-all` + +### Run lint to check for problems + +`cd samples/deckgl-points` +`npx eslint index.ts` + +## Feedback + +For feedback related to this sample, please open a new issue on +[GitHub](https://github.com/googlemaps-samples/js-api-samples/issues). diff --git a/samples/deckgl-points/index.html b/samples/deckgl-points/index.html new file mode 100644 index 000000000..59245b8d7 --- /dev/null +++ b/samples/deckgl-points/index.html @@ -0,0 +1,68 @@ + + + + + + deck.gl and Google Maps Platform + + + + + + + + + + + +
+
+
+
+
+
+ +
+
+ +
+
+ + +
+ + + + + + diff --git a/samples/deckgl-points/index.ts b/samples/deckgl-points/index.ts new file mode 100644 index 000000000..fb9c226b0 --- /dev/null +++ b/samples/deckgl-points/index.ts @@ -0,0 +1,73 @@ +/** + * @license + * Copyright 2019 Google LLC. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0 + */ + +// [START maps_deckgl_points] +// TODO Use imports when Deck.gl works in more bundlers +// https://github.com/visgl/deck.gl/issues/6351#issuecomment-1079424167 + +import type * as GeoJSON from "geojson"; +// import { GeoJsonLayer } from "deck.gl"; +// import { GoogleMapsOverlay } from "@deck.gl/google-maps"; + +const GeoJsonLayer = deck.GeoJsonLayer; +const GoogleMapsOverlay = deck.GoogleMapsOverlay; + +type Properties = { mag: number }; +type Feature = GeoJSON.Feature; + +// Initialize and add the map +function initMap(): void { + const map = new google.maps.Map( + document.getElementById("map") as HTMLElement, + { + center: { lat: 40, lng: -110 }, + zoom: 4, + } + ); + + const deckOverlay = new GoogleMapsOverlay({ + layers: [ + new GeoJsonLayer({ + id: "earthquakes", + data: "https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_month.geojson", + filled: true, + pointRadiusMinPixels: 2, + pointRadiusMaxPixels: 200, + opacity: 0.4, + pointRadiusScale: 0.3, + getRadius: (f: Feature) => Math.pow(10, f.properties.mag), + getFillColor: [255, 70, 30, 180], + autoHighlight: true, + transitions: { + getRadius: { + type: "spring", + stiffness: 0.1, + damping: 0.15, + enter: () => [0], // grow from size 0, + duration: 10000, + }, + }, + onDataLoad: () => { + /* eslint-disable no-undef */ + // @ts-ignore defined in include + progress.done(); // hides progress bar + /* eslint-enable no-undef */ + }, + }), + ], + }); + + deckOverlay.setMap(map); +} + +declare global { + interface Window { + initMap: () => void; + } +} +window.initMap = initMap; +// [END maps_deckgl_points] +export {}; diff --git a/samples/deckgl-points/package.json b/samples/deckgl-points/package.json new file mode 100644 index 000000000..8fc6d21c3 --- /dev/null +++ b/samples/deckgl-points/package.json @@ -0,0 +1,14 @@ +{ + "name": "@js-api-samples/deckgl-points", + "version": "1.0.0", + "scripts": { + "build": "tsc && bash ../jsfiddle.sh deckgl-points && bash ../app.sh deckgl-points && bash ../docs.sh deckgl-points && npm run build:vite --workspace=. && bash ../dist.sh deckgl-points", + "test": "tsc && npm run build:vite --workspace=.", + "start": "tsc && vite build --base './' && vite", + "build:vite": "vite build --base './'", + "preview": "vite preview" + }, + "dependencies": { + + } +} diff --git a/samples/deckgl-points/style.css b/samples/deckgl-points/style.css new file mode 100644 index 000000000..76ede1d5b --- /dev/null +++ b/samples/deckgl-points/style.css @@ -0,0 +1,36 @@ +/** + * @license + * Copyright 2019 Google LLC. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0 + */ +:root { + --mdc-theme-primary: #1a73e8; + --mdc-theme-secondary: #rgb(225, 245, 254); + --mdc-theme-on-primary: #fff; + --mdc-theme-on-secondary: rgb(1, 87, 155); +} + +.mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label { + color: var(--mdc-theme-primary); +} + +/* [START maps_deckgl_points] */ +/* + * Always set the map height explicitly to define the size of the div element + * that contains the map. + */ +#map { + height: 100%; +} + +/* + * Optional: Makes the sample page fill the window. + */ +html, +body { + height: 100%; + margin: 0; + padding: 0; +} + +/* [END maps_deckgl_points] */ \ No newline at end of file diff --git a/samples/deckgl-points/tsconfig.json b/samples/deckgl-points/tsconfig.json new file mode 100644 index 000000000..366aabb04 --- /dev/null +++ b/samples/deckgl-points/tsconfig.json @@ -0,0 +1,17 @@ +{ + "compilerOptions": { + "module": "esnext", + "target": "esnext", + "strict": true, + "noImplicitAny": false, + "lib": [ + "es2015", + "esnext", + "es6", + "dom", + "dom.iterable" + ], + "moduleResolution": "Node", + "jsx": "preserve" + } +} From b4d234ecb81c667dc4510ebef2ae4ee874129d43 Mon Sep 17 00:00:00 2001 From: William French Date: Thu, 12 Mar 2026 13:42:14 -0700 Subject: [PATCH 02/11] feat: Migrates the deckgl-points sample. --- samples/deckgl-points/index.html | 71 ++++--------------- samples/deckgl-points/index.ts | 106 +++++++++++++---------------- samples/deckgl-points/package.json | 5 +- samples/deckgl-points/style.css | 28 +++----- 4 files changed, 75 insertions(+), 135 deletions(-) diff --git a/samples/deckgl-points/index.html b/samples/deckgl-points/index.html index 59245b8d7..e3113c409 100644 --- a/samples/deckgl-points/index.html +++ b/samples/deckgl-points/index.html @@ -1,68 +1,21 @@ - - deck.gl and Google Maps Platform - - - - - - - - - - - -
-
-
-
-
-
- -
-
- -
-
- - -
- - - - + + deck.gl and Google Maps Platform + + + + + + + + diff --git a/samples/deckgl-points/index.ts b/samples/deckgl-points/index.ts index fb9c226b0..7b9df8c83 100644 --- a/samples/deckgl-points/index.ts +++ b/samples/deckgl-points/index.ts @@ -1,73 +1,65 @@ +/* +- TODO: Refactor to use gmp-map and dynamic library loading. +- NOTE: Do NOT move data locally for this one; it's meant to be dynamic as USGS updates the data monthly. + Generally I'd say only shift the data source if it's hosted on a CDN. +- TODO: Not sure if progress bar is something we want to document. Maybe if there were way more data? +*/ + /** * @license - * Copyright 2019 Google LLC. All Rights Reserved. + * Copyright 2026 Google LLC. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0 */ // [START maps_deckgl_points] -// TODO Use imports when Deck.gl works in more bundlers -// https://github.com/visgl/deck.gl/issues/6351#issuecomment-1079424167 - -import type * as GeoJSON from "geojson"; -// import { GeoJsonLayer } from "deck.gl"; -// import { GoogleMapsOverlay } from "@deck.gl/google-maps"; - -const GeoJsonLayer = deck.GeoJsonLayer; -const GoogleMapsOverlay = deck.GoogleMapsOverlay; +import type * as GeoJSON from 'geojson'; +import { GoogleMapsOverlay } from '@deck.gl/google-maps'; +import { GeoJsonLayer } from '@deck.gl/layers'; type Properties = { mag: number }; type Feature = GeoJSON.Feature; +const mapElement = document.querySelector('gmp-map') as google.maps.MapElement; +let innerMap: google.maps.Map; + // Initialize and add the map -function initMap(): void { - const map = new google.maps.Map( - document.getElementById("map") as HTMLElement, - { - center: { lat: 40, lng: -110 }, - zoom: 4, - } - ); +async function initMap() { + // Request the needed libraries. + await google.maps.importLibrary('maps'); - const deckOverlay = new GoogleMapsOverlay({ - layers: [ - new GeoJsonLayer({ - id: "earthquakes", - data: "https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_month.geojson", - filled: true, - pointRadiusMinPixels: 2, - pointRadiusMaxPixels: 200, - opacity: 0.4, - pointRadiusScale: 0.3, - getRadius: (f: Feature) => Math.pow(10, f.properties.mag), - getFillColor: [255, 70, 30, 180], - autoHighlight: true, - transitions: { - getRadius: { - type: "spring", - stiffness: 0.1, - damping: 0.15, - enter: () => [0], // grow from size 0, - duration: 10000, - }, - }, - onDataLoad: () => { - /* eslint-disable no-undef */ - // @ts-ignore defined in include - progress.done(); // hides progress bar - /* eslint-enable no-undef */ - }, - }), - ], - }); + innerMap = await mapElement.innerMap; - deckOverlay.setMap(map); -} + const deckOverlay = new GoogleMapsOverlay({ + layers: [ + new GeoJsonLayer({ + id: 'earthquakes', + data: 'https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_month.geojson', + filled: true, + pointRadiusMinPixels: 2, + pointRadiusMaxPixels: 200, + opacity: 0.4, + pointRadiusScale: 0.3, + getPointRadius: (f: Feature) => Math.pow(10, f.properties.mag), + getFillColor: [255, 70, 30, 180], + autoHighlight: true, + transitions: { + getPointRadius: { + type: 'spring', + stiffness: 0.1, + damping: 0.15, + enter: () => [0], // grow from size 0, + duration: 10000, + }, + }, + onDataLoad: () => { + console.log('Data is loaded.'); + }, + }), + ], + }); -declare global { - interface Window { - initMap: () => void; - } + deckOverlay.setMap(innerMap); } -window.initMap = initMap; + +initMap(); // [END maps_deckgl_points] -export {}; diff --git a/samples/deckgl-points/package.json b/samples/deckgl-points/package.json index 8fc6d21c3..18c47c9c8 100644 --- a/samples/deckgl-points/package.json +++ b/samples/deckgl-points/package.json @@ -9,6 +9,9 @@ "preview": "vite preview" }, "dependencies": { - + "@deck.gl/core": "^8.9.0", + "@deck.gl/google-maps": "^8.9.0", + "@deck.gl/layers": "^8.9.0", + "deck.gl": "^8.9.0" } } diff --git a/samples/deckgl-points/style.css b/samples/deckgl-points/style.css index 76ede1d5b..76267c1bc 100644 --- a/samples/deckgl-points/style.css +++ b/samples/deckgl-points/style.css @@ -1,36 +1,28 @@ /** * @license - * Copyright 2019 Google LLC. All Rights Reserved. + * Copyright 2026 Google LLC. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0 */ :root { - --mdc-theme-primary: #1a73e8; - --mdc-theme-secondary: #rgb(225, 245, 254); - --mdc-theme-on-primary: #fff; - --mdc-theme-on-secondary: rgb(1, 87, 155); + --mdc-theme-primary: #1a73e8; + --mdc-theme-secondary: #rgb(225, 245, 254); + --mdc-theme-on-primary: #fff; + --mdc-theme-on-secondary: rgb(1, 87, 155); } .mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label { - color: var(--mdc-theme-primary); + color: var(--mdc-theme-primary); } /* [START maps_deckgl_points] */ -/* - * Always set the map height explicitly to define the size of the div element - * that contains the map. - */ -#map { - height: 100%; -} - /* * Optional: Makes the sample page fill the window. */ html, body { - height: 100%; - margin: 0; - padding: 0; + height: 100%; + margin: 0; + padding: 0; } -/* [END maps_deckgl_points] */ \ No newline at end of file +/* [END maps_deckgl_points] */ From 1a22286419ebd09c3ae43725b0a0aaf1ef94fd38 Mon Sep 17 00:00:00 2001 From: William French Date: Fri, 13 Mar 2026 12:49:02 -0700 Subject: [PATCH 03/11] Remove deck.gl dependencies from package.json These were added during troubleshooting, but it appears they're not needed. --- samples/deckgl-points/package.json | 6 ------ 1 file changed, 6 deletions(-) diff --git a/samples/deckgl-points/package.json b/samples/deckgl-points/package.json index 18c47c9c8..3d677f9ac 100644 --- a/samples/deckgl-points/package.json +++ b/samples/deckgl-points/package.json @@ -7,11 +7,5 @@ "start": "tsc && vite build --base './' && vite", "build:vite": "vite build --base './'", "preview": "vite preview" - }, - "dependencies": { - "@deck.gl/core": "^8.9.0", - "@deck.gl/google-maps": "^8.9.0", - "@deck.gl/layers": "^8.9.0", - "deck.gl": "^8.9.0" } } From 8bd27cd03c6330ddd276bc2ac9d7f52220b1ee7a Mon Sep 17 00:00:00 2001 From: William French Date: Fri, 13 Mar 2026 12:55:50 -0700 Subject: [PATCH 04/11] Add back dependencies Was I wrong to remove them? --- samples/deckgl-points/package.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/samples/deckgl-points/package.json b/samples/deckgl-points/package.json index 3d677f9ac..18c47c9c8 100644 --- a/samples/deckgl-points/package.json +++ b/samples/deckgl-points/package.json @@ -7,5 +7,11 @@ "start": "tsc && vite build --base './' && vite", "build:vite": "vite build --base './'", "preview": "vite preview" + }, + "dependencies": { + "@deck.gl/core": "^8.9.0", + "@deck.gl/google-maps": "^8.9.0", + "@deck.gl/layers": "^8.9.0", + "deck.gl": "^8.9.0" } } From 769cd981d14621157db2f1e4e0a707f5d60f6b18 Mon Sep 17 00:00:00 2001 From: William French Date: Wed, 18 Mar 2026 09:01:04 -0700 Subject: [PATCH 05/11] Upgrade Deck.gl dependencies to version 9.2.10 Updated Deck.gl dependencies to version 9.2.10. If ALL of them don't have the same dependencies, BAD THINGS HAPPEN. --- samples/deckgl-points/package.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/samples/deckgl-points/package.json b/samples/deckgl-points/package.json index 18c47c9c8..2c519283f 100644 --- a/samples/deckgl-points/package.json +++ b/samples/deckgl-points/package.json @@ -9,9 +9,9 @@ "preview": "vite preview" }, "dependencies": { - "@deck.gl/core": "^8.9.0", - "@deck.gl/google-maps": "^8.9.0", - "@deck.gl/layers": "^8.9.0", - "deck.gl": "^8.9.0" + "@deck.gl/core": "^9.2.10", + "@deck.gl/google-maps": "^9.2.10", + "@deck.gl/layers": "^9.2.10", + "deck.gl": "^9.2.10" } } From d930f4cac0a2a0e517b04affd988881509dddd38 Mon Sep 17 00:00:00 2001 From: William French Date: Wed, 18 Mar 2026 09:09:28 -0700 Subject: [PATCH 06/11] Add luma.gl dependencies to package.json Added dependencies for @luma.gl/core and @luma.gl/engine. --- samples/deckgl-points/package.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/samples/deckgl-points/package.json b/samples/deckgl-points/package.json index 2c519283f..e326bf887 100644 --- a/samples/deckgl-points/package.json +++ b/samples/deckgl-points/package.json @@ -12,6 +12,8 @@ "@deck.gl/core": "^9.2.10", "@deck.gl/google-maps": "^9.2.10", "@deck.gl/layers": "^9.2.10", - "deck.gl": "^9.2.10" + "deck.gl": "^9.2.10", + "@luma.gl/core": "^9.2.0", + "@luma.gl/engine": "^9.2.0" } } From b6c39ec35b150a6ce12505a02350cf5ab8607fb4 Mon Sep 17 00:00:00 2001 From: William French Date: Mon, 23 Mar 2026 10:36:57 -0700 Subject: [PATCH 07/11] Remove deck.gl and luma.gl dependencies Removed dependencies related to deck.gl and luma.gl. Luma is a subdependency and shouldn't need to be declared; deck.gl has been moved to the root package.json file. --- samples/deckgl-points/package.json | 8 -------- 1 file changed, 8 deletions(-) diff --git a/samples/deckgl-points/package.json b/samples/deckgl-points/package.json index e326bf887..3d677f9ac 100644 --- a/samples/deckgl-points/package.json +++ b/samples/deckgl-points/package.json @@ -7,13 +7,5 @@ "start": "tsc && vite build --base './' && vite", "build:vite": "vite build --base './'", "preview": "vite preview" - }, - "dependencies": { - "@deck.gl/core": "^9.2.10", - "@deck.gl/google-maps": "^9.2.10", - "@deck.gl/layers": "^9.2.10", - "deck.gl": "^9.2.10", - "@luma.gl/core": "^9.2.0", - "@luma.gl/engine": "^9.2.0" } } From fd5a2c7c6a44c0c179c7b3be035d547700db81b7 Mon Sep 17 00:00:00 2001 From: William French Date: Tue, 24 Mar 2026 13:44:31 -0700 Subject: [PATCH 08/11] Add dependencies back to local project My experiment of having them at root failed. --- samples/deckgl-points/package.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/samples/deckgl-points/package.json b/samples/deckgl-points/package.json index 3d677f9ac..3f6b21022 100644 --- a/samples/deckgl-points/package.json +++ b/samples/deckgl-points/package.json @@ -7,5 +7,11 @@ "start": "tsc && vite build --base './' && vite", "build:vite": "vite build --base './'", "preview": "vite preview" + }, + "dependencies": { + "@deck.gl/core": "^9.2.10", + "@deck.gl/google-maps": "^9.2.10", + "@deck.gl/layers": "^9.2.10", + "deck.gl": "^9.2.11" } } From 3845cd2c36421ce48b2ad0a479d5b692630e05ef Mon Sep 17 00:00:00 2001 From: William French Date: Wed, 25 Mar 2026 11:35:49 -0700 Subject: [PATCH 09/11] Improve feature validation for earthquake rendering Refactor point radius and fill color logic to validate earthquake features. --- samples/deckgl-points/index.ts | 40 ++++++++++++++++++++++++---------- 1 file changed, 29 insertions(+), 11 deletions(-) diff --git a/samples/deckgl-points/index.ts b/samples/deckgl-points/index.ts index 7b9df8c83..6d3a130c8 100644 --- a/samples/deckgl-points/index.ts +++ b/samples/deckgl-points/index.ts @@ -1,10 +1,3 @@ -/* -- TODO: Refactor to use gmp-map and dynamic library loading. -- NOTE: Do NOT move data locally for this one; it's meant to be dynamic as USGS updates the data monthly. - Generally I'd say only shift the data source if it's hosted on a CDN. -- TODO: Not sure if progress bar is something we want to document. Maybe if there were way more data? -*/ - /** * @license * Copyright 2026 Google LLC. All Rights Reserved. @@ -12,16 +5,34 @@ */ // [START maps_deckgl_points] -import type * as GeoJSON from 'geojson'; +//import type * as GeoJSON from 'geojson'; +import { Feature } from 'geojson'; import { GoogleMapsOverlay } from '@deck.gl/google-maps'; import { GeoJsonLayer } from '@deck.gl/layers'; type Properties = { mag: number }; -type Feature = GeoJSON.Feature; +//type Feature = GeoJSON.Feature; const mapElement = document.querySelector('gmp-map') as google.maps.MapElement; let innerMap: google.maps.Map; +interface EarthquakeProperties { + mag: number; + place: string; + time: number; +} + +/** + * Validates that a feature has the properties we need for rendering. + */ +function isEarthquake(f: Feature): f is Feature & { properties: EarthquakeProperties } { + return ( + f.properties !== null && + typeof f.properties === 'object' && + typeof (f.properties as any).mag === 'number' + ); +} + // Initialize and add the map async function initMap() { // Request the needed libraries. @@ -39,8 +50,15 @@ async function initMap() { pointRadiusMaxPixels: 200, opacity: 0.4, pointRadiusScale: 0.3, - getPointRadius: (f: Feature) => Math.pow(10, f.properties.mag), - getFillColor: [255, 70, 30, 180], + getPointRadius: (f: Feature): number => { + if (isEarthquake(f)) { + return Math.pow(10, f.properties.mag); + } + return 0; // Fallback for invalid data. + }, + getFillColor: (f: Feature): [number, number, number, number] => { + return [255, 70, 30, 180]; // Default color for other earthquakes. + }, autoHighlight: true, transitions: { getPointRadius: { From db123b3e6b9d0e8509ba48f0f9482907a7bfa66e Mon Sep 17 00:00:00 2001 From: William French Date: Wed, 25 Mar 2026 11:36:08 -0700 Subject: [PATCH 10/11] Remove unused Feature type definition Removed commented-out type definition for Feature. --- samples/deckgl-points/index.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/samples/deckgl-points/index.ts b/samples/deckgl-points/index.ts index 6d3a130c8..9b80fb8c7 100644 --- a/samples/deckgl-points/index.ts +++ b/samples/deckgl-points/index.ts @@ -11,7 +11,6 @@ import { GoogleMapsOverlay } from '@deck.gl/google-maps'; import { GeoJsonLayer } from '@deck.gl/layers'; type Properties = { mag: number }; -//type Feature = GeoJSON.Feature; const mapElement = document.querySelector('gmp-map') as google.maps.MapElement; let innerMap: google.maps.Map; From 99c85b3bcd3fbb11e0e7f04472196a4da1b50712 Mon Sep 17 00:00:00 2001 From: William French Date: Wed, 25 Mar 2026 12:26:37 -0700 Subject: [PATCH 11/11] Change deck.gl dependencies to version 8.9.0 Updated dependencies for @deck.gl packages to version 8.9.0. --- samples/deckgl-points/package.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/samples/deckgl-points/package.json b/samples/deckgl-points/package.json index 3f6b21022..18c47c9c8 100644 --- a/samples/deckgl-points/package.json +++ b/samples/deckgl-points/package.json @@ -9,9 +9,9 @@ "preview": "vite preview" }, "dependencies": { - "@deck.gl/core": "^9.2.10", - "@deck.gl/google-maps": "^9.2.10", - "@deck.gl/layers": "^9.2.10", - "deck.gl": "^9.2.11" + "@deck.gl/core": "^8.9.0", + "@deck.gl/google-maps": "^8.9.0", + "@deck.gl/layers": "^8.9.0", + "deck.gl": "^8.9.0" } }